YAZILIM PROJELERİ NEDEN BAŞARILI/BAŞARISIZ OLUR?

Harvard Business Okulu’nda  yapılan bir araştırmada başarılı yazılım projelerinin şu 4 özelliğe sahip oldukları görülmüştür.

Başarılı projeler iterative şekilde yazılım geliştirirler.Yani,yazılımın müşteri için önemli ve anlamlı bir parçası erken bir yayımla teslim edilir ve yazılım teslimi diğer geliştirmeler ile devam eder. Gerçek ortama yapılan yayımlar sonrası müşteriden sürekli olarak  geri beslenim alınır. Yazılım genel olarak  bir evrim süreci sonucunda oluşur.

Yapılan değişiklikler sonrası günlük tümleştirme yapılır. Tümleştirme sonucu yazılımın durumu hakkında bağlanım (regression) testleri sayesinde hızlı bir şekilde geri beslenim alınır.

Yazılım geliştirme ekibi deneyimli kişilerden oluşur.

Projenin başından itibaren yazılım mimarisine ve sistemin birbirinden bağımsız bileşenlerden oluşturulmasına dikkat edilir (MacCormack, 2001).

Yazılım projelerinin başarısızlık nedenleri  ise;Teknik, Yönetimsel, Sosyal, Kullanıcı Kaynaklı, Analiz Kaynaklı  olarak sıralanabilir.

Bu projelerin  neden başarısız oldukları aşağıda yer alan başlıklar altında şu şekilde açıklanabilir:

a.) Eksik Proje Yönetimi Metodolojisi:

Proje yönetim metodolojisinin baştan sona eksiksiz bir şekilde uygulanmaması yazılım projelerini tehlikeye sokmaktadır.

–  Proje Yöneticileri kullanıcı ihtiyaçlarını anlamamaktadırlar.

–  Proje kapsamı doğru tanımlanmamaktadır.

–  Proje değişiklikleri yeterli düzeyde yönetilmemektedir.

–  Projenin ihtiyaçları değişmektedir.

–  Proje bitiş tarihi gerçekçi değildir.

–  Kullanıcılar direnç göstermektedir.

–  Sponsorlar destek vermekten vazgeçmiştir.

– Yöneticiler en iyi uygulamalara ve alınması gereken derslere önem  vermemektedirler.

b.) Müşterinin İhtiyacını Doğru Belirleyememesi:

Gereksinim analizi  aşamasındaki   en temel madde,  müşterilerin ihtiyaçlarının mutlak bir şekilde tanımlanmasıdır. Projeye ve müşterinin gereksinimlerine ilişkin doğru soruları sormak ve analizi bu belirsizlikten kurtarıp formal bir şekilde dokümante edip, proje planı ile mühendislik altyapısına temel teşkil edecek bir yazılım gereksinim dokümanı (Software Requirements Spesification- SRS) haline getirme, ihtiyacın çerçevesinin çizilmesini sağlayacak ve müşteriye kendi ihtiyaçlarını sorgulama fırsatı verecektir.

Müşterinin ihtiyacını doğru belirlemesine yardımcı olmak için, projenin hedefi-çıktıları ve kapsamını anlamak için, proje planlama aşamasına yeteri kadar zaman ayrılmalıdır. Müşterilerin kullandığı varsayımlar göz önüne serilmeli ve son kullanıcıya yönelik faydaları ve proje risklerini değerlendirilmelidir. Beklentileri sıralamak ve tüm ekiplerin nihai ürünü açık bir şekilde anlamalarını sağlamak için müşterinin tamamlanmış yazılım gereksinim dokümanını okuması, doküman hakkında düşünmesi ve onaylaması sağlanmalıdır.Yanlış ve eksik belirlenmiş olan ihtiyaçlar yazılım yaşam döngüsünün son evrelerinde ortaya çıktığı takdirde projenin başarısızlıkla sonuçlanması kaçınılmazdır.

c.) Gereksinimlerin Sürekli Değişmesi:

Yazılım projelerinde en sık karşılaşılan problemlerden bir diğeri de ,projenin ilk fazında tanımlanan gereksinimlerin  proje devam ederken değişmesidir. Yazılım devam edip prototipler geliştirildikçe müşteriler plandaki problemleri daha net görürler ve projede gerekli değişiklik taleplerinde bulunurlar.Değişiklik talepleri analiz edilip proje kapsamına alınması için bir süreçten geçirilmeli ve müşterilerin bu sürecin farkında olmaları sağlanmalıdır. Gereksinimler analiz edilmeden ve süreç gözetmeksizin projeye dahil edilirse proje yaşam döngüsünden kopulur ve proje maliyeti giderek artarak başarısızlığa sürüklenir.Örneğin projenin %75’i tamamlanmış ve müşteri tarafından major bir değişiklik yapılması isteniyor ve değişiklik talebi analiz edilmeden kabul ediliyorsa başarısızlık kaçınılmazdır. Değişim taleplerinin tüm paydaşlar tarafından mantıklı gerekçeleriyle birlikte açık biçimde biliniyor olduğundan ve master proje planının buna bağlı olarak güncellendiğinden emin olunmalıdır.

d.) Gerçekçi  Olmayan  Zaman Tahminleri:

Müşterilerin aceleci yaklaşımları ve projeyi zamanından daha önce bitirme talepleri de projenin başarısız olma sebeplerinden biridir. Genel hata; detaylı analiz yapılmadan  projenin kapsamına ve gerekli kaynaklar netleştirilmeden zaman planına onay vermektir. Analiz  yapılmadan müşterinin talebi onaylandığı takdirde, müşteriye projenin gecikeceği (çünkü zamanında bitirmek mümkün olmayacaktır) veya projede hatalar olabileceği (zaman planına uyulmadı ve test aşamasında düzgün test edilemedi) söylenmek durumunda kalınacaktır.

e.) Proje Ekibinin Doğru Oluşturulmaması:

Yazılım projelerinin bilindiği üzere  3 temel bileşeni vardır. Bu bileşenler Goldenberg üçlüsü de denen insan-süreç-teknoloji üçgenidir. Bu üçlüden en kolay sağlananı teknolojidir.Ancak insan ve süreç,  bir firmanın gayri maddi aktifleridir ve kalitesini arttırmak zaman almaktadır.Yazılım projelerinde konvansiyonel proje yönetimine ek olarak aslında ekstra bir şey yapmaya gerek bulunmamaktadır. En önemli etmen doğru proje yöneticisi ve proje takımıdır.

Proje yöneticisi ve anahtar proje elemanları,  olaya bir bütün olarak bakıp paralel süreçleri belirleyebilecek   düzeyde olmalıdır.

f.) Üst Yönetim Desteğinin Eksikliği:

Yazılım sektöründe projelerde başarısızlık sebepleri arasındaki  ilk sırayı yönetim desteğinin eksikliği almıştır. Sağlam iş vizyonlarına sahip kuvvetli bir proje kahramanı yoksa proje teknik ve politik uçurumlara sürüklenebilmektedir. Proje yöneticileri, müşteri hizmetlerini  iyileştirerek, açık ve net iş planları ortaya koyarak, rekabetçi avantajları geliştirerek değer yaratmalıdır.

Yazılım projeleri sadece kötü hatalar, kötü şans, kötü programcılar ya da kötü test personeli yüzünden değil çoğunlukla yönetimsel nedenlerden başarısızlığa uğramaktadır.

Üst yönetimin genellikle yazılım konularına uzak oluşu ve kendi uzmanlık alanlarında  göstermiş oldukları yetkiyi (otorite) bu alanda yeteri kadar uygulayamamaları  yönetimsel sorunların başında gelmektedir.

g.) Proje Ekibi ve Müşteri Arasındaki İletişim Eksikliği:

Yazılım projeleri ,müşteri, proje paydaşları ve proje ekibi arasında şekillenen ve ilerleyen bir süreç olduğundan iletişim eksikliği projeyi bambaşka boyutlara sürükleyebilmektedir.

İletişimi sağlam kılmak için takım üyeleri ve takımlar arasında resmi veya resmi olmayan iletişim mekanizması belirlenmelidir. Resmi iletişim yazışmalarla,düzenlenen toplantılarla ve nispeten interaktif ve kişisel olmayan diğer kanallarla sağlanır.

h.) Risk Yönetimi Eksikliği:

Projenin başından sonuna kadar karşımıza çıkabilecek, gerek projenin iptal olmasını gerekse de projenin yavaşlamasına yol açacak  bütün riskler belirlenmeli ve bu riskler önem sırasına göre sıralanmalıdır. Risk Yönetim planı iyi yapılmamış bir yazılım projesinde çıkabilecek en ufak sorun, çaresizlik karşısında projeyi başarısızlığa kadar sürükleyebilecektir.

i.) Diğer Sebepler:

Etkili olmayan yazılım teknolojilerinin kullanılması, uygun olmayan yazılım araçlarının seçimi , geçmişe yönelik yazılım ölçüm verilerinin bulunmaması , etkin bir mimarinin seçilmemesi, etkin geliştirme yöntemlerinin kullanılmaması..vb sebepler de proje başarısızlığındaki  önemli etkenlerdir.

Enise Nurtaç ATEŞ

Eylül, 2011

Author: Saadet TEKEL

İstanbul Üniversitesi İşletme Fakültesi İngilizce bölümünden mezun oldu. Yüksek lisansını Marmara Üniversitesi Bankacılık ve Sigortacılık Enstitüsü-Sigortacılık Bölümünde yaptı. Yaklaşık 10 yıllık Pazarlama, Satış Destek ve Ar-Ge çalışmasından sonra bilgi teknolojileri alanına dikey geçiş yaptı. 2004 yılından itibaren çeşitli IT projelerinde iş analisti ve proje yöneticisi olarak görev aldı. 2009 yılında PMP sertifikasını alan yazarımız, PPM araçları konusunda da önemli deneyimlere sahiptir.

Bu yazıyı paylaş