Waterfall yazılım geliştirme metodolojisi hala uygulanabilir mi?


14

Deneyimlerime göre, Şelale modelinin , modern yazılım geliştirme dünyasında uygulanabilir bir yöntem olarak kabul edilecek gereksinim değişikliklerine çok esnek ve yanıt vermediği kanıtlanmış gibi görünüyor . Daha çevik, yinelemeli yöntemlerin büyüme ve kanıtlanmış sicili, herhangi birinin, proje başlangıcından ürün dağıtımına kadar çok az değişiklik olduğunu veya hiç değişiklik yapmadığını varsayan sert bir blok sürecini takip etmesi için hiçbir neden olmadığını göstermektedir.

Şelale geliştirme metodolojisi, zaman, maliyet ve kalite açısından yazılım sistemleri sunmak için hala geçerli midir?


3
Eğer yaşamamışsanız ve yaşamak istemiyorsanız, bu onu ölü yapar mı? Bunu savunduğum için değil, ama garip bir öncül gibi görünüyor.
thursdaysgeek

9
Ölü değil. Şu anki moda / trend / "kabul edilebilir" değil
Paul

2
@GrandmasterB "Ölü" demek istediğim "en iyi yol olmadığı kanıtlandı"
CFL_Jeff

3
@Rachel Lütfen yazılım geliştirme etiketini okumaya devam etmeyin. Bu, gelecekteki temizlik için ardışık bir meta etikettir .
Thomas Owens

3
Ölü değil, sadece dinleniyor. Fiyortlar için pining. ;)
SinirliWithFormsDesigner 9:12

Yanıtlar:


20

Bahsettiğiniz şelale modeli hiçbir zaman gerçek bir projede kullanılan bir süreç modeli olarak tasarlanmamıştır. Bunun yerine, bir strawman. Yazılım projelerinde var olan temel aşamaları ve faaliyetleri ve aralarındaki en temel akışı tanımlar. Yazılımın nasıl geliştirileceğinin bu kadar basitleştirilmesi hatalı bir yazılımdır ve hatta bu şekilde sunulmuştur.

Wikipedia makalesinden:

Şelale modelinin ilk resmi tanımı, Winston W. Royce tarafından 1970 tarihli bir makale olarak belirtilmiştir, ancak Royce bu makalede "şelale" terimini kullanmamıştır. Royce bu modeli kusurlu, çalışmayan bir modele örnek olarak sundu.

Tartışılan makale Büyük Yazılım Sistemlerinin Geliştirilmesini Yönetme başlığıdır . İçinde, Royce bu modeli ikinci sayfada sunar. Ancak, resimsel temsilin hemen altındaki metin okumaya devam ediyor:

Bu kavrama inanıyorum, ancak yukarıda açıklanan uygulama risklidir ve başarısızlığı davet eder.

Bunu, geliştirme aşamasının "tamamlanmasının" ardından yapılan testlerle ilgili problemler ve buradaki başarısızlıkların nasıl büyük yeniden tasarımlara ve kod değişikliklerine ve bunların maliyet ve programda nasıl büyük taşmalara yol açabileceği üzerine bir tartışma ile devam ediyor. Kağıt boyunca, orijinal modeli bir proje üzerinde gerçekten uygun olan bir modelle geliştirir. Sonunda, prototipleme, müşteri etkileşimi ve eserlerin geliştirilmesini tanıtan bir model ile sonuçlanır - sonunda 1990'ların sonunda ve 2000'lerin başında başlayan çevik hareket için kritik olacak fikirler.

Sorunuzu cevaplamak için: Sorduğunuz Şelale, zaman ve bütçeye uygun kalitede yazılım projeleri sunmak için uygun bir yöntem değildir ve asla geçerli değildir. Bununla birlikte, projelerde çalışabilen ve çalışabilen çevikliğin karşısında yatan başka plan odaklı yöntemler de vardır.


Çevik hakkında birçok makale şelaleden bahsetmek için "geleneksel yöntemler" kullanır ve bu ima edilen şelale 20. yüzyılda her zaman kullanılmıştır. Şimdi yanıldığımı biliyorum.
Ming-Tang

@ThomasOwens Bunlardan birkaçını alıntılamak ister misiniz other plan-driven methodologies that lie opposite of agile that can and do work on project?
Laiv

