Extreme Programming vs SCRUM | XP กับ SCRUM
มีวิธีการพัฒนาซอฟต์แวร์ที่แตกต่างกันจำนวนมากที่ใช้ในอุตสาหกรรมซอฟต์แวร์ในช่วงหลายปีที่ผ่านมา เช่น วิธีการพัฒนา Waterfall, V-Model, RUP และวิธีอื่นๆ อีกสองสามวิธีเชิงเส้น การวนซ้ำ และการวนซ้ำเชิงเส้นแบบผสมผสาน โมเดล Agile (หรืออย่างถูกต้องกว่านั้นคือกลุ่มของวิธีการ) คือรูปแบบการพัฒนาซอฟต์แวร์ล่าสุดที่นำเสนอโดยแถลงการณ์ Agile เพื่อแก้ไขข้อบกพร่องที่พบในวิธีการพัฒนาซอฟต์แวร์แบบดั้งเดิมเหล่านั้น
วิธี Agile ขึ้นอยู่กับการพัฒนาซ้ำๆ และใช้ข้อเสนอแนะจากผู้ใช้เป็นกลไกควบคุมหลักเปรียวสามารถเรียกได้ว่าเป็นแนวทางที่ยึดผู้คนเป็นศูนย์กลางมากกว่าวิธีการแบบเดิม โมเดล Agile นำเสนอเวอร์ชันที่ใช้งานได้ของผลิตภัณฑ์ตั้งแต่เนิ่นๆ โดยแบ่งระบบออกเป็นส่วนย่อยที่เล็กมากและสามารถจัดการได้ เพื่อให้ลูกค้าได้รับประโยชน์บางประการตั้งแต่เนิ่นๆ รอบเวลาการทดสอบของ Agile นั้นค่อนข้างสั้นเมื่อเทียบกับวิธีการแบบเดิม เนื่องจากการทดสอบทำควบคู่ไปกับการพัฒนา เนื่องจากข้อดีทั้งหมดเหล่านี้ วิธีการแบบ Agile จึงเป็นที่ต้องการมากกว่าวิธีการแบบเดิมในขณะนี้ การเขียนโปรแกรม Scrum และ Extreme เป็นวิธีการ Agile ที่ได้รับความนิยมสูงสุดสองรูปแบบ
SCRUM คืออะไร
ดังที่กล่าวไว้ข้างต้น SCRUM เป็นกระบวนการจัดการโครงการที่เพิ่มขึ้นเรื่อยๆ และทำซ้ำ ซึ่งเป็นของตระกูล Agile method SCRUM อิงจากการให้ความสำคัญกับการมีส่วนร่วมของลูกค้าในช่วงต้นของวงจรการพัฒนา ขอแนะนำให้รวมการทดสอบโดยลูกค้าตั้งแต่เนิ่นๆและบ่อยครั้งที่สุด การทดสอบเสร็จสิ้นในแต่ละจุดเมื่อมีเวอร์ชันเสถียรรากฐานของ SCRUM นั้นขึ้นอยู่กับการเริ่มต้นการทดสอบตั้งแต่ต้นโครงการและต่อเนื่องไปจนสิ้นสุดโครงการ
คุณค่าหลักของ SCRUM คือ “คุณภาพคือความรับผิดชอบของทีม” ซึ่งเน้นว่าคุณภาพของซอฟต์แวร์เป็นความรับผิดชอบของทั้งทีม (ไม่ใช่แค่ทีมทดสอบ) สิ่งสำคัญอีกประการหนึ่งของ SCRUM คือการแยกซอฟต์แวร์ออกเป็นส่วนเล็กๆ ที่จัดการได้ และส่งมอบให้กับลูกค้าอย่างรวดเร็ว การส่งมอบผลิตภัณฑ์ที่ใช้งานได้มีความสำคัญสูงสุด จากนั้นทีมงานก็ปรับปรุงซอฟต์แวร์อย่างต่อเนื่องและส่งมอบอย่างต่อเนื่องในแต่ละขั้นตอนที่สำคัญ ซึ่งทำได้โดยการมีรอบการปล่อยที่สั้นมาก (เรียกว่าการวิ่งระยะสั้น) และรับข้อเสนอแนะสำหรับการปรับปรุงเมื่อสิ้นสุดแต่ละรอบ
SCRUM กำหนดบทบาทสำคัญหลายประการสำหรับการทำงานที่ราบรื่นของทีมพัฒนา พวกเขาคือเจ้าของผลิตภัณฑ์ (ซึ่งเป็นตัวแทนของลูกค้าและดูแลงานในมือของสินค้า) ต้นแบบ Scrum (ซึ่งทำหน้าที่เป็นผู้จัดและผู้ประสานงานของทีมโดยจัดการประชุม scrum ดูแลรักษางานในมือของ Sprint และเบิร์นดาวน์แผนภูมิ) และสมาชิกในทีมคนอื่นๆทีมอาจประกอบด้วยบทบาทดั้งเดิม แต่ส่วนใหญ่เป็นทีมที่จัดการตนเอง สิ่งประดิษฐ์ Scrum หลักคือ Product backlog/release backlog (รายการที่ต้องการ), งานค้างของ Sprint/งานค้างที่มีข้อบกพร่อง (งานในทุก ๆ การวนซ้ำ), Burn down chart (งานที่เหลืออยู่เทียบกับวันที่) พิธี SCRUM หลักคือการประชุม Backlog ของผลิตภัณฑ์ การประชุม Sprint และการประชุม Retrospect
Extreme Programming คืออะไร
Extreme Programming (ย่อมาจาก XP) เป็นวิธีการพัฒนาซอฟต์แวร์ที่เป็นของรุ่น Agile การเขียนโปรแกรมขั้นสุดมีขั้นตอนต่อเนื่องกันเพียงเล็กน้อย (เมื่อเทียบกับวิธีการแบบเดิม) บัตรผ่านครั้งแรกซึ่งใช้เวลาเพียงหนึ่งวันหรือหนึ่งสัปดาห์นั้นไม่สมบูรณ์โดยเจตนา เพื่อให้เป้าหมายที่เป็นรูปธรรมสำหรับการพัฒนาซอฟต์แวร์ การทดสอบอัตโนมัติจะถูกเขียนขึ้นตั้งแต่เริ่มต้น จากนั้นนักพัฒนาทำการเข้ารหัส เน้นการทำโปรแกรมเป็นคู่ เมื่อการทดสอบทั้งหมดผ่าน การเข้ารหัสจะถือว่าสมบูรณ์ ขั้นต่อไปคือการออกแบบและสถาปัตยกรรม ซึ่งเกี่ยวข้องกับการปรับโครงสร้างโค้ดใหม่โดยโปรแกรมเมอร์ชุดเดียวกันเมื่อสิ้นสุดระยะนี้ ผลิตภัณฑ์ที่ไม่สมบูรณ์ (แต่ใช้งานได้) จะถูกนำเสนอต่อผู้มีส่วนได้ส่วนเสีย หลังจากนี้ ขั้นตอนต่อไป (ซึ่งเน้นชุดคุณสมบัติที่สำคัญที่สุดชุดต่อไป) ก็เริ่มต้นขึ้น
Extreme Programming กับ SCRUM ต่างกันอย่างไร
Extreme Programming และ SCRUM เป็นวิธีการที่คล้ายคลึงกันและสอดคล้องกันมาก อย่างไรก็ตาม ทั้งสองวิธีนี้มีความแตกต่างเล็กน้อยแต่สำคัญ การวิ่ง SCRUM จะอยู่ได้นาน 2-4 สัปดาห์ ในขณะที่การวนซ้ำ XP ทั่วไปจะสั้นกว่า (1-2 สัปดาห์ล่าสุด) โดยปกติ ทีม SCRUM จะไม่อนุญาตให้ทำการเปลี่ยนแปลงในการวิ่ง แต่ทีม XP มีความยืดหยุ่นมากกว่าเล็กน้อยในการเปลี่ยนแปลงภายในการวนซ้ำ ตัวอย่างเช่น หลังจากการวางแผนการวิ่งแล้ว ชุดของรายการของการวิ่งนั้นจะไม่เปลี่ยนแปลง แต่คุณลักษณะที่ยังไม่ได้เริ่มทำงานสามารถสลับกับคุณลักษณะอื่นๆ ใน XP ได้ทุกเมื่อ ความแตกต่างอีกประการระหว่าง XP และ SCRUM ก็คือ ลำดับของคุณลักษณะที่พัฒนาขึ้นใน XP นั้นมีความสำคัญอย่างยิ่งโดยลูกค้า ในขณะที่ทีม SCRUM จะตัดสินใจลำดับของรายการ (หลังจากที่เจ้าของผลิตภัณฑ์ของ SCRUM จัดลำดับความสำคัญของงานในมือ)
ต่างจาก XP ตรงที่ SCRUM ไม่ได้วางแนวปฏิบัติทางวิศวกรรมใดๆ ตัวอย่างเช่น XP ถูกขับเคลื่อนโดยแนวทางปฏิบัติ เช่น การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD) การเขียนโปรแกรมคู่ การปรับโครงสร้างใหม่ ฯลฯ อย่างไรก็ตาม บางคนเชื่อว่าการบังคับชุดปฏิบัติในทีมที่จัดระเบียบตนเองอาจส่งผลกระทบในทางลบ และสามารถพิจารณาได้ ข้อบกพร่องของ XP ข้อบกพร่องอีกประการหนึ่งของการเขียนโปรแกรม Extreme คือทีมที่ไม่มีประสบการณ์อาจมีแนวโน้มที่จะสร้างโครงสร้างใหม่โดยไม่มีการทดสอบอัตโนมัติหรือ TDD (หรือเพียงแค่การแฮ็ก) ดังนั้นบางคนแนะนำว่า SCRUM นั้นดีกว่าสำหรับการเพ่งมอง (เนื่องจากมีการปรับปรุงครั้งใหญ่ผ่านการวนซ้ำแบบเน้นเวลา) และ XP เหมาะสำหรับทีมที่เติบโตเต็มที่เล็กน้อยที่ค้นพบคุณค่าของแนวทางปฏิบัติที่กล่าวถึงข้างต้น (แทนที่จะใช้เพราะพวกเขาถูกถาม ให้ทำอย่างนั้น)