Yazılım geliştirme süreçlerinin anlaşılması için pek çok yazılı ve resimleştirme yöntemiyle anlatım yapılmıştır. Bunlardan en ünlüsü muhtemelen aşağıdakidir: (İnternette "What customers want" olarak aratınca gelen resim önerileri.)
Yandaki anlatımda müşteri, proje lideri, mühendis, yazılım mühendisi ve danışmanın rolleri de resmedilmiş oluyor.
Yazılım geliştirme süreçlerindeki ve sonrasında beklenen ürün başarısının neden ortaya koyulamadığını anlatmanın muhtemelen en iyi yolu inşaat mühendisliğinden örnek vermek olsa gerek. Ne de olsa hepimizin ortak en iyi bildiği konu.
Örneklerle gidersek;
30 katlı bir inşaat için proje planı hazırlayan firma 24 ay süre verdiğinde müşteri karşı teklif olarak fiyat ve diğer maliyet konularında tüm pazarlıkları yaptıktan sonra projenin 12 ayda teslimini talep eder.
Genelde de 13 veya 14 ay için anlaşılır.
Bazı yazılım şirketleri atanmış kaynak ayırdığını söylesede aynı kaynağı birden fazla projede kullanma hesabı yaptığı için biraz daha uzun tarih de verebiliyor.
Genelde projelere başlandıktan sonra şu şekilde devam eder:
13. ayın sonunda proje müşteriye eksikleriyle beraber teslim edilir ve bir kaç ay müşteriden ses çıkmaz. Yada 9. ayın sonunda biz hemen satış yapıp katları kullanmak istiyoruz dendiği için proje 10. kat inşa helindeyken kullanıma açılır.
Sonra da örneğin 3. kat'ta düğün salonu yapmak için kolon kesme istekleri gelir.
Sonrasında yeni farkına varılan yada değişen ihtiyaçların projeye eklenmesi istendiğinde artık yukarı çıkılamadığı için ana binanın yanına gece kondular yerleştirilmeye başlanır.
Yukarı çıkılabilen fakat hayal edilenden farklı sonuç için örnek sanatsal çalışma: (Kowloon Walled City'den esinlenilmiştir.)
Image by Nivanh Chanthara
Şehir "anarşi şehri" olarak anılınıyor ve güneş görmeyecek şekilde yapılaşması en belirgin özelliği. Bu özelliğiyle de yazılım projelerinin gün yüzü göremeyecek geleceklerine benzetilebilir.
Kowloon Walled City'den diğer ilham alınabilecek sanatsal çalışmalar.
Mühendislik tekniklerinin olgunluğu
Bazı kaynaklarda yazılım projelerindeki hatalar inşaat projeleri ile örneklendiriliyor. Bunun nedeni yüksek ihtimal inşaat mühendisliğinin 100 yıldan fazla * bir geçmişi olmasına rağmen yazılım mühendisliğinin daha olgunlaşmamış bir 50 yıl ? ** kadar geçmişi vardır.Bir diğer konuda yazılım projelerinin 1/3'ü batak projedir.*** Yani inşaat projesi olsaydılar yıkılmışlardı. Yada en azından çatlamış ve korkuyla içinde oturulur durumda olurlardı.
Aşağdaki ilgili linkte*** kabaca projelerin ne kadarının başarılı olduğunun yanında projenin kimin gözünde ne kadar başarılı olduğu istatistikleri veriliyor. Burda belkide başarı oranlarından daha önemli olan başarı algısındaki farklılıklar.
Yine yukarıdaki inşaat örneğinden gidecek olursak 30 katlı inşaatı zamanında bitiriyorsunuz ama konut olarak geliştirdiğiniz projede evlerin içinde banyo yapmayı unutuyorsunuz. Bunu başarısızlık olarak kabul etmeyip her kata birer kabin yerleştirerek probleme çözüm önerebiliyorsunuz.
Uygulanabilirliğinin kanıtı olarak da Sovyetler döneminde uygulandığını ve herkesin evi olduğu için çok mutlu olduğunu öne sürebilirsiniz.
İnşaat projeleri yazılım geliştirme projesindeki teknik konuları anlayamayanlar için referans olarak alınabilir. Burada unutulmaması gereken problemdeki her bir gereksinim birer teknik konudur.
* History of construction
** History of software engineering
*** Software development success rates