@Laiv Spiral modeli, çevik yaklaşımlardan daha plan odaklı olma eğilimindedir - çalışan yazılım geliştirmeden önce daha fazla planlama ve analiz yaparsınız. Cap Gemini SDM başka bir örnektir, ancak daha sonraki revizyonlar bir planla-yap-kontrol-uygula döngüsüne katkıda bulunsa da, yine de sürece dahil edilmiş iyi bir ön-planlama ve analiz miktarına sahiptir. Birçoğu bir şelalenin bazı varyasyonları olabilir, ancak yerleşik bir geri bildirim döngüsü ile. Güçlü bir etki alanı anlayışınız ve nispeten istikrarlı gereksinimleriniz varsa, çevik yöntemlerin sıkı geri bildirim döngülerine ihtiyacınız olmayabilir ve daha iyi planlayabilirsiniz.
Thomas Owens

9

İnsanlar ders kitabı şelale modelini kullanmazlar ve muhtemelen hiç kullanmazlar.

Amacı, sistem geliştirmedeki adımlar hakkında düşünmenizi sağlamak olan idealleştirilmiş, teorik bir yapıdır. Ana nokta, daha büyük değişikliklerin mümkün olduğunca erken gerçekleşmesini istemenizdir, çünkü çok fazla kod oluşturulduktan sonra büyük bir değişiklik yapmak için asla zamanınız veya paranız olmaz.

Bir süreçten daha çok bir düşünme yolu olmasına rağmen, hala çoğu - muhtemelen çoğu kuruluşun yazılım (veya evler, denizaltılar veya başka herhangi bir şey ...) inşa etmeye devam etmesinin yolu.

Gerçek dünyada, aşamalar arasında tam olarak kesinti yoktur ve bazen küçük alt projeler için önceki aşamalara geri dönersiniz. Metodolojinin size söylediği şey "bunlara izin verilmez" değildir. Size söylediği şey "bu şeyler size para ve / veya zaman maliyeti" dir - bu yüzden bundan kaçınmaya çalışın.

Agile Snobs (TM) için burunlarını "eski moda" geliştiricilere ve tuhaf, işlenemeyen şelale metodolojisine bakmak iyi ve iyidir, ancak konunun gerçeği de Agile'ın her derde deva olmadığıdır. Bazı projeler Agile kullanılarak inşa edilemez ve Agile olduklarını düşünen birçok takım aslında sadece özensiz ve organize değildir.

Metodoloji mesele değildir. Mesele, ne yaptığınızı ve bunu neden bu şekilde yaptığınızı düşünmek ve en kısa sürede müşteriye en yüksek değeri elde etmektir.


Bana göre "insanlar" konusunda çok farklı bir deneyim yaşadınız. Son 30 yıl boyunca, ders kitabı şelale yöntemini kullanan (ve hala kullanan) bir dizi şirkette çalıştım. Şaşırtıcı olmayan bir şekilde, işe yaramıyor.
David Arno

@DavidArno Şimdiye kadar "vahşi doğada" ders kitabına bir yazılım bağlamında en yakın gördüğüm, tren geçişini kontrol eden bir şirket oluşturma yazılımındaydı. Buradaki motivasyon, bir hatanın sonucu olarak birisinin ölmesini istemiyordu. Bir hata nedeniyle başarısız olduğunu bulmak için milyonlarca şey inşa etmek istemediğiniz gömülü programlama yapan yerlerde de olabileceğini hayal ediyorum. Bu durumlarda bile, Şelalenin mükemmellik ile elde edilen bir uygulamadan daha ideal olduğunu düşünüyorum. Belirttiğiniz gibi - sonuçlar kaçınılmaz olarak bir düzeyde başarısızlıktır.
Joel Brown

8

Çoğu zaman çeviklikle karşılaştırılan efsanevi şelale süreci hiç var olmadı ve bu nedenle ölü olarak kabul edilemez. Gerçek şelale süreçleri hala canlı ve iyi durumdadır ve kullanıcı beklentilerini karşılayan bütçe yazılımları zamanında teslim etmede mükemmeldir.


5
"Efsanevi" şelale süreci ile "gerçek" arasındaki farkın ne olduğundan emin değilim. Lütfen bunu açıklar mısınız?
CFL_Jeff

6
Genellikle Agile taraftarları tarafından açıklanan Şelale süreci bir strawman en.wikipedia.org/wiki/Straw_man
jfrankcarr

