1995-2004 yılları arasındaki yaklaşık 250 büyük yazılım projesinin incelenmesi ilginç benzerlikleri gösterdi. Maliyet ve çizelge tahminlerini başarıyla gerçekleştiren büyük projeleri geç kalan, bütçeyi aşan veya tamamlanmadan iptal edilen projelerle karşılaştırırken, altı ortak sorun gözlemlendi: zayıf proje planlaması, yetersiz maliyet tahmini, zayıf ölçümler, zayıf kilometre taşı takibi, zayıf değişim kontrolü ve düşük kalite kontrol. Buna karşılık, başarılı yazılım projeleri bu alanların altısında ortalamanın üzerinde olma eğilimindedir. Bu altı sorun alanının belki de en ilginç yanı, hepsinin teknik personelden çok proje yönetimiyle ilişkili olmasıdır. İki çalışma hipotezi ortaya çıktı:
Araştırma dahilindeki 250 projeden;
Proje planlaması ifadesi, iş kırılım yapılarının oluşturulmasını ve ardından görevlerin zaman içinde ekip üyelerine dağıtılmasını kapsar. Proje planlaması, Gantt çizelgeleri, PERT çizelgeleri veya benzerleri dahil olmak üzere çeşitli zaman çizelgelerinin ve kritik yolların oluşturulmasını içerir.
2004 yıllarında büyük yazılım projeleri için başarılı planlama şunları içerir:
Başarı projeler planlamayı iyi yapıyor, başarısız projelerde ise çoğunlukla planlama hataları var.
En yaygın planlama hataları:
Başarılı projelerde planlama süreci araçlar yardımcı ile otomatize edilmiş durumda. Piyasada 50 den fazla ticari proje planlama aracı var. Başarılı projeler en az bir tanesini kullanıyor.
Büyük yazılım projelerinde maliyet tahmini elle yapılamayacak kadar komplex. Piyasadaki 75’den fazla yazılım maliyet tahmini programını varlığı da bu durumu doğruluyor. Bunlardan en bilinenleri: COCOMO II, CostXpert, Knowledge-Plan, PRICE-S, SEER-SEM, SLIM
Başarılı projelerde bu programlardan en az bir tanesini kullanıyor. Birden fazla programın kullanılması nadir değil.
Büyük sistemler için başarılı maliyet tahmini, aşağıdakilerin kullanılmasını içerir:
Projedeki verimlik oranın abatılarak tahmin edilmesi ya da küçük bir proje ile büyük bir projedeki verimin aynı olacağını yanılgısı en sık yapılan hatalardan.
Başarılı büyük projeler çoğunlukla üretkenlik ve kalite geçmiş verilerini kaydetmek için yazılım ölçüm programlarına sahip şirketlerden çıkar. Böylece herhangi bir yeni proje, çizelgelerin, maliyetlerin, kalitenin ve diğer önemli faktörlerin geçerliliğini değerlendirmek için benzer projelerle karşılaştırılabilir. 10.000 işlev puanı alanındaki projeler için en faydalı ölçümler aşağıdakilerin ölçümlerini içerir:
Geliştirme verimliliği genelde 2 farklı şekilde ölçülüyor.
Bazı devlet kurumları ve savunma sanayi hala eski Lines-of-code metrikini kullanıyor. Bu metrik kullanımı tehlikeli çünkü sadece yazılım aşamasını değerlendiriyor. Planlama, isterler, dökümantasyon, proje yönetimi, kalite güvencesi gibi alanları yok sayıyor. Satır sayısı ve proje arasındaki ilişki kullanılan dile bağlı. Çok büyük projelerden birdan fazla yazılım dili kullanılıyor. 12 farklı yazılım dili içeren projeler mevcut.
Başarılı projelerde hataların yakalanma ve giderilme oranları da takip ediliyor. Başarılı projelerde hataların %95’i geliştirme aşamasında yakalanıyor. Bu sektör ortalaması %85’den sadece 10 puan daha yüksek.
Projedeki büyük takvim gecikmeleri genelde test aşamasında aşırı hatalar yüzünden ortaya çıkıyor. Büyük projelerdeki yetersiz kalite kontrolü takvim gecikmelerinin ve maliyet artışlarının ana sebebi.
Proje yönetimi, kilometre taşlarını oluşturmaktan, bunların tamamlanmasını izlemekten ve kilometre taşlarının başarıyla tamamlanıp tamamlanmadığını veya sorunlarla karşılaşıldığında doğru bir şekilde raporlamaktan sorumludur. Ciddi sorunlarla karşılaşıldığında, kilometre taşının tamamlandığını bildirmeden önce sorunları düzeltmek gerekir. Büyük projelerde bazı kilometre taşları:
Başarılı projelerin bir farklı da projede bir problem yaşandığında ya da takvimde bir gecikme görüldüğünde, düzeltici aksiyonları güçlü ve derhal bir şekilde yerine getirir. Başarısız projelerde ise hatalar görmezden gelip ötelenir.
10000 işlev puanın sahip projelerde analiz ve tasarım aşamasında her ay isterlerin %1 ile %3’ü arası değişiyor, ekleniyor veya siliniyor. Bu durum proje başında ve sonunda işlev puanlarını hesaplanması ile bulundu. Proje başında 10000 işlev puan olan bir proje tasarım aşaması bittikten sonra 12000 işlev puana çıkabiliyor. Toplamda %20 lik bir proje büyümesi demek bu. Arada geçen süresini 10 ay olduğu varsayılırsa her ay proje %2 oranında büyümüş olmalı. Projedeki bu büyümeye bağlı olarak planların ve tahminlerin güncellenmesi gerekiyor.
Başarılı bir değişiklik kontrol yönetimi aşağıdakileri içeriyor:
Gerçek dünyada isterlerin dondurmak pek olası bir durum değil. Bu yüzden değişikliğe hazır olmalıyız.
Etkili yazılım kalite kontrolü, başarılı projeleri gecikmelerden ve felaketlerden ayıran en önemli tek faktördür. Bunun nedeni, büyük sistemler için hata bulma ve düzeltmenin en pahalı maliyet unsuru olması ve diğer faaliyetlerden daha fazla zaman almasıdır.
Başarılı kalite kontrol, hem hata önleme hem de hata giderme faaliyetlerini içerir. Hata önleme ifadesi, ilk etapta bir hata veya kusur oluşturma olasılığını en aza indiren tüm faaliyetleri içerir. Kusur giderme ifadesi, her türlü teslimatta hata veya kusur bulabilen tüm faaliyetleri içerir.
Hata Önleme:
Hata Giderme:
Hata önleme ve hata giderme faliyetlerindeki değişim proje sonucundaki hata oranında ciddi bir fark yaratıyor.
Başarılı bir projede ortalama her işlev puanı 4.0 hata içeriyor ve hata önleme faliyetlerinde %95’i müşteriye teslim edilmeden yakalanıyor. Bir başka deyişle, teslim edilen yazılımda her işlev puanına karşılık 0.2 hata var ya da toplamda 2000 hata var diyebiliriz. Bunların sadece %10u (200 hata) kritik seviyede oluyor.
Başarısız bir projede ortalama her işlev puanı 7.0 hata içeriyor ve hata önleme faliyetlerinde sadece %80’i müşteriye teslim edilmeden yakalanıyor. Bir başka deyişle, teslim edilen yazılımda her işlev puanına karşılık 1.4 hata var ya da toplamda 14000 hata var diyebiliriz. Bunların sadece %20u (2800 hata) kritik seviyede oluyor.
Yukarıdaki 2 örnekten görülebileceği üzere 2 proje arasında kritik hatlarda 14 kat fark var. Bu farklı oluşturan asıl neden başarılı projelerde resmi tasarım ve kod denetimi aşamalarının hata yakalamada %65 verimli olması.
Başarısız projelerde genelde tasarım ve kodlama denetimi aşamları pas geçilip hata bulmada sadece test aşamasına güveniliyor. Bu durum aşağıdaki 3 probleme neden oluyor:
Büyük yazılım sistemlerini başarısızlıkla sonuçlanmasını birçok yolu vardır. Projeyi başarılı sonuçlandırmanın ise sadece birkaç yolu var. Proje yönetiminin, projeleri başarıya veya başarısızlığa götüren ana faktör olması ilginçtir.
Kalite kontrolünde beceriksiz ve proje yönetimi aşamalarında yetersiz olan büyük yazılım projeleri, genellikle ya tamamen başarısızlığa ya da büyük miktarda maliyet aşımına neden olur.
Başarıya götüren en önemli yazılım geliştirme uygulamaları arasında, proje başlamadan önce planlama ve tahminde bulunma, proje sırasında değişen gereksinimleri absorbe etme ve hataları veya kusurları başarılı bir şekilde en aza indirme sayılabilir.
Başarılı projeler her zaman şu kritik faaliyetlerde başarılı olur: planlama, tahmin, değişiklik kontrolü ve kalite kontrolü. Buna karşılık, geç veya başarısız bir şekilde yürütülen projelerin kusurlu veya iyimser planları, değişiklikleri öngörmeyen veya değişimi iyi idare edemeyen tahminleri vardır.