Yazılım Maliyet Tahmineleme Tecrübeleri


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; Univera’da çalıştığım dönemde 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.
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.
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;
yazilim_maliyet
Şimdi bu yönteme bakıyorum, o zamanki “beni” anlamaya çalışıyorum. Sanırım tecrübesizliği, teknik olarak alt etmenin bir arayışı (Yazılım dünyasında böyle tiplere rastlamak mümkün). Sakın yanlış anlaşılmasın, yazılım yaşam döngüsündeki süreçleri ve methodları sonuna kadar savunurum, ancak hangi firmada olursanız olun, “hayatın da bir gerçeği var”.

Edindiğim tecrübeler şunu gösteriyor, iyi bir yazılım maliyet tahminlemesi için aşağıdaki adımlar temel alınmalı;

  • Ö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Ç
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: