Iterative & Incremental Development

Iterative Development



Iterative Development คือ การแบ่งงานเป็น iteration หรือ phase ที่มีเวลาจำกัดประมาณ 2-6 สัปดาห์ โดยจะมีลักษณะเป็น “timeboxed” คือถ้าเราตั้งเวลาเอาไว้เท่าไรจะต้องทำงานให้เสร็จภายในเวลาเท่านั้นห้ามเกิน แต่ถ้าหากทำไม่เสร็จสามารถลดสโครปงานลงแล้วใส่ใน iteration ถัดไปได้ ซึ่งการทำงานแบบ iteration ใช้หลักการในการวางแบบแผนงานก่อนที่จะเริ่มทำ iteration และเป็นการกระจายความเสี่ยงระหว่าง phase แต่ความเสี่ยงยังคงเท่าเดิม

ข้อดีของการทำงานแบบ Iterative

  • ทำงานได้สำเร็จมากขึ้นและตัวโปรแกรมมีปัญหาน้อยลง
  • จัดการความเสี่ยงได้ตั้งแต่เนิ่นๆ
  • ลดความซับซ้อนของตัวระบบ เพราะได้ทำการแบ่งงานเป็นระบบย่อยๆ ทำให้ทำงานง่ายขึ้น
  • ได้รับ feedback และการทดลองใช้ได้เร็ว ทำให้ได้ระบบที่ตรงกับความต้องการของผู้ใช้มากขึ้น

ข้อเสียของการทำงานแบบ Iterative

  • เกิด Bottle necking คือ ถ้า phase แรกทำงานล่าช้าจะทำให้ขึ้น phase 2ไม่ได้
  • มักจะ Over-commitment เพราะการ estimate ทำงานได้ยาก เพราะแต่ละ phase จะเกี่ยวเนื่องต่อกัน
  • หลุดจาก end goal ได้ง่าย เพราะทุกคนในทีมจะเน้นไปที่การจบ phase แต่จะยังใช้งานไม่ได้ จะต้องทำให้จบทั้งโปรเจ็คก่อน

Incremental Model

Incremental Model หรือโมเดลแบบก้าวหน้า เป็นโมเดลที่วิวัฒนาการมาจากโมเดล น้ำตก เนื่องจากโมเดลน้ำตกมีข้อเสียตรงที่จะต้องดำเนินการขั้นตอนให้เสร็จสิ้นก่อนจึงจะ ดำเนินการขั้นตอนต่อไป ซึ่งหากเป็นโครงการพัฒนาซอฟต์แวร์ที่มีขนาดใหญ่อาจต้องใช้เวลามาก ทำให้มีความเสี่ยงสูงกับโอกาสที่จะต้องย้อนกลับไปเริ่มต้นโครงการใหม่ทั้งหมด หากมีการวางแผนจัดการที่ไม่ดีพอ หลักการของ Incremental Model คือ การแบ่งระบบงานออกเป็นระบบ ย่อยต่างๆ โดยระบบย่อยเรียกว่า Increment ซึ่งเปรียบเสมือนกับโครงการขนาดเล็ก (Mini-Project) โดยจะทำการพัฒนาระบบงานที่เป็นงานหลักของระบบก่อน จากนั้นจึงพัฒนาต่อเติมในแต่ละ Increment ตามลำดับ จนกระทั่งได้ระบบงานที่เสร็จสมบูรณ์

ขั้นตอนการทำงานของโมเดลแบบก้าวหน้า ประกอบด้วย

  1. การศึกษาความเป็นไปได้ของระบบ จากนั้นจะทำการตรวจสอบความถูกต้อง ของการศึกษาความเป็นไปได้ เมื่อผลของการศึกษาความเป็นไปได้ของการพัฒนาระบบมีความ เหมาะสมในการพัฒนาระบบก็จะดำเนินการขั้นตอนต่อไป
  2.  การวางแผนและการกำหนดความต้องการ ในขั้นตอนนี้จะทำการวางแผนใน การพัฒนาระบบและกำหนดความต้องการต่างๆ ของระบบ จากนั้นจะทำการตรวจสอบความ ถูกต้องของข้อกำหนดความต้องการ
  3. ขั้นตอนการออกแบบระบบ (Product Design) โดยแตกระบบเป็นระบบย่อย พัฒนาและตรวจสอบระบบย่อยทีละระบบ ในขั้นตอนนี้จะเกิดความก้าวหน้าของระบบ (Increment) โดยแต่ละรอบของการพัฒนาระบบย่อยประกอบด้วยขั้นตอนการทำ งาน 5 ขั้นตอน และมีทวนซ้ำในแต่ละความก้าวหน้าของระบบย่อย ซึ่งขั้นตอนการทำงานของแต่ละรอบประกอบด้วย
    1. การออกแบบรายละเอียดของระบบย่อย พร้อมทั้งตรวจสอบความถูกต้อง
    2. เขียนโปรแกรมและทดสอบโปรแกรมหน่วยย่อยต่างๆ (Unit Testing)
    3. นำโปรแกรมย่อยต่างๆ มาประกอบรวมกัน (Integration)และตรวจสอบ ความถูกต้องของผลิตภัณฑ์ (Product Verification) ว่าทำงานได้อย่างถูกต้องหรือไม่
    4. การนำระบบไปใช้งานจะมีการทดสอบระบบ (System Testing)ว่าระบบ ทำงานได้อย่างถูกต้องและเป็นไปตามความต้องการของผู้ใช้หรือไม่
    5. ขั้นตอนการดำเนินงานและบำรุงรักษา จะเป็นการทบทวนเพื่อตรวจสอบ ความถูกต้อง ว่าระบบตรงตามความต้องการของผู้ใช้หรือไม่ (Revalidation)

Thanaphop Visupathomvong
at GlurGeek.Com
นักศึกษาคณะวิศวกรรมศาสตร์ มหาวิทยาลัยกรุงเทพ ชั้นปีที่ 2

Leave a Reply

© 2022 GlurGeek.Com