SDLC (Software Development Life Cycle) using Agile


     แนวคิดของ Agile นั้นได้เกิดขึ้นมาตั้งแต่ช่วงปี 1970 แล้ว จากการวิจัยได้พบว่า แนวคิดได้เกิดขึ้น มาเพราะการพัฒนาซอฟต์แวร์ในรูปแบบเดิม (traditional method) นั้น มีข้อเสียมากมาย โดยเฉพาะเรื่อง ความพึงพอใจต่อลูกค้า, เวลาในการพัฒนา และ budget ดังนั้นนักพัฒนาซอฟต์แวร์จึงได้แนะนำให้ เปลี่ยนไปใช้ Agile ซึ่งมีแนวคิดดังกล่าวนี้ ตอบสนองต่อการเปลี่ยนแปลง requirement, การทำงานร่วม กับลูกค้า พร้อมกับหมอบ working software ให้บ่อยมากยิ่งขึ้น, เป็นต้น ในบทความนี้จะกล่าวถึงการใช้ Agile รวมถึงการนำไปใช้ในองค์กร
     Agile คือกลุ่มของ Software methodologies ที่มีแนวคิดเดียวกัน มีลักษณะการพัฒนาแบบ iteration คือ แบ่งส่วนย่อยๆ แล้วพัฒนาต่อเรื่อยๆ แต่ละ iteration จะต้องเกิด working software และต้องพัฒนาต่อ เรื่อยๆ และมีลักษณะให้ความสำคัญกับคนที่ทำ มากกว่า process Agile มี core value ทั้งหมด 4 ข้อดังนี้
1. Individuals interactions over process and tool คือการให้ความสำคัญกับบุคคล มากกว่า process และ tool
2. Working software over comprehensive documentation คือการส่งมอบซอฟต์แวร์ที่นำไปใช้ งานได้จริง มากกว่าการทำเอกสารที่ครบสมบูรณ์
3. Customer collaboration over contract negotiation คือการเจอลูกค้าในการพัฒนาตลอดระยะ เวลา มากกว่าการทำตามสัญญา
4. Responding to change over following a plan คือการยอมรับการเปลี่ยนแปลง มากกว่าการทำแผนที่วางไว้




     Agile methods: Agile นั้นมีหลาย method ให้เลือกใช้ในการพัฒนา method ที่ได้รับความนิยมมากที่สุดคือ Scrum ! Scrum คือ framework ของ Agile สำหรับการพัฒนา software ชนิดหนึ่ง ที่มีลักษณะ cross-functional teams ซึ่งเป็นกลุ่มของคน ที่ทำให้ software เกิด product ไม่จำเป็นต้อง หน้าที่ใครหน้าที่ มัน ใครก็สามารถทำหน้าที่นั้นๆได้
Process ของ Scrum โดยย่อคือ
1. Product backlog คือการทำบอรด์ที่รวบรวม requirement ทั้งหมดของลูกค้าทั้งหมด
2. Sprint backlog คือบการทำบอรด์ที่รวบรวม task ของ iteration นั้นๆ ว่าต้องทำอะไรบ้างในSprint ซึ่งนำ task นั้นๆ มาจาก Product backlog
3. Sprint คือ การทำ iteration development ให้เกิด working software ขึ้นมา
4. ทุกๆ 24 ชม จะทำ daily scrum คือการทำ stand-up meeting หน้า Sprint backlog อธิบายว่า ใครทำอะไรบ้าง และ ทำไปถึงไหนแล้ว
5. เราจะทำ Sprint ทุกๆ 30 วัน หรือ อาจน้อยกว่านี้ได้ตามความเหมาะสม จนเกิด working software

     หลักการของ PhoneGap คือ PhoneGap จะทำการรันหน้าเว็บ ที่เป็น HTMLขึ้นมาบน Application ที่ต้อง Install ลงไปในเครื่อง หรือที่เรียกกันว่า Native Application ถ้าต้องการที่จะใช้ความสามารถต่างๆบนมือถือเช่นส่ง SMS ถ่ายรูป ถ่ายวิดิโอ ดึงรายชื่อเพื่อน หรือ สั่งให้เครื่องสั่น ก็สามารถทำได้โดยการเรียกใช้ Javascript ที่ PhoneGapเตรียมมาให้ และนอกจากนี้ PhoneGap ยังมีเครื่องมืออีกมากมายที่สามารถเรียกคุณสมบัต ิต่างๆบนมือถือได้แล้วนั้น PhoneGap ก็ยังเปิดโอกาสให้นักพัฒนาสามารถพัฒนา Plugin ต่างๆเข้าไปเชื่อม กับ PhoneGap ได้ อย่าง Plugin ที่เห็นกันตอนนี้ก็จะมี B arcode Scan, Push Notification หรือแม้แต่ NFC Reader โดยที่ PhoneGap นั้นพัฒนาได้ง่ายและรวดเร็ว เพราะ ใช้ ภาษา HTML ที่เข้าใจง่าย ทำให้ไม่ต้องเรียนรู้ภาษาใหม่ และนักพัฒนาสามารถเข้าไปเขียน Plugin เสริมได้เรื่อยๆ ทำให้เรามีอะไรใหม่ๆให้เราใช้ตลอดเวลา



     ข้อดีคือ:
1. รองรับการเปลี่ยนแปลง Requirement ได้ดี
2. สนุกกับการทำSoftware
3. Fixed budget, fixed time และ Flexible feature
4. ลูกค้าเห็น product ได้ไว
5. มีความเสี่ยงน้อย โอกาส Project success สูง
6. เกิด Productivity มากกว่าการทำ Traditional process (waterfall)


     ข้อเสียคือ:
1. ทุกคนในทีมต้องเท่าเทียมกัน จะต้องไม่มี leader ที่ manage ทีม แต่ทุกคนในทีมต้องช่วยกัน
2. ไม่เหมาะกับงานหน่วยงานราชการ ที่เน้นทำเอกสารไว้ก่อน
3. ทุกคนในทีมต้อง Agile และต้องมีความเป็น Beginner mind คือเปิดรับฟังความเห็นจากคนอื่น ที่มีลักษณะ team ที่เรียกว่า Egoless team เท่านั้น
4. Agile อาจไม่เหมาะสำหรับบางคนและบางทีม แต่บอกได้ว่าคนไหน ทีมไหน เหมาะกับการทำ Agile

     หลักการของ PhoneGap คือ PhoneGap จะทำการรันหน้าเว็บ ที่เป็น HTMLขึ้นมาบน Application ที่ต้อง Install ลงไปในเครื่อง หรือที่เรียกกันว่า Native Application ถ้าต้องการที่จะใช้ความสามารถต่างๆบนมือถือเช่นส่ง SMS ถ่ายรูป ถ่ายวิดิโอ ดึงรายชื่อเพื่อน หรือ สั่งให้เครื่องสั่น ก็สามารถทำได้โดยการเรียกใช้ Javascript ที่ PhoneGapเตรียมมาให้ และนอกจากนี้ PhoneGap ยังมีเครื่องมืออีกมากมายที่สามารถเรียกคุณสมบัต ิต่างๆบนมือถือได้แล้วนั้น PhoneGap ก็ยังเปิดโอกาสให้นักพัฒนาสามารถพัฒนา Plugin ต่างๆเข้าไปเชื่อม กับ PhoneGap ได้ อย่าง Plugin ที่เห็นกันตอนนี้ก็จะมี B arcode Scan, Push Notification หรือแม้แต่ NFC Reader โดยที่ PhoneGap นั้นพัฒนาได้ง่ายและรวดเร็ว เพราะ ใช้ ภาษา HTML ที่เข้าใจง่าย ทำให้ไม่ต้องเรียนรู้ภาษาใหม่ และนักพัฒนาสามารถเข้าไปเขียน Plugin เสริมได้เรื่อยๆ ทำให้เรามีอะไรใหม่ๆให้เราใช้ตลอดเวลา


Agile VS Waterfall

     จากภาพจะเห็นได้ว่า
1. Waterfall ตลอดระยะเวลาการพัฒนาจะไม่เห็น product ที่ส่งให้ลูกค้าเลยจะเห็น product จริงๆ ก็ถึงระยะ phase สุดท้ายแล้ว ในขณะที่ Agile ส่ง working software (ซอฟต์แวร์ที่ใช้งานได้จริง) ให้ดูว่า นี้คือสิ่งที่ลูกค้าต้องการหรือไม่ ลูกค้าจะสามารถเปลี่ยน requirement ได้ทันที ดังนั้น Agile รองรับการ เปลี่ยนแปลงของ requirement ได้ดี
2. Waterfallมีค่าใช้จ่ายในการรันprojectเพิ่มขึ้นเรื่อยๆเพราะrequirementเปลี่ยนแปลงอยู่ ตลอดเวลา หาก requirement ถูกเปลี่ยนในขณะที่อยู่ใน phase coding หรือ design จะมีค่าใช้จ่ายเพิ่ม ขึ้นกว่า phase แรก ๆ ยิ่งถ้า product นั้นเสร็จแล้ว มีการเปลี่ยนแปลง requirement เพิ่มเติม ค่าใช้จ่าย จะสูงมาก ในขณะที่ Agile จะ fix ค่าใช้จ่ายในการรัน project ไว้คงที่ตลอด
3. Waterfallมีความเสี่ยงในระยะphaseสุดท้ายมากเพราะมีโอกาสที่productออกมาแล้วไม่ใช่ สิ่งที่ลูกค้าต้องการ ทำให้มีโอกาส project fail ได้สูง ในขณะที่ Agile รับความเสี่ยงตั้งแต่ต้น เพราะ การส่งมอบ product ครั้งแรกอาจไม่ใช่สิ่งที่ลูกค้าต้องการ ดังนั้นจึงปรับเปลี่ยนเรื่อยๆ จนความเสี่ยงลดลง