บทความนี้จะพาทุกคนไปสำรวจโมเดล วงจรการพัฒนาซอฟต์แวร์ หรือ SDLC (Software Development Life Cycle) และทำความเข้าใจว่า Agile คือ ? พร้อมอธิบายว่าทำไมการผสานพลังของโมเดลนี้ เปรียบเสมือนกุญแจสำคัญที่จะปลดล็อกศักยภาพในการพัฒนายุคใหม่ให้ก้าวไปข้างหน้าอย่างรวดเร็ว และมีประสิทธิภาพ
สารบัญ
โลกแห่งการพัฒนาซอฟต์แวร์กำลังถูกเปลี่ยนแปลงไปอย่างรวดเร็ว เช่นเดียวกับการมาของแนวคิดอไจล์ที่เกิดขึ้นมาเพื่อช่วยให้การทำงานของนักพัฒนาทันต่อยุคสมัยมากยิ่งขึ้น โดยเน้นไปที่การปรับตัวให้เข้ากับเทคโนโลยีที่ถูกเปลี่ยนแปลงอยู่ตลอดเวลา ไม่ได้ยึดติดกับวิธีการเดิมๆ ทำให้นักพัฒนาต้องเรียนรู้ และพัฒนาเทคโนโลยีของตนเองอยู่เสมอ
ทำความรู้จัก Software Development Life Cycle : SDLC
กรอบแนวคิดที่กำหนดขั้นตอนการทำงานอย่างเป็นระบบ ครอบคลุมตั้งแต่การวางแผนเบื้องต้น ออกแบบ พัฒนา ทดสอบ นำไปใช้งานจริง และบำรุงรักษาซอฟต์แวร์ เพื่อสร้างความมั่นใจว่าซอฟต์แวร์ที่พัฒนาขึ้นมีคุณภาพเพียงพอ ตอบสนองความต้องการของผู้ใช้ และสามารถส่งมอบซอฟต์แวร์ได้ตรงตามระยะเวลาที่กำหนด รวมถึงครอบคลุมงบประมาณที่วางไว้ โดยแบ่งออกเป็น 6 Stage หลักดังนี้
Planning > Design > Implement (Develop) > Testing > Deployment > Maintenance
ตามกรอบแนวคิดที่กำหนดไว้ ขั้นตอนการดำเนินงานจะมีลักษณะเป็นเส้นตรง ทำให้ขาดความยืดหยุ่นในการปรับตัวเมื่อเกิดการเปลี่ยนแปลง ซึ่งไม่สอดคล้องกับความต้องการในการพัฒนาที่ต้องตอบสนองต่อสถานการณ์ที่เปลี่ยนแปลงอย่างรวดเร็วในปัจจุบัน
Agile คือ ? จะเข้ามาช่วยแก้ปัญหาได้อย่างไร ?
อไจล์เป็นแนวทางการพัฒนาซอฟต์แวร์ หรือ SDLC รูปแบบหนึ่งที่เน้นความยืดหยุ่น และการทำงานร่วมกันอย่างใกล้ชิดกับลูกค้า หรือผู้มีส่วนได้ส่วนเสีย (Stakeholders) โดยใช้ กระบวนการพัฒนาแบบวนซ้ำ เพื่อส่งมอบซอฟต์แวร์ที่มีคุณค่าให้กับลูกค้าอย่างต่อเนื่อง และสามารถปรับให้เหมาะสมได้ตามความต้องการ (Requirement) ที่เปลี่ยนแปลงอยู่ตลอดเวลาในขณะที่กำลังพัฒนา
ก่อนอื่นให้ไปทำความเข้าใจวัฐจักรของอไจล์ผ่านวงล้อกันก่อน
กระบวนการทำงานของอไจล์
- Requirements : เก็บข้อมูลและนิยามความต้องการของซอฟต์แวร์ รวมถึงจัดลำดับความสำคัญ ว่าฟีเจอร์ไหนบ้างที่ต้องทำในแต่ละรอบของการพัฒนา
- Design : ออกแบบและวางโครงสร้าง หรือฟีเจอร์ที่จะพัฒนาในแต่ละรอบ เพื่อวางแผนว่าจะสร้างโซลูชันอย่างไร
- Develop : เขียนโค้ดและพัฒนาฟีเจอร์ต่าง ๆ ตามที่ออกแบบไว้ในขั้นตอนที่ 2
- Test : เมื่อพัฒนาเสร็จ ก็เริ่มต้นการทดสอบ ไม่ว่าจะเป็นการทำ Unit Tests , Manual Tests หรือการทำ Automated Tests ร่วมด้วย เพื่อให้มั่นใจได้ว่าฟังก์ชันการทำงานถูกต้อง
- Deploy : เมื่อผ่านการทดสอบ ฟังก์ชันที่ถูกพัฒนาแล้วจะถูกนำไปใช้งานบนสภาพแวดล้อมจริง (Production) เพื่อให้ผู้ที่มีส่วนเกี่ยวข้องสามารถใช้งานฟังก์ชันใหม่ได้ก่อนใคร
- Review : ทีมพัฒนาและผู้มีส่วนเกี่ยวข้องจะทบทวนฟังก์ชันที่ได้ส่งมอบในรอบการพัฒนา เพื่อรับฟังความคิดเห็น และพูดคุยเกี่ยวกับขั้นตอนถัดไปที่จะดำเนินการ
- Iteration : กระบวนการวนซ้ำ – อไจล์จะไม่สามารถสมบูรณ์ได้เลยถ้าขาดขั้นตอนสุดท้าย กระบวนการนี้จะเป็นการเริ่มต้นใหม่อีกครั้ง เพื่อทำการทบทวน จะเริ่มรอบใหม่พร้อมกับการรับฟังความคิดเห็น ปรับปรุง และพัฒนาฟีเจอร์เพิ่มเติมต่อไป
“Key Concept ของอไจล์ คือการหมั่นคิด ทบทวน ทบทวน วนไปเรื่อยๆ เพื่อพัฒนา Production ให้ดีขึ้น”
Agile Frameworks and Tools
Frameworks
- Scrum : วิธีการพัฒนาซอฟต์แวร์แบบอไจล์ ที่เน้นการทำงานเป็นทีม และการส่งมอบผลลัพธ์อย่างรวดเร็ว โดยแบ่งการทำงานออกเป็นรอบสั้นๆ เรียกว่า Sprints (โดยทั่วไปมีระยะเวลา 1-4 สัปดาห์)
- Kanban : วิธีการจัดการงานที่เน้นการมองเห็นภาพรวม ช่วยให้ทีมทำงานได้อย่างมีประสิทธิภาพ และปรับปรุงกระบวนการทำงานได้อย่างต่อเนื่อง โดยมีต้นกำเนิดจากระบบการผลิตของโตโยต้า และปัจจุบันถูกนำมาใช้ในวงการการพัฒนาซอฟต์แวร์
- Extreme Programming (XP) : วิธีการพัฒนาซอฟต์แวร์ที่เน้นการส่งมอบซอฟต์แวร์ที่มีคุณภาพสูง และตอบสนองต่อความต้องการของลูกค้าได้อย่างรวดเร็ว โดยแบ่งการพัฒนาออกเป็นรอบสั้นๆ และส่งเสริมให้ทีมทำงานร่วมกันทดสอบ และปรับปรุงซอฟต์แวร์อย่างต่อเนื่อง
Tools
- Trello : เครื่องมือที่ช่วยให้เราจัดการงานต่างๆ ได้ง่ายยิ่งขึ้น คิดง่ายๆ เหมือนเรามีบอร์ดขนาดใหญ่ที่แบ่งเป็นหลายๆ คอลัมน์ไว้เพื่อวางแผน
- GitHub : แพลตฟอร์มที่นักพัฒนาซอฟต์แวร์ใช้ในการสร้าง และแบ่งปันโค้ด คิดง่ายๆ เหมือนกับเรามีคลังเก็บโค้ดส่วนตัว หรือสาธารณะไว้ใช้งานภายในทีม
บทสรุป
หลักการทำงานของ Agile Model จัดเป็นรูปแบบวงจรการพัฒนาซอฟต์แวร์ประเภทหนึ่งที่เน้นความยืดหยุ่น และการทำงานร่วมกันเป็นทีม นับเป็นกลยุทธ์อันทรงพลังสำหรับนักพัฒนาซอฟต์แวร์ยุคใหม่ การนำโมเดลนี้มาใช้จะช่วยทำให้ทีมพัฒนาสามารถส่งมอบซอฟต์แวร์ที่ตอบโจทย์ความต้องการของลูกค้าได้ทันท่วงที รองรับการเปลี่ยนแปลงในระหว่างการพัฒนา ผลิตภัณฑ์ที่ได้จึงมีความน่าเชื่อถือ และสามารถแข่งขันในตลาดได้อย่างมีประสิทธิภาพ เหมาะกับยุคที่ความต้องการของผู้บริโภคเปลี่ยนแปลงไปอย่างรวดเร็ว
ที่มา : aws.amazon.com/what-is/sdlc/ , www.geeksforgeeks.org/sdlc-models-types-phases-use/
เมื่อกระบวนการพัฒนาเสร็จสมบูรณ์จนได้ Product ที่มีคุณภาพเพียงพอ – การยอมรับเทคโนโลยี Technology Acceptance จึงเป็นอีกปัจจัยหนึ่งที่นักพัฒนาจำเป็นต้องคำนึงถึงต่อไป