Yazılım modellerinden Waterfall ve Agile neye göre kullanılır?

Gereksinimler bastan net bir sekilde belli ve degisme ihtimali dusuktur, stakeholder yazilimi bitmis ve tum gereksinimler tamamlanmis sekilde belirtilen tarihte istiyordur, gereksinim dokumanlari, kullanim dokumanlari vs dahil her sey baslangic tarihinde netlestirilmistir -> waterfall

Piyasa degisikligine gore gereksinimler degisebilir, bazi gereksinimler duruma ve ihtiyaca gore oncelik kazanir, dokumantasyondan ziyade ikili iletisim ve dinamik analize gore uygulama sekillenecektir, stakeholder a uygulama parca parca calisabilir iterasyonlarla teslim edilecektir -> agile
 
Waterfall çok eski bir proje yönetim metodolojisidir, sırası ile iş analizi yapılır, tasarım çıkarılır, kullanılacak mimarinin planı oluşturulur, sonra kodlamaya geçilir vb. Ancak bir adım bitmeden diğer adıma geçilmez, yani diyelim ki sistemler tasarlanır, sınıf diyagramları, akışlar, senaryolar vb. planlanma aşaması bitmeden kesinlikle kodlamaya geçilmez. Kodlamaya geçildiğinde elinizde ürünün komple planı mevcut olur. Kodlama tamamen bitirilmeden mesela test aşamasına geçilmez, ürün ortaya çıktıktan sonra komple testler yapılır, ürün canlıya çıkarılır.

Agile hızlı bir şekilde uyum sağlama üzerine kuruludur. Aylar sürebilecek bir planlama, modelleme vb. yoktur mesela, x yazılımı yapılsın diye az bir iş analizi ile yola çıkarsın, bir yandan kodlanırken bir yandan ihtiyaçlar ortaya çıkar, müşterilerin beklentileri listelenir, sabit bir mimari ya da plan olmadığı için ihtiyaçlar doğrultusunda yazılımda değişiklikler yapılabilir. Öncelik olarak temel işlevleri ile çalışan bir ürün müşteriye sunulur, waterfalldaki gibi ürünü komple bitirdik durumu yoktur, ilk versiyon çıktıktan sonra şu özellik eklenecek, bu modül eklenecek vs. diye geliştirmenin daha sonraki fazlarına geçilir, bir yandan analizler devam eder. Doğabilecek değişikliklere kolay uyum sağlanır, mesela waterfallda en başta tespit edilemeyen bir müşteri ihtiyacını aciliyetine göre hemen geliştirmesini yapıp ürüne ekleyebilirsiniz, waterfallda analizde ne varsa o ürün çıkar, değişiklik maliyeti çok yüksektir.

Agile olayını her yer düzgün beceremez, piyasada saldım çayıra mevlam kayıra şeklinde yürütülen pek çok proje böyledir, sorarsanız biz çok çevik ekibiz her koşula uyum sağlarız vb. diye maval okurlar. Agile yazılımda ürünün takibi, analizin devamlılığı büyük sorumluluktur, ekibin çok uyumlu çalışması gerekir, ürünler ürün yöneticilerine devredilip sorumluluklar paylaştırılır, müşteri ile sürekli iletişim halinde olup istek/ihtiyaçları tespit edip uygulamak, şu özellik şu kadar sürede çıkar, bu özelliği ekleyelim mi eklemeyelim mi, bir yandan rakiplerimizin ürününü inceleyelim, bir yandan yakın gelecekte ortaya çıkabilecek ihtiyaçları önceden tahmin edelim vesaire vesaire kolayca altından kalkılır bir iş değildir. Yazılım geliştirmesi de önceden mimari planlaması çok az olduğu için yetenekli ve uyumlu bireylerin beraber iyi bir şekilde çalışması ile halledilir, kısa aralıklarla ürün sürekli geliştirilerek ne yaptık ne aşamadayız vb. kontrol edilir, bir yandan sürekli olarak yeni modüller test edilir vesaire vesaire. Bunları düzgün yapabilirse bir ekip gerçekten çok kısa sürede çok güzel ürün geliştirir ve geliştirmeye devam eder, müşteri ile etkileşim içinde olunduğundan tam da onların istediği şey ortaya çıkar ve memnuniyet sağlanır, yani aynı anda analiz, ürün geliştirme, testler, ürünün satışı, bakımı her şey aynı anda yürütülmüş olur. Kıytırık yerlerde bu işlem daha çok "hallederiz abi" düzeyinde kalır, ürünün şurası çalışmıyor, hallederiz abi, şurasını bitirip müşteriye sunum yapacaktık e bug çözmekten ürünü geliştiremedik, hallederiz abi, abi şu işten anlayan tek çalışan da işten çıktı şimdi burasını kim geliştirecek, hallederiz abi.. diye gider.
 
