การต่อสู้ - ภาพรวม
Agile กลายเป็นหนึ่งในคำที่นิยมมากในอุตสาหกรรมการพัฒนาซอฟต์แวร์ แต่การพัฒนาแบบว่องไวคืออะไร? พูดง่ายๆก็คือการพัฒนาแบบว่องไวเป็นวิธีการดำเนินการของทีมพัฒนาซอฟต์แวร์และโครงการต่างๆ
เพื่อให้เข้าใจว่ามีอะไรใหม่ให้เราสรุปวิธีการแบบเดิม ๆ ในการพัฒนาซอฟต์แวร์แบบเดิมข้อกำหนดของผลิตภัณฑ์จะได้รับการสรุปก่อนดำเนินการพัฒนา
น้ำตกจำลอง
รูปแบบการพัฒนาซอฟต์แวร์ที่ใช้กันมากที่สุดที่มีคุณลักษณะนี้คือ Waterfall Model ตามที่แสดงในแผนภาพต่อไปนี้ อย่างไรก็ตามในกรณีส่วนใหญ่จะมีการเพิ่มฟังก์ชันการทำงานใหม่และข้อกำหนดก่อนหน้านี้อาจมีการเปลี่ยนแปลง แบบจำลองน้ำตกไม่มีโครงสร้างเพื่อรองรับการเปลี่ยนแปลงอย่างต่อเนื่องในข้อกำหนดดังกล่าว นอกจากนี้ผู้ใช้จะไม่มีความชัดเจนในการทำงานของผลิตภัณฑ์จนกว่าผลิตภัณฑ์จะพร้อมใช้งานอย่างครบถ้วน
แบบจำลองส่วนเพิ่มซ้ำ
ในแบบจำลองส่วนเพิ่มแบบวนซ้ำการพัฒนาเริ่มต้นด้วยข้อกำหนดขั้นสุดท้ายและจัดลำดับความสำคัญในจำนวน จำกัด การส่งมอบเป็นส่วนเพิ่มการทำงานของผลิตภัณฑ์ ชุดของกิจกรรมตั้งแต่ความต้องการไปจนถึงการพัฒนาโค้ดเรียกว่าการทำซ้ำ ขึ้นอยู่กับฟังก์ชันการทำงานของส่วนเพิ่มและข้อกำหนดใหม่ที่แก้ไขและรอดำเนินการใด ๆ หรือทั้งหมดข้อกำหนดล็อตถัดไปจะถูกกำหนดให้กับการทำซ้ำในภายหลัง ผลลัพธ์ของการทำซ้ำในภายหลังคือการเพิ่มการทำงานที่เพิ่มขึ้นของผลิตภัณฑ์ สิ่งนี้จะทำซ้ำจนกว่าผลิตภัณฑ์จะบรรลุฟังก์ชันที่ต้องการ
โดยปกติผู้ใช้จะไม่ได้มีส่วนร่วมในงานพัฒนาและอาจทำให้เกิดช่องว่างในการสื่อสารทำให้ฟังก์ชันการทำงานไม่ถูกต้อง การมีส่วนร่วมเป็นสิ่งที่ดีสำหรับทีมพัฒนา แต่ต้องการเวลาของทีมและอาจเพิ่มความล่าช้า นอกจากนี้การเปลี่ยนแปลงข้อกำหนดที่ไม่เป็นทางการใด ๆ ในระหว่างการทำซ้ำอาจทำให้เกิดความสับสนและอาจสร้างขอบเขตของครีป ด้วยหลักฐานนี้การพัฒนา Agile จึงเกิดขึ้น
การพัฒนาที่คล่องตัว
การพัฒนาแบบว่องไวขึ้นอยู่กับการพัฒนาแบบเพิ่มขึ้นซ้ำ ๆ ซึ่งข้อกำหนดและแนวทางแก้ไขพัฒนาขึ้นโดยการทำงานร่วมกันเป็นทีม แนะนำวิธีการทำซ้ำแบบแบ่งเวลาและกระตุ้นการตอบสนองต่อการเปลี่ยนแปลงอย่างรวดเร็วและยืดหยุ่น เป็นกรอบทางทฤษฎีและไม่ได้ระบุถึงแนวปฏิบัติใด ๆ ที่ทีมพัฒนาควรปฏิบัติตาม Scrum เป็นกรอบกระบวนการ Agile ที่กำหนดแนวทางปฏิบัติที่จำเป็นต้องปฏิบัติตาม
การนำวิธี Agile ไปใช้ในช่วงแรก ได้แก่Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997) และDynamic Systems Development Method (DSDM) (1995) สิ่งเหล่านี้เรียกรวมกันว่าagile methodologiesหลังจากที่ Agile Manifesto ตีพิมพ์ในปี 2544
ประกาศ Agile
Agile Manifesto ได้รับการเผยแพร่โดยทีมนักพัฒนาซอฟต์แวร์ในปี 2544 โดยเน้นถึงความสำคัญที่ต้องให้กับทีมพัฒนารองรับความต้องการที่เปลี่ยนแปลงการมีส่วนร่วมของลูกค้า
Agile Manifesto มีดังนี้:
“ เรากำลังเปิดเผยวิธีที่ดีกว่าในการพัฒนาซอฟต์แวร์โดยการทำและช่วยเหลือผู้อื่น จากผลงานชิ้นนี้เราได้ให้ความสำคัญกับ:
- บุคคลและปฏิสัมพันธ์กับกระบวนการและเครื่องมือ
- ซอฟต์แวร์ที่ใช้งานได้กับเอกสารที่ครอบคลุม
- การทำงานร่วมกันของลูกค้าในการเจรจาสัญญา
- การตอบสนองต่อการเปลี่ยนแปลงตามแผน
นั่นคือในขณะที่สิ่งของทางด้านขวามีค่า แต่เราให้ความสำคัญกับรายการทางด้านซ้ายมากขึ้น "
… Manifesto for Agile Software Development, Authors: Beck, Kent, et al. (พ.ศ. 2544)
คำจำกัดความของรายการ Agile Manifesto
รายการประกาศทางด้านซ้ายสามารถอธิบายได้ดังนี้:
รายการ Manifesto | คำอธิบาย |
---|---|
บุคคลและปฏิสัมพันธ์ | ต้องให้ความสำคัญกับ:
|
ซอฟต์แวร์การทำงาน | การส่งมอบซอฟต์แวร์ที่ใช้งานได้ในช่วงเวลาสั้น ๆ ช่วยให้ลูกค้าได้รับความไว้วางใจและความเชื่อมั่นในทีม |
การทำงานร่วมกันของลูกค้า | การมีส่วนร่วมของลูกค้ากับทีมพัฒนาอย่างต่อเนื่องช่วยให้มั่นใจได้ว่ามีการสื่อสารถึงการปรับเปลี่ยนที่จำเป็น |
การตอบสนองต่อการเปลี่ยนแปลง | มุ่งเน้นไปที่การตอบสนองอย่างรวดเร็วต่อการเปลี่ยนแปลงที่เสนอซึ่งทำได้ด้วยการทำซ้ำในระยะเวลาสั้น ๆ |
องค์ประกอบสำคัญของ Agile Manifesto คือเราต้องไว้วางใจผู้คนและความสามารถในการทำงานร่วมกัน ด้วยเหตุนี้วิธีการแบบ Agile ที่เฉพาะเจาะจงจึงพัฒนาขึ้นเพื่อแตะความสามารถของสมาชิกในทีมโดยเน้นการทำงานเป็นทีมและการทำงานร่วมกันตลอดวงจรชีวิตของโครงการ
หลักการสำคัญของ Agile
Agile Manifesto ขึ้นอยู่กับหลักการต่อไปนี้:
หลักการ | คำอธิบาย |
---|---|
ความพึงพอใจและการจัดส่ง | ความพึงพอใจของลูกค้าผ่านซอฟต์แวร์ที่ใช้งานได้ตั้งแต่เนิ่นๆและต่อเนื่อง |
ต้อนรับการเปลี่ยนแปลง | ยินดีต้อนรับความต้องการที่เปลี่ยนแปลงแม้จะอยู่ในขั้นตอนต่อไปของการพัฒนา |
ส่งบ่อย | ส่งมอบซอฟต์แวร์ที่ใช้งานได้บ่อยครั้ง (รายสัปดาห์แทนที่จะเป็นรายเดือน) |
การสื่อสารคือกุญแจสำคัญ | ตรวจสอบการเชื่อมโยงอย่างใกล้ชิดของนักพัฒนากับนักธุรกิจทุกวัน |
สิ่งแวดล้อมและความน่าเชื่อถือ | สร้างโครงการเกี่ยวกับบุคคลที่มีแรงบันดาลใจ ให้การสนับสนุนที่จำเป็นและไว้วางใจพวกเขา |
การสื่อสารแบบตัวต่อตัว | ส่งเสริมการสนทนาแบบเห็นหน้ากันเพื่อให้แน่ใจว่าการสื่อสารมีประสิทธิภาพและประสิทธิผล |
ซอฟต์แวร์เป็นตัววัดความก้าวหน้า | ซอฟต์แวร์ที่ใช้งานได้คือตัวชี้วัดความก้าวหน้าขั้นต้น |
การพัฒนาที่ยั่งยืน | ส่งเสริมการพัฒนาที่ยั่งยืนด้วยความสามารถในการรักษาความก้าวตลอดการพัฒนา |
ความสนใจในรายละเอียด | ใส่ใจอย่างต่อเนื่องในความเป็นเลิศทางเทคนิคและการออกแบบที่ดี |
พลังน้อย | ความเรียบง่ายเป็นสิ่งสำคัญ |
การจัดทีมด้วยตนเอง | ความเอาใจใส่อย่างสม่ำเสมอของทีมในการมีประสิทธิผลในสถานการณ์ที่เปลี่ยนแปลงไป |
วิธีการแบบ Agile
ระเบียบวิธีการพัฒนาระบบไดนามิก (DSDM)
เป็นกรอบการทำงานที่คล่องตัวสำหรับโครงการซอฟต์แวร์ มันถูกใช้เพื่อปรับแนวทางแบบดั้งเดิม DSDM เวอร์ชันล่าสุดเรียกว่า DSDM Atern ชื่อ Atern ย่อมาจาก Arctic Tern - นกทะเลที่สามารถเดินทางในระยะทางไกล ๆ ซึ่งแสดงถึงคุณสมบัติหลายประการของวิธีการซึ่งเป็นวิธีการทำงานตามธรรมชาติเช่นการจัดลำดับความสำคัญและการทำงานร่วมกัน
การต่อสู้
เป็นเฟรมเวิร์กแบบ Agile ที่ได้รับความนิยมมากที่สุดซึ่งมุ่งเน้นโดยเฉพาะอย่างยิ่งในการจัดการงานภายในสภาพแวดล้อมการพัฒนาแบบทีม Scrum ใช้รูปแบบการพัฒนาแบบวนซ้ำและแบบเพิ่มหน่วยโดยมีระยะเวลาการทำซ้ำสั้นลง การต่อสู้นั้นค่อนข้างง่ายในการนำไปใช้และมุ่งเน้นไปที่การส่งมอบที่รวดเร็วและบ่อยครั้ง
การเขียนโปรแกรมขั้นสูง (XP)
เป็นการพัฒนาซอฟต์แวร์ประเภทหนึ่งที่มีความคล่องตัว สนับสนุนการเผยแพร่บ่อยครั้งในรอบการพัฒนาสั้น ๆ ซึ่งมีวัตถุประสงค์เพื่อปรับปรุงประสิทธิภาพการผลิตและแนะนำจุดตรวจที่สามารถนำข้อกำหนดของลูกค้าใหม่มาใช้ได้ วิธีการนี้ใช้ชื่อจากแนวคิดที่ว่าองค์ประกอบที่เป็นประโยชน์ของแนวทางปฏิบัติทางวิศวกรรมซอฟต์แวร์แบบดั้งเดิมนั้นถูกนำไปใช้ในระดับที่รุนแรง (Extreme Programming เป็นระเบียบวินัยในการพัฒนาซอฟต์แวร์ที่จัดระเบียบคนให้ผลิตซอฟต์แวร์ที่มีคุณภาพสูงขึ้นอย่างมีประสิทธิผลมากขึ้น) XP จัดการกับขั้นตอนการวิเคราะห์การพัฒนาและการทดสอบด้วยวิธีการใหม่ ๆ ที่สร้างความแตกต่างอย่างมากให้กับคุณภาพของผลิตภัณฑ์ขั้นสุดท้าย
การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD)
เป็นกระบวนการพัฒนาซอฟต์แวร์ที่อาศัยการทำซ้ำของวงจรการพัฒนาที่สั้นมากขั้นแรกให้ผู้พัฒนาเขียนกรณีทดสอบอัตโนมัติที่กำหนดการปรับปรุงที่ต้องการหรือฟังก์ชันใหม่จากนั้นจะสร้างโค้ดจำนวนน้อยที่สุดที่จะผ่านการทดสอบนั้นและ ในที่สุดก็นำรหัสใหม่ไปสู่มาตรฐานที่ยอมรับได้
ยัน
เป็นแนวทางปฏิบัติในการผลิตที่พิจารณาการใช้จ่ายทรัพยากรเพื่อเป้าหมายใด ๆ นอกเหนือจากการสร้างมูลค่าให้กับลูกค้าปลายทางที่สิ้นเปลืองและเป็นเป้าหมายในการกำจัด การทำงานจากมุมมองของลูกค้าที่บริโภคผลิตภัณฑ์หรือบริการคำว่ามูลค่าหมายถึงการกระทำหรือกระบวนการใด ๆ ที่ลูกค้ายินดีจ่าย Lean มุ่งเน้นไปที่การรักษาคุณค่าด้วยการทำงานน้อยลง
Kanban
เป็นระบบปรับปรุงและรักษาระดับการผลิตให้สูงขึ้น Kanban เป็นวิธีการหนึ่งที่ Just-In-Time (JIT) ซึ่งเป็นกลยุทธ์ที่องค์กรใช้เพื่อควบคุมค่าใช้จ่ายสินค้าคงคลัง Kanban กลายเป็นเครื่องมือที่มีประสิทธิภาพในการสนับสนุนระบบการผลิตโดยรวมและพิสูจน์แล้วว่าเป็นวิธีที่ยอดเยี่ยมในการส่งเสริมการปรับปรุง
สรุป
ในช่วง 10 ปีที่ผ่านมามีเรื่องราวความสำเร็จจำนวนมากขึ้นเรื่อย ๆ โดย บริษัท ต่างๆได้ปรับปรุงความสำเร็จและประสิทธิภาพของทีมพัฒนาไอทีและโครงการต่างๆด้วยแนวทางปฏิบัติที่คล่องตัว สิ่งนี้ทำให้เกิดความคล่องตัวในการนำไปใช้อย่างกว้างขวางในหลากหลายอุตสาหกรรมรวมถึงสื่อและเทคโนโลยีองค์กรขนาดใหญ่และแม้แต่รัฐบาล
Agile Framework ช่วยให้ทีมได้รับประโยชน์จาก:
- เวลาในการส่งมอบ / ตลาดเร็วขึ้น
- ลดความไม่แน่นอนและความเสี่ยง
- เพิ่มผลตอบแทนจากการลงทุน (ROI) โดยมุ่งเน้นที่มูลค่าของลูกค้า
ท่ามกลางวิธีการที่คล่องตัวที่แตกต่างกันนี้ Scrum ได้พิสูจน์แล้วว่าประสบความสำเร็จอย่างมากทั่วโลกในช่วง 20 ปีที่ผ่านมา