Waterfall Model Nedir? Özellikleri ve Avantajları | SDLC

Osman Doğan
4 min readDec 1, 2022

Geliştirlen ilk SDLC modellerinden bir tanesi olan ve artık klasik hale gelen Waterfall Model nedir? Waterfall geliştirme modelinin özellikleri, avantajları ve dezavantajları neler? Gelin hep birlikte görelim.

Waterfall Model Nedir?

70’li yıllarda Winston Royce tarafından ortaya konan WaterFall Modeli, yazılım geliştirmeyi önceden tanımlanmış aşamalara bölen ve bunların ardışık bir şekilde icra edilmesini gerektiren bir yazılım geliştirme modelidir.

WaterFall modelinde her aşama, belirli bir aktiviteyi gerçekleştirmek ve tamamlamak için dizayn edilmiştir. Buna göre her aşama bir sonrakine geçilmeden önce muhakkak olarak tamamlanmalı, ondan sonra sonraki aşamaya geçilmelidir.

Girişte de belirttiğimiz üzere, Waterfall Model, artık klasik hale gelmiş, ilk SDLC modellerinden bir tanesidir. Anlaşılması ve uygulaması oldukça basit olan bu model, ilk çıktığı yıllarda oldukça yaygın bir şekilde kullanılmış, fakat günümüzde pek de tercih edilmeyen bir yazılım geliştirme modeli haline gelmiştir.

Waterfall model ortalama 5 aşamadan meydana gelir. Bu aşamaları, şu şekilde sıralamak mümkün;

  • Gereksinim Tespiti ve Analizi (Requirement Gathering and Analysis)
  • Tasarım Aşaması (Design)
  • Uygulama ve Birim Testi Aşaması (Implementation and Unit Testing)
  • İntegrasyon ve Sistem Testi Aşaması (Integration and System Testing)
  • Yayım ve Bakım Aşaması (Deployment and Maintenance)

Bu aşamaları parçalara bölmek ve daha küçük parçalar halinde icra etmek mümkündür. Gelin şimdi hep birlikte tüm aşamaları yakından görelim.

Gereksinim Tespiti ve Analizi

Waterfall modelinin ilk aşaması olan Gereksinim Tespiti ve Analizi, müşterinin gereksinimlerini anlamak ve bunları iyi bir şekilde analiz edip belgelemek için vardır. Bu aşamada, müşteri ve geliştirici, yazılımın tüm fonksiyonlarını ve arayüz gereksinimlerini net bir şekilde tespit etmek için birlikte çalışır. Süreç sonunda Software Requirement Specification (SRS) isimli bir belge oluşturulur. Bu belge süreç sonunda, müşteri ve yazılımcı arasındaki anlaşmanın temelini oluşturur. Daha sonra oluşacak herhangi bir anlaşmazlık, bu belgeye bakılarak çözülebilir.

Tasarım

Tasarım aşamasının amacı, SRS’de yer alan gereksinimleri, bir programlama dili ile kodlanabilecek bir hale getirmektir. Tasarım aşaması, genel yazılım mimarisi ile birlikte üst düzey ve ayrıntılı bir tasarımın oluşturulduğu aşamadır. Bu aşamada gerçekleştirilen tüm aktiviteler Software Design Document (SDD) isimli bir döküman ile belgelenir.

Uygulama ve Unit Test

Uygulama aşaması, yazılım tasarımının, uygun bir programlama dili kullanılarak kaynak koda çevirildiği aşadır. Böylece tasarlanan her modül yazılımcılar tarafıdından kodlanır. Bu aşamadaki bir diğer işlem ise kodlanan birimlerin test edilmesidir. Birim testlerinin amacı, her bir modülün düzgün çalışıp çalışmadığını kontrol etmektir.

İntegrasyon ve Sistem Testi

