คู่มือ 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

  1. วิสัยทัศน์ของผลิตภัณฑ์: ทีมงานกำหนดเป้าหมายของซอฟต์แวร์ที่กำหนดเองอย่างชัดเจน ซอฟต์แวร์นี้แก้ปัญหาอะไรได้บ้าง แตกต่างจากโซลูชันซอฟต์แวร์อื่นที่คล้ายคลึงกันอย่างไร วิสัยทัศน์ของผลิตภัณฑ์ถูกสร้างขึ้นโดยเจ้าของผลิตภัณฑ์และควรได้รับการตรวจสอบอย่างน้อยปีละครั้งหากเราพูดถึงองค์กรขนาดใหญ่และมั่นคง
  2. แผนงานผลิตภัณฑ์: แผนงานผลิตภัณฑ์ เช่นเดียวกับวิสัยทัศน์ผลิตภัณฑ์ เป็นประเภทของการวางแผนระดับสูง เป็นการทบทวนข้อกำหนดของผลิตภัณฑ์ระดับสูงที่สร้างวิสัยทัศน์ของผลิตภัณฑ์ แผนงานผลิตภัณฑ์ควรได้รับการปรับปรุงและทบทวนอย่างน้อยปีละสองครั้ง
  3. การวางแผนการเปิดตัว: การวางแผน การเปิดตัวยังรวมอยู่ในการวางแผนผลิตภัณฑ์ระดับสูงด้วย แต่จะมีความเฉพาะเจาะจงมากกว่าวิสัยทัศน์ของผลิตภัณฑ์และแผนงานผลิตภัณฑ์ เจ้าของผลิตภัณฑ์วางแผนการวางจำหน่ายโดยกล่าวถึงลำดับการวางจำหน่ายและประเภทของการเพิ่มผลิตภัณฑ์ (เวอร์ชัน) ที่ควรออกสู่ตลาด การวางแผนการวางจำหน่ายควรทำอย่างน้อยทุกไตรมาส
  4. การวางแผน Sprint: ใน Scrum การวางแผนการวิ่งเป็นกิจกรรมการทำงานร่วมกันระหว่างสมาชิกในทีม Scrum รวมถึงเจ้าของผลิตภัณฑ์ ทีม Scrum สร้างเป้าหมายการทำซ้ำ งาน และสิ่งที่ส่งมอบ และทำซ้ำกระบวนการทุก 1 ถึง 4 สัปดาห์
  5. 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 เหมาะอย่างยิ่งสำหรับวงจรการพัฒนาซอฟต์แวร์ที่ยืดหยุ่น ซึ่งต้องการการเปลี่ยนแปลงมากกว่าแผนตายตัว บุคคลและการโต้ตอบมีความสำคัญมากกว่ากระบวนการและเครื่องมือ และซอฟต์แวร์แบบกำหนดเองที่ใช้งานได้คือเป้าหมายมากกว่าเอกสารการพัฒนาซอฟต์แวร์ที่ครอบคลุม