16 Kasım 2011

Yazılım Projesi Yönetim Uygulamaları: Başarıya Karşı Hata

(Software Project Management Practices: Failure Versus Success adlı makalenin özetidir.)
 
1995-2004 yılları arasındaki 250 geniş kapsamlı yazılım projesi incelenmiştir. Bu projelerden kimisi başarılı olmuş, kimisi planlanan sürede tamamlanamamış, kimisi planlanan bütçeyi aşmış ve kimisi de tamamen iptal olmuş projelerdir. İnceleme neticesinde başlıca 6 ortak problem saptanmıştır. İlginç nokta ise bu altı probleme teknik personelin değil proje yönetimindeki eksikliklerin sebep olduğu ortaya çıkmıştır. Bu ortak problemleri iyi ele alan projeler başarılı olmuş, en az birinde yetersiz kalan projeler ise beklenen başarıyı gösterememişlerdir. Modelleme yöntemleriyle ilgili olarak, hem şelale modeli hem de sarmal model dahil edilmiştir. Ancak yeni çevik modelleri dahil edilmemiştir, çünkü 1000 işlev puanından büyük uygulamalarda nadiren kullanılır.

Artemis Views, Microsoft Project, Primera ve Project Manager’s Workbench proje yönetim araçlarına örnektir. Bu araçlar genel amaçlı kullanılır ve projeye göre özelleştirme içermezler. Before You Leap, CHECKPOINT, Constructibe Cost Model(COCOMO) II, CostXpert, KnowledgePlan, Parametric Review of Information for Costing and Evaluation – Software (PRICE-S), Software Estimating Model(SEER-SEM), ve Software Life Cycle Management(SLIM) ise yazılım ölçüm araçlarına örnektir. Bu proje yönetim araçları ve yazılım ölçüm araçları ilk olarak ayrı ayrı ortaya çıksa da artık teknik açıdan birlikte katılım sağlamaktadırlar. Çoğu proje yönetim ve maliyet ölçüm araçları uygulama dili için seçilen dili baz alarak ölçümü gerçekleştirir. 

Proje Planlama; işin bölümlere ayrılıp grup üyeleri arasında iş bölümü yapılmasını içerir. Başarılı proje planlaması için;
·         Otomatikleşmiş proje planlama araçları kullanmak
·         Tam bir iş döküm yapısını geliştirmek
·         Kritik yol analizlerini yürütmek
·         Taşeron ve uluslararası takımları düşünmek
·         Değişen gereksinimleri göz önünde bulundurmak
·         Proje süresince olabilecek kiralama ve devir işlemlerini hesaba katmak
·         Detaylı gereksinim çözümleme, inceleme, test ve onarma için yeterli vakit ayırmak
gereklidir.  

Proje Maliyet Ölçümü, oldukça karmaşık bir işlem olduğu için muhakkak otomatikleşmiş bir tahmin aracı kullanılması gerekir. Başarılı tahminlerin bazı ortak noktaları; 
·         Otomatikleşmiş araç kullanılması
·         Somut ölçümler kullanılması
·         Tarihteki benzer projelerin ölçümlerinden yararlanılması
·         Zamanlama ve masraf tahminleriyle birlikte kalite tahminlerinin de yapılması
·         Yeni ve değişen gereksinimlerin tahmine dâhil edilmesi 

Proje Ölçümü, için kullanılmakta olan lines of code ölçüsü yerine artık function point ölçüsü tüm dünyada yaygınlaşmaktadır. Gereksinim, tasarım, kalite güvence vs. gibi proje kesimlerinde geçerli olmaması, Visual Basic gibi satır sayma için etkin araçları bulunmayan diller bulunması ve bir projenin birçok dil ile birlikte kullanılarak gerçekleştirilmesi gibi sebeplerle lines of code birimi yerine function point kullanılması daha makuldür. 10.000 işlevsel puan alanında bulunan projeler şunları içermelidir.
·         Birikmiş çaba
·         Birikmiş maliyetler
·         Geliştirim üretkenliği
·         Gereksinim değişikliklerinin hacmi ve oranı 

Kilometre Taşlarını İzleme; Bir proje için kilometre taşı (milestone) olarak tabir edilen aşamaların yapılandırılması, izlenmesi ve sonuçlarının düzgünce rapor edilmesi gerekir. Eğer ciddi hatalar rapor edilmişse önce bunlar düzeltilmeli, sonra aşama tamamlanmalıdır. Genel olarak şunlar örnek verilebilir; 
·         Gereksinimlerin gözden geçirilmesi 
·         Proje planının gözden geçirilmesi 
·         Maliyet ve kalite tahmininin gözden geçirilmesi 
·         Harici tasarım, veri tabanı tasarımı ve dahili tasarımların gözden geçirilmesi 
·         Kalite planı ve sınama planının gözden geçirilmesi 
·         Belgelendirme planının gözden geçirilmesi 
·         Teslim/kurulum planının gözden geçirilmesi 
·         Eğitim planının gözden geçirilmesi 
·         Kod denetimi 
·         Her bir geliştirim test safhası 
·         Müşteri kabul testi
Başarısız projelerde bu aşamalar, sadece takvimdeki tarihlerden ibarettir. Etkinlikler, bitmeden bitti gösterilir. Başarılı projelerde bir aşamanın başarısız olması durumunda güçlü ve ani bir tepki oluşur. Hemen düzeltme planları, görevler atanır ve olabildiğince hızlı bir biçimde aşama düzgün tamamlanır. 

Değişiklik Yönetimi; Projenin çözümleme ve tasarım aşamalarında gereksinimler değişmektedir ve  başlangıç noktasıyla karşılaştırıldığında değişimler %50 lere varabilir . Bu değişimlerin başarılı bir şekilde yönetilmesi şu işlemleri içerir;
·         Aşağı yönde değişiklikleri minimize etmek için resmi prototiplerin kullanımı
·         Döngüsel geliştirme stratejileri kullanmak
·         Müşteri/geliştirici müşterek şekilde değişim kontrol kurulu
·         Tüm değişim taleplerinin somut bir gözden geçirilmesi
·         Büyük değişiklikler için zamanlama ve masraf tahminlerinin yeniden gözden geçirilmesi
·         Çapraz referans kabiliyeti olan otomatik değişim yönetim araçlarının kullanılması. 

Kalite Kontrolü; Başarılı projeleri başarısızlar arasından sıyıran en önemli etken ise etkili bir kalite kontrolüdür. Çünkü büyük yazılım projelerinde hataları bulmak ve düzeltmek en masraflı iştir. Başarılı kalite kontrolü hem arıza bulma hem de arıza önleme aktivitelerini içerir. Başarılı kalite kontrol aktiviteleri şunları içermelidir.
          Kusur Önleme:
·         Gereksinimleri bir araya getirmek için JAD
·         Resmi tasarım metodları
·         Yapısal kodlama metodları
·         Resmi test planları
·         Resmi test durumu yapısı
          
          Kusur Kaldırma:
·         Gereksinimlerin kontrolü
·         Tasarımın kontrolü
·         Döküman kontrolleri
·         Test planı ve test durumu kontrolleri
·         Kusur onarım kontrolü
·         Yazılım kalite güvence gözden geçirmesi
·         Birim test
·         Bileşen testi
·         Yeni fonksiyon testi
·         Regresyon testi
·         Performans testi
·         Sistem testi
·         Kabul testi

Kaynak: Software Project Management Practices: Failure Versus Success  
                  Capers Jones
                  Software Productivity Research LLC

2 yorum: