วิธีการพัฒนาซอฟต์แวร์ Waterfall ยังคงทำงานได้หรือไม่?


14

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

วิธีการพัฒนาน้ำตกยังคงใช้งานได้กับการส่งมอบระบบซอฟต์แวร์ที่เกี่ยวกับเวลาต้นทุนและคุณภาพหรือไม่?


3
ดังนั้นหากคุณยังไม่เคยสัมผัสและไม่อยากสัมผัสกับมันนั่นทำให้มันตาย? ไม่ใช่ว่าฉันสนับสนุนมัน แต่ดูเหมือนว่าเป็นเรื่องแปลก
วันพฤหัสบดีที่

9
มันยังไม่ตาย มันไม่ใช่กระแสนิยม / แนวโน้ม / "ยอมรับ" ในปัจจุบัน
พอล

2
@GrandmasterB โดย "ตาย" ฉันหมายถึง "พิสูจน์แล้วว่าเป็นวิธีที่ไม่ดีที่สุด"
CFL_Jeff

3
@Rachel โปรดอย่าอ่านแท็กการพัฒนาซอฟต์แวร์ต่อไป มันเป็นเมตาแท็กที่กำหนดไว้สำหรับการทำความสะอาดในอนาคต
โธมัสโอเวนส์

3
มันยังไม่ตายมันแค่พักผ่อน ไพน์ฟยอร์ด ;)
FrustratedWithFormsDesigner

คำตอบ:


20

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

จากบทความ Wikipedia:

คำอธิบายอย่างเป็นทางการครั้งแรกของแบบจำลองน้ำตกมักถูกอ้างถึงเป็นบทความ 1970 โดย Winston W. Royce แม้ว่า Royce ไม่ได้ใช้คำว่า "waterfall" ในบทความนี้ Royce นำเสนอโมเดลนี้เป็นตัวอย่างของโมเดลที่ไม่สมบูรณ์และไม่ทำงาน

กระดาษที่กล่าวถึงคือเรื่องการจัดการ Developement ของระบบซอฟต์แวร์ขนาดใหญ่ ในนั้น Royce นำเสนอโมเดลนั้นในหน้าสอง อย่างไรก็ตามข้อความที่อยู่ด้านล่างภาพแทนจะปรากฏขึ้นเพื่ออ่าน:

ฉันเชื่อในแนวคิดนี้ แต่การใช้งานที่อธิบายไว้ข้างต้นมีความเสี่ยงและเชิญชวนให้เกิดความล้มเหลว

เขาติดตามสิ่งนี้ด้วยการอภิปรายปัญหาที่เกิดขึ้นกับการทดสอบหลังจาก "เสร็จสิ้น" ของขั้นตอนการพัฒนาและความล้มเหลวที่นี่สามารถนำไปสู่การออกแบบที่สำคัญและการเปลี่ยนแปลงรหัสและวิธีการเหล่านี้สามารถนำไปสู่ เขาได้ปรับปรุงรูปแบบดั้งเดิมให้เป็นรูปแบบที่ใช้ได้จริงในโครงการ ในที่สุดเขาก็จบลงด้วยแบบจำลองที่แนะนำการสร้างต้นแบบการโต้ตอบกับลูกค้าและการปรับแต่งสิ่งประดิษฐ์ต่างๆ - ความคิดที่ในที่สุดก็จะกลายเป็นสิ่งสำคัญต่อการเคลื่อนไหวแบบเปรียวที่เริ่มขึ้นในปลายปี 1990 และต้นยุค 2000

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


บทความจำนวนมากเกี่ยวกับการใช้ "วิธีการแบบดั้งเดิม" เพื่อพูดถึงน้ำตกว่องไวและนั่นก็หมายถึงน้ำตกที่ใช้ในศตวรรษที่ 20 ตลอดเวลา ตอนนี้ฉันรู้ว่าฉันผิด
Ming-Tang

@ThomasOwens คุณคิดว่าจะอ้างถึงสิ่งเหล่านี้other plan-driven methodologies that lie opposite of agile that can and do work on projectหรือไม่?
Laiv

@Laiv โมเดล Spiral มีแนวโน้มที่จะเป็นแผนขับเคลื่อนมากกว่าแนวทางแบบเปรียว - คุณทำการวางแผนและวิเคราะห์เพิ่มเติมก่อนที่จะพัฒนาซอฟต์แวร์ที่ใช้งานได้ Cap Gemini SDM เป็นอีกตัวอย่างหนึ่งถึงแม้ว่าการแก้ไขในภายหลังจะเพิ่มในวงจรการตรวจสอบการกระทำ แต่อีกครั้งมันมีการวางแผนล่วงหน้าและการวิเคราะห์ในกระบวนการ หลายคนมีแนวโน้มที่จะเป็นรูปแบบของน้ำตก แต่มีห่วงข้อเสนอแนะบางอย่างในตัวหากคุณมีความเข้าใจในโดเมนที่แข็งแกร่งและมีความต้องการค่อนข้างคงที่
Thomas Owens

9

ผู้คนไม่ได้ใช้โมเดลน้ำตกหนังสือเรียนและอาจไม่มีเลย

มันเป็นโครงสร้างในอุดมคติของทฤษฎีที่มีจุดประสงค์เพื่อให้คุณคิดเกี่ยวกับขั้นตอนในการพัฒนาระบบ ประเด็นหลักคือคุณต้องการให้การเปลี่ยนแปลงครั้งใหญ่เกิดขึ้นเร็วที่สุดเท่าที่จะเป็นไปได้เพราะคุณไม่มีเวลาหรือเงินที่จะทำการเปลี่ยนแปลงครั้งใหญ่เมื่อมีการสร้างโค้ดจำนวนมาก

แม้ว่าความจริงแล้วมันเป็นวิธีคิดมากกว่ากระบวนการ แต่ก็ยังเป็นวิธีที่หลาย ๆ คน - องค์กรส่วนใหญ่อาจสร้างซอฟต์แวร์ (หรือบ้านหรือเรือดำน้ำหรืออะไรก็ตาม ... )

ในโลกแห่งความเป็นจริงคุณไม่มีการตัดระหว่างเฟสอย่างเข้มงวดและบางครั้งคุณย้อนกลับไปที่เฟสก่อนสำหรับโครงการย่อยขนาดเล็ก สิ่งที่วิธีการบอกคุณนั้นไม่ใช่ "สิ่งเหล่านี้ไม่ได้รับอนุญาต" สิ่งที่บอกคุณคือ "สิ่งเหล่านี้ทำให้คุณต้องเสียเงินและ / หรือเวลา" - ดังนั้นพยายามหลีกเลี่ยงสิ่งนั้นในอนาคต

ทุกอย่างดีและดีสำหรับ Agile Snobs (TM) เพื่อดูจมูกของพวกเขาที่นักพัฒนา "สมัยเก่า" และวิธีการน้ำตกที่แปลกตาและใช้งานไม่ได้ของพวกเขา แต่ข้อเท็จจริงของเรื่องนี้ก็คือ บางโครงการไม่สามารถสร้างได้โดยใช้ Agile และทีมงานจำนวนมากที่คิดว่าพวกเขาเปรียวจริง ๆ แล้วเป็นเพียงเลอะเทอะและไม่มีการรวบรวมกัน

วิธีการไม่ได้เป็นจุด ประเด็นคือต้องคิดเกี่ยวกับสิ่งที่คุณทำและเหตุผลที่คุณทำเช่นนั้น - และเพื่อให้ได้รับคุณค่าสูงสุดให้กับลูกค้าในเวลาที่สั้นที่สุด


เห็นได้ชัดว่าคุณมีประสบการณ์ "คน" ที่แตกต่างกันมากสำหรับฉัน ในช่วง 30 ปีที่ผ่านมาฉันได้ทำงานใน บริษัท ต่าง ๆ ที่ใช้วิธีการน้ำตกหนังสือเรียน (และยังคงใช้) น่าแปลกใจที่มันไม่ทำงาน
David Arno

@DavidArno สิ่งที่ใกล้เคียงที่สุดที่ฉันเคยเห็น "ในป่า" กับตำราเรียน Waterfall ในบริบทซอฟต์แวร์คือซอฟต์แวร์สร้าง บริษัท ที่ควบคุมการเปลี่ยนรถไฟ แรงจูงใจที่ไม่มีคนตายอย่างแท้จริงอันเป็นผลมาจากข้อผิดพลาด ฉันคิดว่ามันอาจเกิดขึ้นได้ในสถานที่ที่มีการเขียนโปรแกรมแบบฝังตัวซึ่งคุณไม่ต้องการสร้างบางสิ่งบางอย่างเพื่อค้นหาว่ามันล้มเหลวเนื่องจากข้อผิดพลาด ฉันมักจะคิดว่าแม้ในกรณีเหล่านี้ Waterfall เป็นอุดมคติในอุดมคติมากกว่าการฝึกฝนที่ทำได้อย่างสมบูรณ์แบบ ตามที่คุณชี้ - ผลลัพธ์ล้มเหลวอย่างหลีกเลี่ยงไม่ได้ในบางระดับ
Joel Brown

