การพัฒนาซอฟต์แวร์แบบ Agile
การพัฒนาซอฟต์แวร์แบบ Agile เป็นกลุ่มของวิธีการวนซ้ำและเพิ่มขึ้นที่ให้ความสำคัญกับซอฟต์แวร์ที่ใช้งานได้จริง การทำงานร่วมกันกับลูกค้า และการตอบสนองต่อการเปลี่ยนแปลงอย่างรวดเร็ว มากกว่าการวางแผนและจัดทำเอกสารที่ครอบคลุมล่วงหน้า
Definition
การพัฒนาซอฟต์แวร์แบบ Agile เป็นแนวทางที่ความต้องการและโซลูชันพัฒนาขึ้นผ่านการวนซ้ำสั้นๆ ที่มีกรอบเวลาจำกัดของทีมข้ามสายงานที่ส่งมอบส่วนเพิ่มที่ใช้งานได้จริง และรวมเอาข้อเสนอแนะจากผู้มีส่วนได้ส่วนเสียอย่างต่อเนื่อง
Scope
หัวข้อนี้ครอบคลุมถึงคุณค่าและหลักการของ Agile Manifesto; กรอบการทำงานที่เป็นรูปธรรม เช่น Scrum, Extreme Programming (XP) และ Kanban; แนวปฏิบัติรวมถึงการวนซ้ำสั้นๆ, การตอบรับอย่างต่อเนื่อง, การพัฒนาแบบทดสอบนำ, การเขียนโปรแกรมคู่, การปรับโครงสร้างโค้ด และการเผยแพร่บ่อยครั้ง; รวมถึงบทบาท, พิธีการ และสิ่งประดิษฐ์ที่จัดโครงสร้างทีม Agile
Core questions
- คุณค่าและหลักการใดที่ทำให้วิธีการ Agile แตกต่างจากการพัฒนาที่ขับเคลื่อนด้วยแผน?
- กรอบการทำงานเช่น Scrum และ XP จัดโครงสร้างการวนซ้ำ บทบาท และข้อเสนอแนะอย่างไร?
- แนวปฏิบัติทางวิศวกรรมใดที่ทำให้การส่งมอบบ่อยครั้งและเชื่อถือได้เป็นไปได้?
- วิธีการ Agile สามารถขยายขนาดไปยังองค์กรขนาดใหญ่หรือองค์กรที่กระจายตัวได้เมื่อใดและดีเพียงใด?
Key theories
- ค่านิยมของ Agile Manifesto
- คำแถลงค่านิยมสี่ประการให้ความสำคัญกับบุคคลและการปฏิสัมพันธ์ ซอฟต์แวร์ที่ใช้งานได้จริง การทำงานร่วมกันกับลูกค้า และการตอบสนองต่อการเปลี่ยนแปลง โดยมีหลักการสนับสนุนสิบสองประการที่เน้นการส่งมอบตั้งแต่เนิ่นๆ และต่อเนื่อง และการยอมรับความต้องการที่เปลี่ยนแปลงไป
- กรอบการทำงาน Scrum
- Scrum จัดระเบียบงานออกเป็น Sprint ที่มีระยะเวลาคงที่ พร้อมบทบาทที่กำหนดไว้ (เจ้าของผลิตภัณฑ์, Scrum Master, นักพัฒนา), สิ่งประดิษฐ์ (Product Backlog และ Sprint Backlog, Increment) และกิจกรรม (การวางแผน Sprint, Daily Scrum, การทบทวน, การย้อนหลัง) เพื่อส่งมอบมูลค่าแบบเพิ่มขึ้น
- แนวปฏิบัติของ Extreme Programming
- XP ผสมผสานการวนซ้ำสั้นๆ เข้ากับแนวปฏิบัติทางวิศวกรรมที่มีระเบียบวินัย เช่น การพัฒนาแบบทดสอบนำ, การเขียนโปรแกรมคู่, การรวมระบบอย่างต่อเนื่อง, การเป็นเจ้าของร่วม และการปรับโครงสร้างโค้ด เพื่อรักษาระดับต้นทุนของการเปลี่ยนแปลงให้ต่ำ
Clinical relevance
วิธีการ Agile เป็นแนวทางที่โดดเด่นในซอฟต์แวร์เชิงพาณิชย์ในปัจจุบัน ซึ่งช่วยปรับปรุงการตอบสนองต่อตลาดที่เปลี่ยนแปลงไป และช่วยให้สามารถส่งมอบมูลค่าได้บ่อยครั้ง; ประสิทธิภาพของวิธีการเหล่านี้ขึ้นอยู่กับวินัยทางวิศวกรรม การเสริมสร้างศักยภาพของทีม และวัฒนธรรมของการให้ข้อเสนอแนะมากกว่าเพียงแค่พิธีการเท่านั้น
Evidence & guidelines
The Scrum Guide ให้คำจำกัดความที่เป็นที่ยอมรับอย่างกว้างขวางของกรอบการทำงาน Scrum และ Agile Manifesto ยังคงเป็นคำแถลงพื้นฐานของค่านิยม Agile; กรอบการทำงานสำหรับการขยายขนาด เช่น SAFe และ LeSS ขยายแนวปฏิบัติ Agile ไปยังองค์กรขนาดใหญ่
History
วิธีการแบบน้ำหนักเบา เช่น Scrum และ XP เกิดขึ้นในทศวรรษ 1990 เพื่อตอบสนองต่อกระบวนการที่เน้นเอกสารและมีน้ำหนักมาก ในปี 2001 ผู้ปฏิบัติงานสิบเจ็ดคนได้เผยแพร่ Agile Manifesto ซึ่งรวมวิธีการเหล่านี้ภายใต้ค่านิยมร่วมกัน; หลังจากนั้น Agile ก็กลายเป็นกระแสหลักและก่อให้เกิดกรอบการทำงานสำหรับการขยายขนาดในทศวรรษ 2010
Debates
- การขยายขนาด Agile ไปยังองค์กรขนาดใหญ่
- การที่หลักการ Agile ยังคงให้ประโยชน์เมื่อขยายขนาดผ่านกรอบการทำงานเช่น SAFe นั้นเป็นที่ถกเถียงกัน; นักวิจารณ์โต้แย้งว่าการขยายขนาดแบบน้ำหนักมากนำไปสู่ระบบราชการอีกครั้ง ในขณะที่ผู้สนับสนุนมองว่าการประสานงานที่มีโครงสร้างเป็นสิ่งจำเป็นสำหรับองค์กรขนาดใหญ่
Key figures
- Kent Beck
- Ken Schwaber
- Jeff Sutherland
- Martin Fowler
- Alistair Cockburn
Related topics
Seminal works
- beck2001
- beck2004
- schwaber2020
Frequently asked questions
- Agile ตรงข้ามกับวิศวกรรมที่มีระเบียบวินัยหรือไม่?
- ไม่ การทำงานแบบ Agile ที่มีประสิทธิภาพขึ้นอยู่กับวินัยทางวิศวกรรมอย่างมาก เช่น การทดสอบอัตโนมัติ การรวมระบบอย่างต่อเนื่อง และการปรับโครงสร้างโค้ด; การเน้นของ Agile คือการปรับตัวเข้ากับการเปลี่ยนแปลงอย่างรวดเร็ว ไม่ใช่การละทิ้งความเข้มงวด
- Scrum กับ Agile แตกต่างกันอย่างไร?
- Agile คือชุดของค่านิยมและหลักการที่กว้างขวาง; Scrum เป็นกรอบการทำงานเฉพาะหนึ่งที่นำค่านิยมและหลักการเหล่านั้นไปใช้ด้วยบทบาท กิจกรรม และสิ่งประดิษฐ์ที่เฉพาะเจาะจง XP และ Kanban เป็นกรอบการทำงาน Agile อื่นๆ ที่มีจุดเน้นที่แตกต่างกัน