Uygulama aşamasında geliştirilen ve tek tek test edilen birimler, aşamalı olarak bir sisteme entegre edilir ve test edilir. Tüm modüller sisteme başarılı bir şekilde entegre edilip, test edildikten sonra, sorunsuz bir şekilde çalışan, amaca uygun eksiksiz bir yazılım elde edilmiş olunur ve onun üzerinden sistem testleri yapılır. Sistem testi genellikle üç farklı test faaliyetinden oluşur.

  • Alpha Testi: Alpa testi, geliştirme ekibi tarafından gerçekleştirilen sistem testidir.
  • Beta Testi: Belirlenen kısıtlı bir müşteri grubu tarafından gerçekleştirilen testtir.
  • Kabul Testi: Geliştirilen yazılımın, belirlenen gereksinimleri karşılayıp karşılamadığını görmek isteyen ve buna göre red veya kabul etmesi mümkün olan müşteri tarafından test edilmesidir.

Yayım ve Bakım Aşaması

Ürün veya uygulama kabul edildikten sonra, canlıya çıkar, gerekli platformlarda dağıtılır. Ürün canlıya alındıktan sonra, iyileştirmek, güncellemek ve geliştirmek için amacıyla icra edilen bakım aşaması başlar. Bu aşamada, son kullanıcı tarafından görülen, eksiklikleri veya hataları gidermek için yamalar yayınlanır.

Tüm bu aşamalar, şelale misali bir akış içerisinde gerçekleştirilir. Bir sonraki aşama, ancak bir önceki aşama için belirlenen hedeflere ulaşıldıktan sonra başlatılır. İşte bu nedenle bu modele “Şelale Modeli” adı verilir. Şelale modelinde genellikle çakışmalar yaşanmaz.

Waterfall Modeli Nerelerde Uygulanır?

Her proje, yapısı itibari ile farklıdır ve farklı özellikler ve dinamikler taşır. Bu sebeple, bazı projeler için Waterfall modeli uygun olmayabilir. Peki Waterfall modeli ne tür projelerde uygulanır?

  • Projenin iyi belirlenmiş, açık ve sabit gereksinimleri varsa,
  • Geliştirilecek ürün sabitse ve sonradan ihtiyaç duyulabilecek değişimlere kapalıysa
  • Ürünü destekleyecek kaynaklar belli ve hazır hale getirildiyse
  • Proje küçük çaplı, kısa bir sürede tamamlanabilecek bir yapıdaysa
  • Geliştirilecek olan ürün, geliştirme süresince ortaya çıkabilecek teknoloji ve değişimlerden etkilenmeyecekse

Waterfall modeli ile geliştirilebilir.

Waterfall Modelinin Avantajları ve Dezavantajları

Waterfall modelinin sunduğu avantajlar şu şekilde sıralanabilir;

  • Basit, anlaşılır ve kullanımının kolay olması
  • Kolay bir şekilde yönetilebilmesi
  • Tüm aşamaların açık bir şekilde tanımlanmış olması, belirsizliğin ortadan kaldırılması,
  • Aşamaların birer birer işlenip, sırayla tamamlanması.
  • Yapılacak görevlerin net bir şekilde anlaşılması
  • Süreç ve sonuçların iyi bir şekilde belgelenmesi
  • Gereksinimlerin belli olduğu küçük projeler için iyi bir performans sağlaması

Yukarıda da bahsettiğimiz üzere Waterfall metodu günümüzde pek kullanılan bir SDLC modeli değildir. Sebebi, günümüz dinamiklerine uygun olmayan bazı dezavantajlara sahip olmasıdır. Bu dezavantajları şu şekilde sıralamak mümkündür;

  • Yüksek miktardaki risk ve belirsizlik
  • Sürecin son aşamalarına kadar çalışan bir yazılımın elde edilememesi
  • Gereksinimleri iyi bir şekilde tanımlanamayan, karmaşık ve nesne yönelimli projeler için yetersiz olması
  • Büyük çaplı projeler için oldukça verimsiz olması
  • Değişen gereksinimleri karşılayamaması
  • Süreç sonunda, ürünü etkileyecek herhangi bir değişimin tüm emekleri boşa çıkarma riski
  • Ürün ortaya çıkana kadar müşteriden feedback alınmaması

Yukarıda da ifade ettiğimiz üzere Waterfall modeli, büyük çaptaki projeler için oldukça yetersizdir. zira bir hatta iki yıl gibi oldukça uzun bir geliştirme sürecinde, teknolojik kaynaklar, altyapılar hatta sosyolojik bir takım değişimler yaşanabilir. Bu da süreç sonunda ortaya çıkan ürünü işlevsiz veya akim bir hale getirebilir.

--

--