Pazartesi, Aralık 03, 2007

Başarılı Projelerin Ortak Özellikleri

BAŞARILI PROJELERİN ORTAK ÖZELLİKLERİ

Harvard Business School tarafından yapılan ve yaklaşık 2 yıl süren bir araştırma [MacCormack01] sonucu başarılı yazılım projelerinin aşağıdaki 4 özelliğe sahip oldukları görülmüştür.

1)Başarılı projeler yinelemeli (iterative) şekilde yazılım geliştirirler. Yazılımın müşteri için anlamlı bir parçası erken bir yayımla(release) teslim edilir ve yazılım teslimi diğer yinelemeler(iterations) ile devam eder. Müşteriden yayımlar(release) sonrası sürekli geri beslenim alınır. Yazılım bir evrim süreci sonucunda oluşur.

2)Yapılan değişiklikler sonrası günlük tümleştirme (daily integration) yapılır. Tümleştirme sonucu yazılımın durumu hakkında bağlanım(regression) testleri sayesinde hızlı bir şekilde geri beslenim alınır.

3)Yazılım geliştirme ekibi deneyimlidir.

4)Projenin başından itibaren yazılım mimarisine ve sistemin birbirinden bağımsız bileşenlerden oluşturulmasına dikkat edilir.

Buna benzer bir araştırmada Bell Labs tarafından yapılmış ve aşağıdaki özellikler saptanmıştır.

1)Yinelemeli(iterative) yazılım geliştirme ve yinelemelerin sonunda müşterinin geri beslenimi.
2)Basit organizasyon yapısı, rol tanımlarının gereksizce çoğaltılmaması.
3)Ekip içi iletişim.

Gördüğünüz gibi bu özellikler yinelemeli (iterative) yazılım süreçlerinin özelliklerine uyuyor. Özellikle çevik yazım süreçlerinin prensipleri ile birebir uygunluk sözkonuşu.

İlk araştırma sonuçlarının birinci maddesinde yinelemeli(iterative) şekilde yazılım geliştirmeden ve yazılımın çalışan bir parçasını erken teslim etmenin(early release) yararından bahsediliyor. Yazılımda çıkan hatalara hangi faktörlerin etki ettiği konusunda yapılan başka bir araştırmada birinci maddeyi doğrular nitelikte. Sonuçlara göre yazılımın %20 lik bölümünü erken teslim eden projenin ,yazılımın %40 'lık bölümünü daha geç teslim eden projeye oranla 10 faktör az hata içerdiği ortaya çıkıyor.

İkinci maddede günlük tümleştirme(daily integration) ve bağlanım(regression) testlerinden bahsediliyor. Hata faktörleri için yapılan araştırma bu pratiğin hataları 13 faktör azalttığını gösteriyor. 1 ve 2 numaralı özelliklerin projelere yüzde 50 ye yakın verimlilik kazandırdığı aynı araştırmada belirtiliyor.

Üçüncü madde ise insan kaynağının önemini vurguluyor. Çevik yazılım süreçleri bireyler ve ekip hayatına verdiği önemle bu özelliğe sahip durumda...

Dördüncü madde ise XP deki yüksek kalite hedefini ve tekrar tasarım(refactoring) ile yazılım tasarımının sürekli iyileştirilmesi pratiğini akla getiririyor

Burada yinelemeli(iteratıve) yazılım süreçlerinin başarılı olmasının nedenlerini kısaca bakalım.

1)Yinelemeli(iterative ) yazılım geliştirme süreçlerini kullanmak daha az risklidir.
2)Riskler önceden tespit edilebilir ve çözülebilir.
3)Proje süresince meydana gelebilecek değişikliklere çabuk tepki verebilir.
4)Projenin durumu hakkında daha fazla bilgi sağlar ve tekrarlar arttıkça tahminler
daha sağlıklı, kesin hale gelir.
5)Hatalar daha çabuk bulunur, kalite seviyesi yüksektir.
6)Sonuçta üretilen yazılım müşteri isteklerini daha iyi şekilde karşılar.
7)Erken ve sürekli süreç iyileştirmesine olanak verir.
8)İletişim ve koordinasyonu zorunlu kılar.
9)“Gördüğüm zaman anlarım” anlayışına ters düşmez.
Müşteriler ne istediklerini anlamak için bazen yazılımı görmeleri gerekir.
10)Tekrar kullanılabilirlik (reuse) için elverişli ortam yaratır.
11)Proje yöneticileri yerinde taktik kararlar alabilirler, insan kaynağı daha yerinde kullanılır.
12)Ekip üyeleri tekrarlar boyunca hatalarından dersler alır ve kendilerini geliştirir.

Standish grubunun 1998 de 23000 projeyi kapsayan yaptığı bir araştırmada [Standish98] projelerin başarısının en çok aşağıdaki 5 faktöre bağlı olduğu sonucuna varıyor. Faktörlerin ne kadar etkili olduğu yanlarında verilmiştir.

Kullanıcı/müşteri katılımı 20
Üst Yönetici desteği 15
Açık iş hedefleri(business objectives) 15
Deneyimli proje yöneticisi 15
Kısa aralıklı kilometre taşları 15

Bu faktörlerle çevik yazılım süreçleri arasında paralellik kurmak gene mümkün. Çevik yazılım süreçlerinde kullanıcı/müşteri yazılım geliştirme ekibinin aktif bir üyesi olarak çalışıyor ve sürekli geri beslenim sağlıyor. Yapılan kısa aralıklı teslimler ve demolar sayesinde üst yönetici desteği yüksek seviyede tutuluyor. Her yineleme plani(iteration plan) ve değişen öncelikler projenin gidişatının iş hedefleri doğrultusunda ilerlemesini sağlıyor. Son olarak kısa aralıklı yayımlar(release) ve sabit süreli yinelemeler(timeboxed iteration) kısa aralıklı kilometre taşları hedefini gerçekleştiriyor.

Yazar : Cenk Çivici
Kaynaklar :
Craig Larman, Agile and Iterative Development : A Manager's guide , ISBN: 0-131-1115-8
Jim Johnson et al. 1998. Chaos: A recipe for success, 1998. Published Report . The Standish Group
MacCormack, A. 2001. "Product-Developmen t Practices that work." MIT Sloan Management Review 42(2)

Hiç yorum yok: