Agile เป็น Software Development Modelling อีกโมเดลหนึ่งในหลาย ๆ โมเดลที่มีเป้าหมายในด้านความ "รวดเร็ว ยืดหยุ่น พร้อมรับกับความเปลี่ยนแปลง" พยายามลดความเสี่ยงของการพัฒนาซอฟต์แวร์ โดยการทำ Time box สั้น ๆ เรียกว่า iteration ซึ่งได้กล่าวไว้แล้วในเรื่อง extreme programming การพัฒนาโดยใช้โมเดลนี้จะต้องทำไปเรื่อย ๆ ไม่ต้องหยุดแม้มีอะไรมากระทบ เมื่อมีการเปลี่ยนแปลงสามารถเปลี่ยนแปลงได้อย่างรวดเร็ว ทีมพัฒนาจะต้องมีพูดคุยสื่อสารกันมากกว่าการใช้เครื่องมือ การทำงานจะยึดที่ผลที่ได้หมายถึงซอฟต์แวร์เป็นหลัก ให้ความสำคัญกับความพึงพอใจของลูกค้า ส่งมอบซอฟต์แวร์อย่างต่อเนื่อง และยอมรับข้อกำหนดที่เปลี่ยนแปลง ผู้ใช้หรือลูกค้าและทีมพัฒนาต้องทำงานร่วมกัน โปรแกรมเมอร์ไปทำงานที่ site ของลูกค้าและต้องเจอทุกวันจนงานจะแล้วเสร็จ ให้ใช้พูดกันต่อหน้า ไม่ต้องใช้โทรศัพท์หรืออีเมล์ การทำงานต้องปล่อยให้ทีมพัฒนาตัดสินใจเองได้
Agile Methodologies
- Agile UP
- XP (eXtreme Programming)
- FDD (Feature Driven Development)
- Scrum
เทคนิคการพัฒนาแบบ Agile
- Agile model driven development(AMDD)
- Code Refactor เป็นการแก้ไขคำสั่งซอฟต์แวร์เดี่ยวนั้นและ design เปลี่ยนเอง
- Pair Programming (อ่านในตอนที่แล้ว)
- Test Driven Development(TDD)เป็นเทคนิคการเขียน test case ก่อนที่จะเขียนชุดคำสั่ง
เมื่อพิจารณาดูแล้วจะเห็นว่าเป็นสิ่งสวยหรู ผู้พัฒนามีความสุข งานประสบผลสำเร็จแน่นอน รวดเร็ว ลูกค้าพึงพอใจ แต่มีนักวิชาการได้เขียนบทความวิจัยมาเปรียบเทียบกับโมเดลอย่างอื่น น่าสนใจไม่น้อย โอกาสหน้าจะนำมาเขียนให้อ่าน โปรดติดตามตอนต่อไป ขอบคุณที่อ่าน เข้ามาอ่านแล้วโปรดลงแสดงความคิดเห็น ไว้เป็นร่องรอยหน่อยนะครับ
๒ ความคิดเห็น:
ผมสนใจเรื่องFeature-Driven Development(FDD)กำลังศึกษาอยู่ครับ ท่านอาจารย์ช่วยแนะนำให้หน่อยครับผม
ขอบพระคุณอย่างสูงครับ
ต้องตอบกันยาวพอสมควร ครับ
ผมจะพยายามอธิบายด้วยภาษาที่ไม่เป็นวิชาการมากนักนะครับ
เริ่มจากต้องเข้าใจว่าเมื่อเราจะรับจ้างพัฒนาซอฟต์แวร์ใด ๆ ให้กับผู้ว่าจ้าง สิ่งที่เราเรียนมาในแบบดั้งเดิมที่เขาใช้กันคือ วงจรการพัฒนาซอฟต์แวร์หรือ SDLC จะใช้โมเดลของ water fall ที่มี 6-7 ขั้นตอน(บางตำรา)ได้แก่ 1. ศึกษาความเป็นไปได้เบื้องต้น 2. วิเคราะห์ 3. ออกแบบ 4. พัฒนา 5. นำไปปฏิบัติ นำไปใช้ 6. ทดสอบ บำรุงรักษา (อย่าเอาไปอ้างอิงเพื่อตอบข้อสอบ)
โมเดลที่กล่าวมานี้ มีนักคอมพิวเตอร์เขามองว่ายังไม่ใช่คำตอบที่ดีที่สุด จึงได้มีโมเดลที่เขาลองปฏิบัติหรือสร้างขึ้นมาใหม่เรื่อย ๆ แม้แต่ agile ก็ยังมีคนบอกว่ายังไม่ดีที่สุด ยังพยายามคิดไปได้เรื่อย ๆ
ที่นี้มาดูปัญหาของนักคอมพิวเตอร์ว่าทำไมจึงต้องใช้ FDD ก็เพราะว่า นักคอมพิวเตอร์จะเข้าใจในเรื่องของการพัฒนาชุดคำสั่งได้ แต่เมื่อต้องเขียนโปรแกรมเช่น โปรแกรมบัญชี จำเป็นต้องศึกษาหลักการบัญชี ให้โปรแกรมทำงานได้ถูกต้องและตรงกับความต้องการของลูกค้า จึงจำเป็นต้องมีการจัดการการเก็บ requirement ที่มีรูปแบบที่ต้องทำเป็นโมเดล กันในทีมพัฒนา เนื่องจากซอฟต์แวร์ขององค์กรขนาดใหญ่ เช่น ของธนาคาร จะต้องมีพัฒนากันหลายคน ดังนั้น feature ต่าง ๆ ที่ลูกค้าต้องการจะต้องทำกันเป็นทีม เป็นขั้นตอน เช่น ภาพรวมของโปรแกรมทั้งหมด สร้างรายการที่จะทำ มีแผนการทำงานแต่ละ feature ถัดจากนั้นเอาออกแบบ feature และสุดท้ายคือ สร้างออกมา
จะเห็นว่ากระบวนการศึกษา Business logic ของ Agile ให้ความสำคัญสูงมาก ซึ่งจากประการณ์ของนักโปรแกรมเมอร์ทั่ว ๆ ไปจะเจอปัญหาเหมือน ๆ กันคือ ต้องแก้ไขโปรแกรมกันอยู่เรื่อย ๆ และเสียเวลากับในเรื่องดังกล่าวมาก
รายละเอียดศึกษาเพิ่มเติมจากลิงค์ด้านล่างนะครับ
http://en.wikipedia.org/wiki/Feature_Driven_Development
และที่ลิงค์ของ Agile โดยตรงครับ
http://www.agilemodeling.com/essays/fdd.htm
แสดงความคิดเห็น