Agile : Waterfall Model


agile-glossary

What ‘s an AGILE ?

คือการพัฒนา Software แบบที่ไม่ต้องกลัวสภาพแวดล้อม

(Rapid and flexible response to change)

เดิมทีการพัฒนา Software มักจะเป็นขั้นตอนประมาณว่า

  1. เก็บ Requirements จากลูกค้า + ประเมินความเป็นไปได้ + ประเมิน Resource ที่ต้องใช้
  2. Design ส่วนต่างๆของ Software ผ่าน Diagram นั่นนู่นนี่
  3. Implementation หรือจะเรียกว่า Coding ก็ได้ ตาม Design
  4. Verification ทดสอบและยืนยันสิว่าทำงานถูกต้องตาม Requirement หรือไม่

ขั้นตอนที่กล่าวมา มันเหมาะสมกับ Project ที่มี Requirement ชัดเจน แน่นอนแล้ว ทำตาม Document นั่นแหละ แต่ๆๆๆ ถ้า Project คุณต้องพบเจอกับ

  • การเปลี่ยนแปลง Requirement ตลอดเวลา
  • User ไม่รู้ว่าตัวเองต้องการอะไร
  • User อยากได้ระบบที่ใช้งานได้เร็วที่สุด (ยังไม่ครบฟังก์ชันก็ได้)
  • ความสัมพันธ์ในทีมค่อนข้างแย่ (คุยกับ code และ document เท่านั้น)
  • ไม่รู้ว่าคนอื่นภายในทีมกำลังทำอะไรกันอยู่

นี่แหละ Agile คือคำตอบ

Agile เป็นรูปแบบหนึ่งในการพัฒนา Software ซึ่งคำแถลงอุดมการณ์แห่งอไจล์ (Agile Manifesto) รุปจะมี 4 ข้อเป็นหลักในการปฏิบัติดังนี้

  • ซอฟต์แวร์ที่นำไปใช้งานได้จริง มากกว่าเอกสารที่ครบถ้วนสมบูรณ์
    – เน้นความพึงพอใจของลูกค้าที่มีต่อ Software ซึ่งมีคุณภาพตั้งแต่เริ่มจนจบ
    – ส่งมอบ Software ที่ใช้งานได้จริงอย่างสม่ำเสมอต่อลูกค้า
  • การตอบรับกับการเปลี่ยนแปลง มากกว่าการทำตามแผนที่วางไว้
    ยอมรับการเปลื่ยนแปลงความต้องการของลูกค้าแม้ในช่วงท้ายของการพัฒนาเพราะ Agile เข้าใจความต้องการที่เปลี่ยนแปลงได้ตลอดตามสถานการณ์ของลูกค้าในการแข่งขันกับคู่แข่ง
  • ร่วมมือทำงานกับลูกค้า มากกว่าการต่อรองให้เป็นไปตามสัญญา
    มีการพูดคุยกับฝ่ายลูกค้ากับฝ่ายพัฒนาอย่างสม่ำเสมอเพื่อให้มั่นใจว่าสิ่งที่กำลังทำนั้นเป็นสิ่งที่ฝ่ายลูกค้าต้องการจริงๆ
  • คนและการมีปฎิสัมพันธ์กัน มากกว่าการทำตามขั้นตอนและเครื่องมือ
    การพูดคุยกันในทีม คือสิ่งสำคัญ เพื่อเป็นการถ่ายทอดข้อมูลให้กันและกัน ว่าใครทำอะไรอยู่ ปัญหาที่พบเจอในทีมคืออะไร โดยเน้นการพูดคุยซึ่งหน้าเป็นสำคัญ

มารู้จักกับ Waterfall ว่าคืออะไร

เปรียบเสมือน การก่อสร้าง ที่ต้องมีการทำงานทีละขั้นตอน ซึ่งหมายความว่าต้องทำในแต่ละขั้นตอนให้เสร็จสมบูรณ์ นักพัฒนาจึงจะเริ่มทำในขั้นตอนต่อไป และนักพัฒไม่สามารถย้อนกลับไปแก้ไขในขั้นตอนที่เสร็จไปแล้วได้ เพราะฉะนั้นการดำเนินงานต้องเป็นไปอย่างระมัดระวังเพราะถ้าหากเกิดข้อผิดพลาดจำเป็นต้องกลับไปที่จุดเริ่มต้น