11
Cevabınızda Agile taraftarlarının işe yaramayan, ancak düzgün bir Şelale olmayan bir saman adam süreci yarattığını açıklarsanız, bu daha iyi bir cevap olacaktır.
Robert Harvey

4
-1 ifadesi için, "Onlar teslim etmede mükemmeller ..." Gerçek şu ki, bu bir yıkama. Tüm yazılım yöntemleri gibi, bazen işe yarar, bazen işe yaramaz. Her ikisini de gerçek şelale yönteminde gördüm.
riwalk

2
Bu cevaba [atıf gerekli] demeliyim. Ve sağlanana kadar -1. Özellikle "kullanıcı beklentilerini karşılayan bütçe yazılımları zamanında teslim etmede mükemmel" CHAOS raporu sizinle aynı fikirde değil.
Malfist

5

Belki ne elde ettiğinizi sormanın daha iyi bir yolu, "ne zaman daha az yinelemeli ve daha resmi ne kadar iyi?"

Durumun böyle olduğu durumlar vardır:

  • Gereksinimler değişmediğinde.

  • Yeni gereksinimleri karşılarken, orijinal gereksinimlerin% 100'üne ulaşmaktan daha az önemlidir.

  • Tüm teknoloji bileşenleri olgun ve iyi anlaşıldığında.

Bir anlamda sizi çevik olmaya iten şeyin tam tersini yapabilirsiniz.

Her yerde çok az teknik uygulanabilir. Çok azının faydası yok.


1
Dünyada "aznitwrative" veya "morenformal" nedir?
Aaronaught

1
@Aaronaught - iPhone'da şişman başparmaklarla yazılan "daha az yinelemeli" ve "daha resmi". :-)
MathAttack

1
Bu ön koşullardan birini bile yerine getirmiş bir projede hiç çalışmadım. :)
Theodor

3

Evet, çok canlı, bugün kullanılan " V modeli " daha yaygın .

Her iki durumda da, Agile'nin sahip olduğu sorun, çözümün neredeyse hiç bitmemesidir, müşteri değişiklik talep etmeye devam edebilir ve geliştirme, bunları tekrar tekrar çözmeye devam edecektir. Zaman ve malzeme maliyetine dayalı bir proje için bu çok işe yarar. Sabit bir maliyeti olan bir proje için değil.

Bu sabit maliyetli projeler için, müşteri neredeyse her zaman önceden tanımlanmış kilometre taşlarının ilerleme göstermesini beklemektedir, ancak bunlar çalışma kodundan ziyade resmi yazılı çeşittir. Bu tür müşteriler için, yazılı spesifikasyonlar, yazılım geliştirmenin ikincil bir değerlendirme olduğu proje haline gelir (iyi tanımlanmış bir projeniz varsa, yazılımın geliştirilmesi kolay olmalıdır). Bu şirketler aynı zamanda ucuz, dış kaynaklı geliştirme kaynaklarından yoğun olarak yararlanan şirketlerdir.

Dolayısıyla, sabit bir paranız veya zamanınız varsa, gereksinimlerin değişmesini beklemeyin veya herhangi bir gereksinimin değiştirilmesine izin verilmiyorsa ve güçlü bir yazılı belge seti sağlamanız bekleniyorsa, o zaman şelale modelleri yalnızca mantıklı olmak.

Çevikliği bu projelerin ortasında geliştirme yapmak için kullanabilirsiniz, ancak yine de şartnamelerin gereksinimlerden yaratıldığı bir rampa aşaması ve yazılımın yerinde kurulduğu ve test edildiği bir rampa aşaması var. Agile bu vakalara iyi yanıt vermiyor.


Çevik, kapsamın da sabit olmaması şartıyla, sabit bir para veya zaman potu ile çok iyi çalışabilir. Diğer nokta, müşteri / yüklenicinin belirli bir geliştirme metodolojisi (çevik veya şelale) ile tutarlı olmak için sözleşme türünü (T&M, sabit maliyet veya aradaki bir şey) seçebilmesidir - önceden belirlenmemiştir.
DNA

1

Kime? Karşılaştığım yöneticilerin çoğu hala programlama için Şelale Yazılım Geliştirme Sürecini kullanıyor ve yukarı seviyeler kolay planlama için hoşlanıyor gibi görünüyor.

Pratik olarak, çok az geliştiricinin işe yaradığına veya hatta geçerli olduğuna inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.