Son düzenleme:
Waterfall çok eski bir proje yönetim metodolojisidir, sırası ile iş analizi yapılır, tasarım çıkarılır, kullanılacak mimarinin planı oluşturulur, sonra kodlamaya geçilir vb. Ancak bir adım bitmeden diğer adıma geçilmez, yani diyelim ki sistemler tasarlanır, sınıf diyagramları, akışlar, senaryolar vb. planlanma aşaması bitmeden kesinlikle kodlamaya geçilmez. Kodlamaya geçildiğinde elinizde ürünün komple planı mevcut olur. Kodlama tamamen bitirilmeden mesela test aşamasına geçilmez, ürün ortaya çıktıktan sonra komple testler yapılır, ürün canlıya çıkarılır.

Agile hızlı bir şekilde uyum sağlama üzerine kuruludur. Aylar sürebilecek bir planlama, modelleme vb. yoktur mesela, x yazılımı yapılsın diye az bir iş analizi ile yola çıkarsın, bir yandan kodlanırken bir yandan ihtiyaçlar ortaya çıkar, müşterilerin beklentileri listelenir, sabit bir mimari ya da plan olmadığı için ihtiyaçlar doğrultusunda yazılımda değişiklikler yapılabilir. Öncelik olarak temel işlevleri ile çalışan bir ürün müşteriye sunulur, waterfalldaki gibi ürünü komple bitirdik durumu yoktur, ilk versiyon çıktıktan sonra şu özellik eklenecek, bu modül eklenecek vs. diye geliştirmenin daha sonraki fazlarına geçilir, bir yandan analizler devam eder. Doğabilecek değişikliklere kolay uyum sağlanır, mesela waterfallda en başta tespit edilemeyen bir müşteri ihtiyacını aciliyetine göre hemen geliştirmesini yapıp ürüne ekleyebilirsiniz, waterfallda analizde ne varsa o ürün çıkar, değişiklik maliyeti çok yüksektir.

Agile olayını her yer düzgün beceremez, piyasada saldım çayıra mevlam kayıra şeklinde yürütülen pek çok proje böyledir, sorarsanız biz çok çevik ekibiz her koşula uyum sağlarız vb. diye maval okurlar. Agile yazılımda ürünün takibi, analizin devamlılığı büyük sorumluluktur, ekibin çok uyumlu çalışması gerekir, ürünler ürün yöneticilerine devredilip sorumluluklar paylaştırılır, müşteri ile sürekli iletişim halinde olup istek/ihtiyaçları tespit edip uygulamak, şu özellik şu kadar sürede çıkar, bu özelliği ekleyelim mi eklemeyelim mi, bir yandan rakiplerimizin ürününü inceleyelim, bir yandan yakın gelecekte ortaya çıkabilecek ihtiyaçları önceden tahmin edelim vesaire vesaire kolayca altından kalkılır bir iş değildir. Yazılım geliştirmesi de önceden mimari planlaması çok az olduğu için yetenekli ve uyumlu bireylerin beraber iyi bir şekilde çalışması ile halledilir, kısa aralıklarla ürün sürekli geliştirilerek ne yaptık ne aşamadayız vb. kontrol edilir, bir yandan sürekli olarak yeni modüller test edilir vesaire vesaire. Bunları düzgün yapabilirse bir ekip gerçekten çok kısa sürede çok güzel ürün geliştirir ve geliştirmeye devam eder, müşteri ile etkileşim içinde olunduğundan tam da onların istediği şey ortaya çıkar ve memnuniyet sağlanır, yani aynı anda analiz, ürün geliştirme, testler, ürünün satışı, bakımı her şey aynı anda yürütülmüş olur. Kıytırık yerlerde bu işlem daha çok "hallederiz abi" düzeyinde kalır, ürünün şurası çalışmıyor, hallederiz abi, şurasını bitirip müşteriye sunum yapacaktık e bug çözmekten ürünü geliştiremedik, hallederiz abi, abi şu işten anlayan tek çalışan da işten çıktı şimdi burasını kim geliştirecek, hallederiz abi.. diye gider.
Allah razı olsun çok güzel açıklamışsınız.
 

Yeni konular

Geri
Yukarı