ขั้นตอนการพัฒนาแบบ Waterfall Model

  1. Requirement  เป็นขั้นตอนในการเก็บความต้องการของผู้ใช้โปรแกรมว่า ผู้ใช้โปรแกรมต้องการโปรแกรมอะไร ทำงานอย่างไร
  2. Analysis เป็นขั้นตอนในการเอาความต้องการของผู้ใช้มาวิเคราะห์ถึงความเป็นไปได้และความเหมาะสม
  3. Design ออกแบบการทำงานของ Software ว่าควรเป็นไปในทิศทางใด (เลือกใช้อัลกอริทึม)
  4. Coding  ป็นขั้นตอนของการเขียนโปรแกรมตามที่เราออกแบบมา
  5. Testing เป็นขั้นตอนในการเอาโปรแกรมที่เขียนเสร็จแล้วมาทำการทดสอบหาข้อผิดพลาด
  6. Maintenance เป็นขั้นตอนในการดูแลผู้ใช้โปรแกรมว่ามีปัญหาในการใช้งานหรือไม่อย่างไร พร้อมให้คำปรึกษาและรับฟังข้อคิดเห็นเพื่อจะนำมาพัฒนาโปรแกรมในรุ่นถัดไป

ข้อดี

water fall model มีการแบ่งกระบวนการเป็น การนิยามความต้องการ การออกแบบภายนอก การออกแบบภายใน การเขียนโปรแกรม และการทดสอบ แต่ละกระบวนการถูกตัดขาดออกจากกัน ทำให้ง่ายในการควบคุมความคืบหน้าในการพัฒนา พัฒนาระบบได้ตรงตามเวลาที่กำหนด

 

ข้อเสีย

  1. ต้องรอให้การออกแบบทั้งหมดเสร็จสมบูรณ์ก่อน จึงจะเริ่มเขียนโปรแกรมได้
  2. ต้องจัดทำเอกสารมาก ทำให้สิ้นเปลืองเวลา
  3. ผู้ใช้งานต้องรอให้ระบบงานทั้งหมดเสร็จก่อน จึงจะใช้งานได้ ไม่สามารถนำระบบบางส่วนมาใช้งานก่อน
  4. เครื่องมือที่ช่วยในการพัฒนาซอฟแวร์ในปัจุบัน มักรวมหลายขั้นตอนเข้าด้วยกัน จึงไม่เหมาะกับการพัฒนาแบบ water fall model

เมื่อคุณควรใช้?

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

เนื่องจากในปัจจุบัน Waterfall มีข้อเสียเยอะทำให้เกิดข้อเสียมากมายจึงมีการแก้ปัญหานี้โดยการปรับปรุงเป็น New Waterfall Model ดังนี้

จากภาพ Diagram ด้านบนคือการทำงานแบบใหม่ของ New Waterfall Model เป็นการทำงานที่ทุกขั้นตอนเชื่อมถึงกันสามารถแก้ไขได้อยู่เรื่อยๆ เพื่อตอบสนองข้อเสียที่ Waterfall model เคยมี

โดยการทำงานในแต่ละขั้นตอนมีดังนี้

 

 

อ้างอิ้ง

http://www.base36.com/2012/12/agile-waterfall-methodologies-a-side-by-side-comparison/

http://hayaak.com/%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B9%83%E0%B8%88-agile-%E0%B9%83%E0%B8%99-%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B8%81%E0%B8%B5%E0%B9%88%E0%B8%9A%E0%B8%A3%E0%B8%A3%E0%B8%97%E0%B8%B1%E0%B8%94/

[Software Dev] Agile, Scrum คืออะไรนะ ?

at GlurGeek.Com
ชื่อกอล์ฟนะครับ เรียนวิศวะคอม ปี4 ล่ะ

Leave a Reply