วิธีการพัฒนาซอฟต์แวร์แบบ Agile เทียบกับแบบดั้งเดิม
ปัจจุบันมีวิธีการพัฒนาซอฟต์แวร์ที่แตกต่างกันจำนวนมากในอุตสาหกรรมซอฟต์แวร์ วิธีการพัฒนาน้ำตกเป็นวิธีการพัฒนาซอฟต์แวร์ที่เก่าแก่ที่สุดวิธีหนึ่ง V-Model, RUP และวิธีการเชิงเส้นตรง การวนซ้ำ และการรวมเชิงเส้นแบบวนซ้ำอื่นๆ สองสามวิธี ซึ่งเกิดขึ้นหลังจากวิธีการแบบน้ำตก ซึ่งตั้งใจจะขจัดปัญหาหลายๆ อย่างของวิธีการแบบน้ำตก วิธีการก่อนหน้านี้ทั้งหมดเหล่านี้เรียกว่าวิธีการพัฒนาซอฟต์แวร์แบบดั้งเดิม โมเดล Agile เป็นรูปแบบการพัฒนาซอฟต์แวร์ล่าสุดที่นำมาใช้เพื่อแก้ไขข้อบกพร่องที่พบในโมเดลดั้งเดิมจุดสนใจหลักของ Agile คือการรวมการทดสอบให้เร็วที่สุดเท่าที่จะเป็นไปได้ และเผยแพร่เวอร์ชันที่ใช้งานได้ของผลิตภัณฑ์ตั้งแต่เนิ่นๆ โดยแบ่งระบบออกเป็นส่วนย่อยที่เล็กมากและสามารถจัดการได้
วิธีการพัฒนาซอฟต์แวร์แบบดั้งเดิมคืออะไร
วิธีซอฟต์แวร์ เช่น วิธี Waterfall, V-Model และ RUP เรียกว่าวิธีการพัฒนาซอฟต์แวร์แบบดั้งเดิม วิธีการน้ำตกเป็นหนึ่งในรูปแบบการพัฒนาซอฟต์แวร์ที่เก่าแก่ที่สุด ตามชื่อที่แนะนำ มันเป็นกระบวนการที่ต่อเนื่องกันซึ่งความคืบหน้าไหลผ่านหลายขั้นตอน (การวิเคราะห์ความต้องการ การออกแบบ การพัฒนา การทดสอบ และการใช้งาน) จากบนลงล่าง คล้ายกับน้ำตก V-Model ถือเป็นส่วนเสริมของโมเดลการพัฒนาซอฟต์แวร์ Waterfall V-Model ใช้ความสัมพันธ์แบบเดียวกันระหว่างเฟสที่กำหนดไว้ในโมเดล Waterfall แต่แทนที่จะลงเป็นเส้นตรง (เช่นโมเดล Waterfall) V-Model จะเลื่อนลงในแนวทแยงมุมแล้วเลื่อนกลับขึ้น (หลังขั้นตอนการเข้ารหัส) ทำให้เกิดรูปร่างของตัวอักษร VRUP (Rational Unified Process) เป็นเฟรมเวิร์กกระบวนการที่ปรับเปลี่ยนได้ (ไม่ใช่กระบวนการที่เป็นรูปธรรมเพียงกระบวนการเดียว) ที่องค์กรพัฒนาสามารถปรับแต่งได้ตามความต้องการ คล้ายกับน้ำตกเล็กน้อย โดยมีขั้นตอนตายตัว เช่น การเริ่มต้น การทำรายละเอียด การก่อสร้าง และการเปลี่ยนแปลง แต่แตกต่างจากน้ำตก RUP เป็นกระบวนการวนซ้ำ
Agile คืออะไร
Agile เป็นวิธีการพัฒนาซอฟต์แวร์ล่าสุด (หรือถูกต้องกว่านั้นคือกลุ่มของวิธีการ) ที่ยึดตามประกาศเปรียว นี้ได้รับการพัฒนาเพื่อแก้ไขข้อบกพร่องบางประการในวิธีการพัฒนาซอฟต์แวร์แบบเดิม วิธีการแบบ Agile ขึ้นอยู่กับการให้ความสำคัญกับการมีส่วนร่วมของลูกค้าในช่วงต้นของวงจรการพัฒนา ขอแนะนำให้รวมการทดสอบโดยลูกค้าตั้งแต่เนิ่นๆและบ่อยครั้งที่สุด การทดสอบเสร็จสิ้นในแต่ละจุดเมื่อมีเวอร์ชันเสถียร รากฐานของ Agile ขึ้นอยู่กับการเริ่มต้นการทดสอบตั้งแต่ต้นโครงการและต่อเนื่องไปจนสิ้นสุดโครงการการเขียนโปรแกรม Scrum และ Extreme เป็นวิธีการ Agile ที่ได้รับความนิยมสูงสุดสองรูปแบบ
คุณค่าหลักของ Agile คือ “คุณภาพคือความรับผิดชอบของทีม” ซึ่งเน้นว่าคุณภาพของซอฟต์แวร์เป็นความรับผิดชอบของทั้งทีม (ไม่ใช่แค่ทีมทดสอบ) สิ่งสำคัญอีกประการหนึ่งของ Agile คือการแยกซอฟต์แวร์ออกเป็นส่วนเล็กๆ ที่จัดการได้ และส่งมอบให้กับลูกค้าอย่างรวดเร็ว การส่งมอบผลิตภัณฑ์ที่ใช้งานได้มีความสำคัญสูงสุด จากนั้นทีมงานก็ปรับปรุงซอฟต์แวร์อย่างต่อเนื่องและส่งมอบอย่างต่อเนื่องในแต่ละขั้นตอนที่สำคัญ ซึ่งทำได้โดยการมีรอบการเผยแพร่ที่สั้นมาก (เรียกว่า sprints ใน Scrum) และรับข้อเสนอแนะสำหรับการปรับปรุงเมื่อสิ้นสุดแต่ละรอบ Contributor ที่ไม่มีปฏิสัมพันธ์กับทีมมากนัก เช่น นักพัฒนาและผู้ทดสอบในวิธีการก่อนหน้านี้ ตอนนี้ทำงานร่วมกันภายในโมเดล Agile
วิธีการพัฒนาซอฟต์แวร์แบบ Agile กับแบบดั้งเดิมแตกต่างกันอย่างไร
แม้ว่าวิธี Agile จะขึ้นอยู่กับการพัฒนาแบบวนซ้ำเนื่องจากวิธีการดั้งเดิมบางวิธี แต่วิธีการแบบ Agile และแบบดั้งเดิมมีความแตกต่างที่สำคัญวิธีการแบบเดิมใช้การวางแผนเป็นกลไกควบคุม ขณะที่โมเดล Agile ใช้ผลตอบรับจากผู้ใช้เป็นกลไกควบคุมหลัก เปรียวสามารถเรียกได้ว่าเป็นแนวทางที่ยึดผู้คนเป็นศูนย์กลางมากกว่าวิธีการแบบเดิม โมเดล Agile นำเสนอเวอร์ชันที่ใช้งานได้ของผลิตภัณฑ์ตั้งแต่เนิ่นๆ เมื่อเทียบกับวิธีการแบบเดิม เพื่อให้ลูกค้าได้รับประโยชน์บางประการตั้งแต่เนิ่นๆ รอบเวลาการทดสอบของ Agile นั้นค่อนข้างสั้นเมื่อเทียบกับวิธีการแบบเดิม เนื่องจากการทดสอบทำควบคู่ไปกับการพัฒนา รุ่นดั้งเดิมส่วนใหญ่มีความแข็งแกร่งและค่อนข้างยืดหยุ่นน้อยกว่ารุ่น Agile เนื่องจากข้อดีทั้งหมดเหล่านี้ Agile จึงเป็นที่ต้องการมากกว่าวิธีการแบบเดิมในขณะนี้