Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:)
Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir.
Örneğin; bizim firmada eğer bir planın tam ortasındaysak, 1-2 saatlik kodlama işi olsa bile, planda tamponumuz varsa, 1 A/G'den daha az A/G verilmemesi gerekir. Neden mi?;
- Bu iş için öncelikle ihtiyaç analizi girilecek, uniVIP (Univera Versiyon ve İstek Planlama Programı) kaydı oluşturulacak,
- Maliyet çalışması yapılacak,
- uhiSYS'de (Univera Hata ve İş Yönetim/Analiz Sistemi) iş kaydı açılıp, konu developer arkadaşa gönderilecek,
- Developer arkadaş tamamlayacak ve teste delege edecek,
- Test, ilgili relase'i üretip, set çıkartıp, test edecek, işi kapatacak,
- Destek departmanı dağıtımı yapacak.
Neyse ki kendi bünyemizde XP(eXtereme Programming) ve yarı TDD (Test Driven Development) içeren bir süreç işletmeye çalışıyoruz. Ekipler birbirine yakın ve süreç hızlı işliyor.
Yine başka bir örnekte; ürünün/projenin teslim aşamasında, pilotta (beta test) olduğumuzu varsayalım. Bir takım süreçsel eksikliklerden dolayı, iş kritik olduğu için gece-gündüz geliştirme yaptığımız da çok olmuştur. O anda kimseye süreç anlatamazsınız (sakın denemeyin). Hedef odaklı işi bitirmek ve projeyi tamamlamak zorundasınız. Fakat şirkete dönüldüğünde bu ekstra maliyet plana mutlaka yansıtılmalıdır. En azından biz yanısıtıyoruz.
Yazılım maliyet tahminleme ile ilgili literatürde bir çok yönteme rastlarsınız. Bunlardan sıkça duyulanı COCOMO (COnstructive COst MOdel) yaklaşımıdır. Ben de kendi şirketimdeyken ve daha geçnken:) bu yöntemlerin türevlerini uygulama gafletinde bulunmuştum:) Gerçek bir senaryonun örneği aşağıda;
- Öncelikle yazılım iş ihtiyacı/kapsamı net şekilde ortaya konulmalıdır.
- Tahmini yapacak kişinin sistemin altyapısını ve tasarımını bilmesi gerekmektedir (Tecrübesi ve sorumluluğu kapsamında).
- Tahmini yapacak kişinin kaynakları iyi tanıması gerekmektedir (Tecrübesi ve sorumluluğu kapsamında).
- Mutlaka risk hesabının işin içine katılarak, maliyete eklenmesi gerekmektedir (Özellikle başka sistemler ile entegrasyon varsa, %25-30 risk koyduğumu bilirim).
- Yapılan maliyet çalışması; Analiz, Kodlama/Tasarım, Test, Dokümantasyon, Dağıtım (Duruma göre eklenir) safhaları için ayrıca detaylandırılmalıdır (İşin büyüklüğüne göre proje yönetimi gerekebilir).
Bu durumda dahi mutlaka sapmalar olacaktır. Lakin, zamanla edinilen tecrübelerle ve süreçlerin iyileştirilmesiyle, gerçeğe yakın yazılım maliyet tahminlemeleri yapılabilir.
Deniz KILINÇ
Hiç yorum yok:
Yorum Gönder