8

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


5
ไม่แน่ใจว่าความแตกต่างระหว่างกระบวนการน้ำตก "ที่เป็นตำนาน" กับ "ของจริง" อย่างใดอย่างหนึ่ง คุณช่วยอธิบายเรื่องนี้ได้ไหม
CFL_Jeff

6
บ่อยครั้งที่กระบวนการน้ำตกที่อธิบายโดยผู้เสนอ Agile เป็นชาว
ประมง

11
นี่จะเป็นคำตอบที่ดีกว่าถ้าคุณอธิบายในคำตอบของคุณว่าผู้เสนอแบบ Agile สร้างกระบวนการฟางคนที่ไม่ทำงาน แต่ไม่ใช่น้ำตกอย่างถูกต้อง
Robert Harvey

4
-1 สำหรับข้อความว่า "พวกเขายอดเยี่ยมในการส่ง ... " ความจริงก็คือมันเป็นการล้าง เช่นเดียวกับวิธีการซอฟต์แวร์ทั้งหมดบางครั้งก็ใช้งานได้บางครั้งก็ใช้ไม่ได้ ฉันเคยเห็นทั้งสองกรณีของวิธีน้ำตกจริง
riwalk

2
ฉันจะต้องพูดคำตอบนี้ และ -1 จนกว่าจะมีให้ โดยเฉพาะอย่างยิ่ง "ยอดเยี่ยมในการส่งมอบตรงเวลาในซอฟต์แวร์งบประมาณที่ตรงตามความคาดหวังของผู้ใช้" รายงาน CHAOS ไม่เห็นด้วยกับคุณ
Malfist

5

บางทีวิธีที่ดีกว่าในการถามว่าคุณกำลังทำอะไรอยู่ "เมื่อไรจะเกิดซ้ำน้อยกว่าและดีกว่าทางการกว่า"

มีสถานการณ์ที่เป็นกรณีนี้:

  • เมื่อความต้องการจะไม่เปลี่ยนแปลง

  • เมื่อปฏิบัติตามข้อกำหนดใหม่มีความสำคัญน้อยกว่าการตี 100% ของข้อกำหนดเดิม

  • เมื่อทุกองค์ประกอบเทคโนโลยีเป็นผู้ใหญ่และเข้าใจดี

ในความรู้สึกคุณสามารถใช้สิ่งที่ตรงกันข้ามกับสิ่งที่ผลักดันให้คุณมีความคล่องตัว

มีเทคนิคน้อยมากที่สามารถใช้ได้ทุกที่ น้อยมากที่ไม่มีประโยชน์


1
อะไรในโลกคือ "lessnitwrative" หรือ "morenformal"?
Aaronaught

1
@Aaraught - "ทำซ้ำน้อยลง" และ "เป็นทางการมากขึ้น" พิมพ์โดยนิ้วหัวแม่มือไขมันบน iPhone :-)
MathAttack

1
ฉันไม่เคยทำงานในโครงการที่ทำตามข้อกำหนดเบื้องต้นแม้แต่ข้อเดียว :)
Theodor

3

ใช่มันมีชีวิตชีวามาก แต่วันนี้มันเป็น " รุ่น V " ทั่วไปที่ใช้

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

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

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

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


เปรียวสามารถทำงานได้ดีกับหม้อเงินหรือเวลาคงที่โดยที่ขอบเขตนั้นไม่ได้รับการแก้ไข อีกจุดหนึ่งคือลูกค้า / ผู้รับเหมาสามารถเลือกประเภทของสัญญา (T&M ค่าใช้จ่ายคงที่หรือบางอย่างในระหว่าง) เพื่อให้สอดคล้องกับวิธีการพัฒนาเฉพาะ (เปรียวหรือน้ำตก) - มันไม่ได้กำหนดไว้ล่วงหน้า
DNA

1

ถึงใคร? ผู้จัดการส่วนใหญ่ที่ฉันจัดการยังคงใช้ Waterfall Software Dev Process สำหรับการจัดตารางเวลาและระดับที่สูงขึ้นดูเหมือนจะชอบสำหรับการตั้งเวลาได้ง่าย

ในทางปฏิบัตินักพัฒนาน้อยมากที่ฉันรู้ว่าเชื่อว่ามันใช้งานได้หรือแม้กระทั่งถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.