คู่มือ All-in-One ของคุณในการพัฒนาซอฟต์แวร์ Agile
เผยแพร่แล้ว: 2022-09-29วิธีการพัฒนาซอฟต์แวร์ที่คล่องตัวเป็นแนวทางที่ยืดหยุ่นในกระบวนการพัฒนาซอฟต์แวร์ บริษัทพัฒนาซอฟต์แวร์ที่คล่องตัวใช้วิธีการโต้ตอบในการส่งมอบผลิตภัณฑ์ซอฟต์แวร์เป็นชิ้นๆ (การเปิดตัว MVP อย่างต่อเนื่อง) โดยผสมผสานความคิดเห็นของผู้มีส่วนได้ส่วนเสีย
เป็นวิธีการที่ยืดหยุ่นซึ่งช่วยให้ทีมเทคโนโลยีสามารถให้บริการพัฒนาซอฟต์แวร์คุณภาพสูงได้รวดเร็วขึ้นและมีความยุ่งยากน้อยที่สุด
ปรัชญาการพัฒนาซอฟต์แวร์ Agile แรกได้รับความนิยมในหมู่ทีมขนาดเล็กและควบคุมตนเอง ในที่สุด การพัฒนาซอฟต์แวร์แบบ Agile ก็เข้ามาแทนที่อุตสาหกรรมการพัฒนาซอฟต์แวร์เนื่องจากความง่าย ประสิทธิผล และประสิทธิผล
ใน Agile ทีมพัฒนาซอฟต์แวร์นำเสนอโครงการผ่านการทำซ้ำ ไม่เหมือนกับวิธีการของ Waterfall ซึ่งเป็นไปตามเส้นทางที่เฉพาะเจาะจงและมีการเบี่ยงเบนน้อยที่สุดจากพวกเขา Agile โดดเด่นด้วยความเร็วและความสามารถในการปรับตัว สมาชิกในทีมและผู้มีส่วนได้ส่วนเสียมีอิสระที่จะทำการเปลี่ยนแปลงในระหว่างการทำซ้ำ
ในยุคเศรษฐกิจที่เติบโตอย่างรวดเร็วและแข่งขันได้ การวนซ้ำแบบ Agile ที่ยืดหยุ่นและปรับได้นั้นสมบูรณ์แบบ
บทความนี้เป็นเวอร์ชันบีบอัดของคู่มือ CodeRiders ในการพัฒนาซอฟต์แวร์ Agile ที่ CodeRiders เราได้สร้างคู่มือปฏิบัติที่สมบูรณ์เกี่ยวกับการพัฒนาซอฟต์แวร์ Agile ในท้ายที่สุด คุณจะพบกับ 6 คำถามที่เปิดเผยมากที่สุดที่จะถามบริษัทพัฒนาซอฟต์แวร์ Agile คำตอบจะระบุว่าผู้จำหน่ายซอฟต์แวร์ในอนาคตของคุณเหมาะสมกับโครงการของคุณหรือไม่ เมื่อคำแนะนำพร้อมใช้งาน เราจะแทรกลิงก์ที่สามารถดาวน์โหลดได้ด้านล่าง
อ่านบทความนี้ต่อหากคุณต้องการคำแนะนำสั้นๆ
หลักการพัฒนาซอฟต์แวร์แบบ Agile รูปแบบและแนวทางปฏิบัติ
4 คุณค่าที่คล่องตัว
ในปี 2544 กลุ่มผู้จัดการซอฟต์แวร์และผู้มีส่วนได้ส่วนเสียรวมตัวกันเพื่อคิดหาวิธีที่จะทำให้ SDLC ดีขึ้น ในการรวบรวมครั้งนี้ พวกเขาได้สร้างคุณค่า 4 ประการและหลักการ 12 ประการของ Agile
ต่อไปนี้คือค่านิยม 4 ประการของ Agile ที่โด่งดังตลอดกาล:
1. บุคคลและปฏิสัมพันธ์ระหว่างกระบวนการและเครื่องมือ:
ค่านี้เน้นถึงความสัมพันธ์ของสมาชิกในทีมเหนือกระบวนการหรือเครื่องมือที่ใช้โดยผู้จำหน่ายซอฟต์แวร์และผู้มีส่วนได้ส่วนเสีย ตัวอย่างเช่น เรามีนักพัฒนาซอฟต์แวร์ 2 คนในทีม และพวกเขาจำเป็นต้องโต้ตอบหรือแบ่งปันข้อมูลเพื่อให้สมบูรณ์และส่งมอบโซลูชันซอฟต์แวร์เฉพาะ ใน Agile เราไม่สนใจว่าเทคโนโลยี เครื่องมือ หรือวิธีการที่นักพัฒนาซอฟต์แวร์ใช้สำหรับการโต้ตอบที่ประสบความสำเร็จ สิ่งที่เราให้ความสำคัญคือวิธีง่ายๆ ในการส่งข้อมูลจากสมาชิกในทีมคนหนึ่งไปยังอีกคนหนึ่ง
อย่างที่คุณอาจสังเกตเห็นแล้ว ค่า Agile ทั้ง 4 ค่านิยมข้อดีอย่างหนึ่งมากกว่าอีกค่าหนึ่ง บางครั้งสิ่งเหล่านี้อาจทำให้เรานึกถึงการเปรียบเทียบ Agile กับ Waterfall
2. ซอฟต์แวร์ทำงานบนเอกสารประกอบที่ครอบคลุม:
ในวงจรชีวิตการเอาท์ซอร์สซอฟต์แวร์แบบต่อเนื่อง เช่น Waterfall เราศึกษาเอกสารจำนวนมากก่อนที่จะเริ่มต้นการเป็นหุ้นส่วนการเอาท์ซอร์สซอฟต์แวร์ เอกสารเหล่านี้บางส่วนรวมถึง SRS หรือเอกสารข้อกำหนดของผู้ใช้ ไดอะแกรมลำดับ ไดอะแกรม UML เป็นต้น ใน Agile สิ่งที่สำคัญที่สุดคือซอฟต์แวร์ที่ใช้งานได้แทนที่จะเป็นเอกสารประกอบที่ครอบคลุม
ตัวอย่างเช่น ใน Agile คุณไม่จำเป็นต้องจัดทำเอกสารข้อกำหนดฟังก์ชันการเข้าสู่ระบบทั้งหมดก่อนที่จะเริ่มกระบวนการพัฒนาจริง บริษัทพัฒนาซอฟต์แวร์ที่คล่องตัวจะให้ความสำคัญกับการมีฟังก์ชันการเข้าสู่ระบบที่ใช้งานได้และปราศจากข้อผิดพลาดภายในซอฟต์แวร์ที่กำหนดเอง แน่นอนว่านี่ไม่ได้หมายความว่าเราจะไม่มีเอกสารประเภทใดเลย แนวคิดของแนวทางนี้คือการจัดลำดับความสำคัญของการทำงานจริงมากกว่าเอกสารประกอบ
เพื่อช่วยให้ลูกค้าของเราตรวจสอบตัวอย่างเอกสาร SOW ที่ CodeRiders เราได้จัดทำคำแนะนำง่ายๆ ในการเขียนเอกสาร SOW ที่ตรงไปตรงมาพร้อมตัวอย่างจริง คุณสามารถดาวน์โหลดคำแนะนำในการเขียนเอกสาร SOW พร้อมตัวอย่างจริงได้ทันที
3. ความร่วมมือกับลูกค้าในการเจรจาสัญญา:
ในรูปแบบการมีส่วนร่วมในการพัฒนาซอฟต์แวร์ราคาคงที่ (กระบวนการพัฒนาซอฟต์แวร์ตามลำดับ) ทั้งสองฝ่ายได้ลงนามในสัญญาพร้อมเอกสารทางเทคนิคที่ชัดเจนก่อนที่จะเริ่มการเป็นหุ้นส่วนเอาท์ซอร์สซอฟต์แวร์ หมายความว่าหากผู้มีส่วนได้ส่วนเสียไม่สามารถเปลี่ยนแปลงได้หลังจากเริ่มกระบวนการเอาท์ซอร์สซอฟต์แวร์แล้ว ใน Agile ลูกค้าสามารถเข้าไปที่ตรงกลางของโปรเจ็กต์และขอปรับเปลี่ยนบางอย่างได้ บริษัทพัฒนาซอฟต์แวร์ Agile จะยอมรับคำขอและสร้างความร่วมมือบางอย่างกับผู้มีส่วนได้ส่วนเสีย ไม่ได้หมายความว่าทีมพัฒนาซอฟต์แวร์จะสร้างทุกอย่างใหม่ตั้งแต่ต้น แต่จะร่วมมือกับผู้มีส่วนได้ส่วนเสียเพื่อสร้างผลิตภัณฑ์ที่มีคุณภาพสูงสุดเท่าที่จะเป็นไปได้ซึ่งสอดคล้องกับความต้องการของลูกค้า
4. ตอบสนองต่อการเปลี่ยนแปลงโดยทำตามแผน:
ในโครงการเอาท์ซอร์สซอฟต์แวร์ใดๆ เรามีแผน ซึ่งมีความสำคัญเนื่องจากเป็นรากฐานที่สำคัญของโครงการ ในรูปแบบการพัฒนาซอฟต์แวร์ตามลำดับ เช่น Waterfall นักพัฒนาซอฟต์แวร์และสมาชิกในทีมเทคโนโลยีอื่นๆ จะถูกควบคุมโดยทีมผู้บริหาร "ให้ยึดตามแผน" แต่ใน Agile กลับตรงกันข้าม แผนมีความสำคัญอย่างยิ่งต่อการสร้างมุมมองของซอฟต์แวร์ที่กำหนดเองในอนาคต อย่างไรก็ตาม หากสถานการณ์เปลี่ยนแปลงไประหว่าง SDLC และการเปลี่ยนแปลงแผนจะเป็นประโยชน์มากกว่า ทีม Agile จะตอบสนองต่อการเปลี่ยนแปลง
ตัวอย่างเช่น ทีมผู้บริหารเลือกหนึ่งในเครื่องมือยอดนิยมที่ใช้ในการพัฒนาซอฟต์แวร์ Agile เช่น Jira, Trello และ Asana แต่หลังจากนั้นไม่นานพวกเขาก็รู้ว่าเครื่องมือนี้ไม่ได้ผลอย่างที่คิด เนื่องจากวิธีการพัฒนาซอฟต์แวร์แบบ Agile ให้ความสำคัญกับ SDLC ที่โปร่งใส คุณภาพของซอฟต์แวร์ และการสื่อสารที่ยืดหยุ่น ทีมงานจะไม่ลังเลใจที่จะเปลี่ยนเครื่องมือที่ไม่มีประสิทธิภาพ
โดยสรุปแล้ว Agile Manifesto ให้เหตุผลว่าหากมีความขัดแย้งระหว่างแผนและการเปลี่ยนแปลง ทีม Agile จะตอบสนองต่อการเปลี่ยนแปลง
ความแตกต่างหลักระหว่าง Agile และ Waterfall หรือแบบจำลองการพัฒนาตามลำดับใดๆ
วงจรการพัฒนาซอฟต์แวร์: Waterfall vs Agile
ในโครงการน้ำตก เรามี:
- ข้อกำหนดคงที่
- เอกสารทางเทคนิคที่ชัดเจน
- เวลาและทรัพยากรโดยประมาณ
ในโครงการ Agile เราพลิกค่า
เราไม่มีข้อกำหนดที่แน่นอน แต่เรามีทรัพยากรและเวลาที่แน่นอน
การวางแผนโครงการในบริษัทพัฒนาซอฟต์แวร์แบบ Agile
- วิสัยทัศน์ของผลิตภัณฑ์: ทีมงานกำหนดเป้าหมายของซอฟต์แวร์ที่กำหนดเองอย่างชัดเจน ซอฟต์แวร์นี้แก้ปัญหาอะไรได้บ้าง แตกต่างจากโซลูชันซอฟต์แวร์อื่นที่คล้ายคลึงกันอย่างไร วิสัยทัศน์ของผลิตภัณฑ์ถูกสร้างขึ้นโดยเจ้าของผลิตภัณฑ์และควรได้รับการตรวจสอบอย่างน้อยปีละครั้งหากเราพูดถึงองค์กรขนาดใหญ่และมั่นคง
- แผนงานผลิตภัณฑ์: แผนงานผลิตภัณฑ์ เช่นเดียวกับวิสัยทัศน์ผลิตภัณฑ์ เป็นประเภทของการวางแผนระดับสูง เป็นการทบทวนข้อกำหนดของผลิตภัณฑ์ระดับสูงที่สร้างวิสัยทัศน์ของผลิตภัณฑ์ แผนงานผลิตภัณฑ์ควรได้รับการปรับปรุงและทบทวนอย่างน้อยปีละสองครั้ง
- การวางแผนการเปิดตัว: การวางแผน การเปิดตัวยังรวมอยู่ในการวางแผนผลิตภัณฑ์ระดับสูงด้วย แต่จะมีความเฉพาะเจาะจงมากกว่าวิสัยทัศน์ของผลิตภัณฑ์และแผนงานผลิตภัณฑ์ เจ้าของผลิตภัณฑ์วางแผนการวางจำหน่ายโดยกล่าวถึงลำดับการวางจำหน่ายและประเภทของการเพิ่มผลิตภัณฑ์ (เวอร์ชัน) ที่ควรออกสู่ตลาด การวางแผนการวางจำหน่ายควรทำอย่างน้อยทุกไตรมาส
- การวางแผน Sprint: ใน Scrum การวางแผนการวิ่งเป็นกิจกรรมการทำงานร่วมกันระหว่างสมาชิกในทีม Scrum รวมถึงเจ้าของผลิตภัณฑ์ ทีม Scrum สร้างเป้าหมายการทำซ้ำ งาน และสิ่งที่ส่งมอบ และทำซ้ำกระบวนการทุก 1 ถึง 4 สัปดาห์
- Daily Scrum: ในทีม Agile สมาชิกในทีมมีการประชุมแบบสแตนด์อัพรายวันเพื่อหารือเกี่ยวกับงานปัจจุบันที่จะช่วยบรรลุเป้าหมายของการวนซ้ำ
เมื่อสิ้นสุดการวนซ้ำหรือการวิ่งแต่ละครั้ง โครงการ Agile มีการวางแผน 2 รูปแบบ:
- การตรวจสอบ Sprint: การตรวจ สอบ Sprint รวมถึงการสาธิตผลิตภัณฑ์ที่สร้างขึ้นและดำเนินการโดยเจ้าของผลิตภัณฑ์และทีมพัฒนาซอฟต์แวร์เมื่อสิ้นสุด Sprint ทุกครั้ง
- Sprint retrospective: มีการจัดประชุมย้อนหลัง Sprint เพื่อวัดความก้าวหน้าของทีม ในระหว่างการย้อนหลังของ Sprint สมาชิกในทีม Agile จะหารือเกี่ยวกับกระบวนการและสภาพแวดล้อมและวางแผนสำหรับการปรับปรุงกระบวนการในการวิ่งครั้งต่อไป
หมายเหตุ: ไม่ใช่ว่าทุกทีมของ Agile จะดำเนินการตามขั้นตอนการวางแผนโครงการทั้งหมด เนื่องจากจะขึ้นอยู่กับคุณลักษณะเฉพาะของโครงการพัฒนาซอฟต์แวร์เฉพาะ การวางแผนที่ได้รับความนิยมมากที่สุด ได้แก่ การวางแผนการวิ่ง การหวนกลับ การทบทวนการวิ่ง และ Scrum รายวัน สตาร์ทอัพหรือทีมขนาดเล็กยังไม่มีวิสัยทัศน์หรือแผนงานของผลิตภัณฑ์ อย่างไรก็ตาม ขอแนะนำให้มีไว้ล่วงหน้า
เอกสารข้อกำหนดทางเทคนิคจัดทำขึ้นด้วยวิธีการพัฒนาซอฟต์แวร์ Agile อย่างไร
ข้อกำหนดของผู้ใช้ใน Agile เขียนในรูปแบบที่เรียกว่า "เรื่องราวของผู้ใช้"
เรื่องราวของผู้ใช้เขียนขึ้นเพื่อรวบรวมความต้องการจากมุมมองของนักพัฒนาซอฟต์แวร์ ผู้ทดสอบ (ผู้เชี่ยวชาญ QA) และตัวแทนธุรกิจ เรื่องราวของผู้ใช้ต้องระบุทั้งลักษณะการทำงานและลักษณะที่ไม่ใช่หน้าที่
ระเบียบวิธีแบบเปรียว
วิธีการพัฒนาซอฟต์แวร์ Agile ที่นิยมใช้กันอย่างแพร่หลายมี 3 วิธี เหล่านี้คือ:
Scrum
วิธีการ Agile Scrum คืออะไร? ประสบความสำเร็จในการพัฒนาซอฟต์แวร์ Agile โดยใช้ Scrum
Scrum คือกรอบงานการจัดการโครงการแบบ Agile ที่ช่วยให้ทีมทำงานร่วมกันอย่างมีประสิทธิผล Scrum อธิบายชุดการประชุม เครื่องมือ และบทบาทที่ทำงานร่วมกันเพื่อช่วยจัดโครงสร้างและจัดการงานของทีม ในวิธี Scrum Agile เครื่องมือที่ใช้กันอย่างแพร่หลายที่สุดคือ JIRA Atlassian
เครื่องมือ Jira Scrum คืออะไร? Jira สำหรับบริษัทพัฒนาซอฟต์แวร์ Agile
ซอฟต์แวร์ Jira เป็นส่วนหนึ่งของกลุ่มผลิตภัณฑ์ที่ออกแบบโดย Atlassian Corporation เพื่อช่วยทีมที่มีขนาดและประเภทต่าง ๆ ในการจัดการและจัดระเบียบงานของพวกเขา Jira ถูกสร้างขึ้นเป็นเครื่องมือติดตามจุดบกพร่อง แต่ในที่สุดก็ขยายไปสู่เครื่องมือการจัดการงานที่มีประสิทธิภาพสำหรับวัตถุประสงค์ต่างๆ ใน SDLC ตั้งแต่ข้อกำหนดและการจัดการกรณีทดสอบไปจนถึงการพัฒนาซอฟต์แวร์ที่คล่องตัว
คัมบัง
วิธีการ Agile Kanban คืออะไร? ประสบความสำเร็จกับการพัฒนาซอฟต์แวร์ Agile โดยใช้ Kanban
Kanban เป็นแนวทางการจัดการที่บางครั้งใช้ในโครงการ Agile วัตถุประสงค์ทั่วไปของ Kanban คือการแสดงภาพและเพิ่มประสิทธิภาพเวิร์กโฟลว์ภายในห่วงโซ่มูลค่าเพิ่ม
Kanban ไม่ใช่แนวทาง Agile แบบดั้งเดิมเช่น Scrum แต่จะใช้ในการจัดการงานและงานโดยทั่วไปแทน ในวิธี Kanban เครื่องมือยอดนิยมคือ Trello
เครื่องมือ Trello Kanban คืออะไร? Trello สำหรับบริษัทพัฒนาซอฟต์แวร์ Agile
Trello เป็นผลิตภัณฑ์ของ Atlassian เช่น Jira ดังนั้น หากคุณสมัครใช้งาน Jira แล้ว คุณสามารถใช้ข้อมูลประจำตัวเดียวกันเพื่อลงทะเบียนกับ Trello ได้ ไม่เหมือนกับ Jira ซึ่งอิงจาก Scrum, Trello มีพื้นฐานมาจาก Kanban ก็ถือได้ว่าเป็นบอร์ดคัมบัง Trello ประกอบด้วยแผงแยก Trello มีเทมเพลตสำหรับการจัดการโปรเจ็กต์ Agile การจัดการผลิตภัณฑ์ และการจัดการทีม ทีมพัฒนาซอฟต์แวร์ Agile ใช้เทมเพลต Agile ใดๆ ที่มีอยู่เพื่อทำงานกับหลักการ Agile และจัดการโครงการพัฒนาซอฟต์แวร์โดยการทำซ้ำ/วิ่ง
การเขียนโปรแกรมขั้นสูง (XP)
XP เป็นวิธีการแบบ Agile ที่ได้รับความนิยมในทีมพัฒนาซอฟต์แวร์มาตั้งแต่ปี 1990 XP ไม่ได้มุ่งเน้นที่การจัดการโปรเจ็กต์เท่านั้น (เช่น Scrum) แต่ยังเน้นที่การสร้างโค้ดด้วย หาก Scrum มุ่งเน้นที่การจัดการงาน ระบุบทบาทเฉพาะในโครงการ และแบ่งโครงการออกเป็นการทำซ้ำ XP จะเน้นที่การพัฒนาซอฟต์แวร์และการทดสอบด้วย (ไม่ใช่การจัดการเอาต์ซอร์ซเพื่อการพัฒนาซอฟต์แวร์)
นี่คือคำจำกัดความที่สำคัญที่สุดใน XP:
รอบรายไตรมาส: ไตรมาสละครั้ง ทีมงาน XP จะจัดการประชุมเพื่อวางแผนและไตร่ตรอง
รอบรายสัปดาห์: แบบฝึกหัดรอบสัปดาห์เป็นการทำซ้ำ 1 สัปดาห์ โดยทีมจะเลือกเรื่องราวและสร้างซอฟต์แวร์ที่ใช้งานได้ซึ่ง "เสร็จสิ้น" เมื่อสิ้นสุดสัปดาห์
ทั้งรอบรายไตรมาสและรายสัปดาห์ไม่ค่อยได้ใช้ในโครงการ Agile ในขณะนี้ ตอนนี้ทีม Agile ส่วนใหญ่ติดตาม Scrum สำหรับการจัดการโครงการ: การเปิดตัว – การวางแผนงานค้างของผลิตภัณฑ์ - การวางแผนงานค้าง - งานค้างแบบวิ่ง
Slack: ทุกครั้งที่ทีมสร้างแผน ทีมจะเพิ่ม Slack โดยใส่รายการเสริมหรือรายการย่อยจำนวนเล็กน้อย
โดยสรุปแล้ว Agile Manifesto เป็นรูปแบบการมีส่วนร่วมในการพัฒนาซอฟต์แวร์ที่แพร่หลายในปัจจุบัน ใช้ทั้งในระหว่างการพัฒนาซอฟต์แวร์เอาท์ซอร์สและกระบวนการพัฒนาซอฟต์แวร์ภายในองค์กร Agile Manifesto เหมาะอย่างยิ่งสำหรับวงจรการพัฒนาซอฟต์แวร์ที่ยืดหยุ่น ซึ่งต้องการการเปลี่ยนแปลงมากกว่าแผนตายตัว บุคคลและการโต้ตอบมีความสำคัญมากกว่ากระบวนการและเครื่องมือ และซอฟต์แวร์แบบกำหนดเองที่ใช้งานได้คือเป้าหมายมากกว่าเอกสารการพัฒนาซอฟต์แวร์ที่ครอบคลุม