Yazılım Geliştirme ve Prototipler
Yazılım geliştiren organizasyonlar için şüphesiz en zor noktalardan bir tanesi, kullanıcı gereklerinin tam olarak belirlenmesidir. Çoğu zaman müşteriye kullanıp, üzerinde değerlendirme yapabileceği bir prototip sağlanana kadar, müşterinin gerçek gereksinimlerini ortaya çıkarmak zor olmaktadır. Kalite Derneği’nin yazılım anketlerinde, gereksinim belirleme tekniklerinden en fazla kullanılanın müşteri iletişim kanalları (yüz yüze görüşmeler, e-left_articlesa, çağrı merkezi, vb.) olduğu belirlenmiştir. Müşteri iletişim kanallarının yanında genelde benzer ürünleri inceleme veya kullanım ortamında gözlem yapma tekniğinin kullanılmakta olduğu tespit edilmiştir.
Teknikler arasında prototip geliştirme, ankete katılan firmaların yaklaşık yarısı tarafından tercih edilmektedir. Benim iş hayatımda gözlemlediğim önemli noktalardan bir tanesi, büyük ölçekli projelerde yazılım geliştirme süreci içerisinde gereklerin sürekli değişmesi ve/veya yeni gereklerin eklenmesidir. Özellikle yeni teknolojilerin geliştirileceği araştırma-geliştirme projelerinde kullanıcı (müşteri) projenin başında gereklerin tamamını belirleyememektedir. Bu konuda benim önerim, kullanıcının önüne bir prototip sunulana kadar, projenin başında sadece temel gereklerin belirlenmesine çalışılması, detay gereklerin belirlenmesinin ise kullanıcı ile prototipin tanışmasına bırakılmasıdır.
Eğer geliştirme süreci içerisinde katı bir şelale modeli uygulanıyor ise, müşteriye sunulan ilk versiyon ürünün ortaya çıkarılması süresince kaynakların yaklaşık % 90’ı harcanmış olur. Yazılım mühendisliği alanının etkili isimlerinden Winston Royce 1970’lerde, ilk versiyon yazılım ürününün gerekleri sağlayamayacağını, ikinci versiyonun müşteriye teslim edilebilecek düzeyde olabileceğini savunmuştur. Royce’un önerisi, ilk versiyon ürün için projenin kaynaklarının yaklaşık %25’inin ayrılmasıdır. Günümüzden 30 sene önce dile getirilmiş bu önerinin benzeri, Fred Brooks tarafından, ‘ilkini atacağınızı planlayın çünkü atacaksınız’ diyerek dile getirilmiştir.
Unutmamak lazım ki, yazılım geliştirmekteki temel amacımız gerçek ihtiyaçları karşılamak ve gerçek problemleri çözmektir. Bunun tek yolu, ihtiyaç sahipleri ile iletişimin yoğun olmasıdır. Eğer gerçek gereksinimleri ortaya çıkaramaz isek, ortaya çıkardığımız kaliteli yazılım ürünümüz yanlış ve/veya gereksiz çözümler sunar. Günümüzde popülerliği sürekli artmakta olan yeni yazılım geliştirme modellerinde de ‘müşterinin süreçte etkili biçimde yer alması’ öne çıkmaktadır.
Temel olarak, iki tip yazılım prototipi mevcuttur, ilki ‘At-Gitsin’ diğeri ise ‘Evrimsel’dir. At-Gitsin prototipler, kullanıcı gereksinimlerinin açık olmadığı durumlarda hızlıca geliştirilerek kullanılırlar. Temel amaç müşteri gereklerini açığa çıkarabilmektir. Ortaya çıkacak ürünün kalitesi hakkında kaygılanmamak, herhangi bir doküman yazmadan, kaynakları mümkün olduğunca az kullanarak, ortaya müşterinin kolayca değerlendirebileceği ürünler çıkarmak esastır. Müşteri gereklerinin belirlenmesi ile artırımsal metotlara dönerek geliştirme sürecini devam ettirmek uygun olacaktır. Eğer müşterinin temel gerekleri belli ve detay gerekler belirsiz ise ‘Evrimsel’ prototip kullanılabilir. Bu prototip bir kenara atılmayarak, üzerine sürekli yeni fonksiyonel birimler eklenerek geliştirilir. Prototip kullanımında temel sorunlar, kullanıcının tatminsizliği ve kaliteden verilen büyük ödündür. Müşterinin sürekli yeni gerekler öne sürerek proje başarısını olumsuz etkilememesi için, süreç başlangıcında, bitiş kriterlerinin tam olarak belirlenmesi gerekmektedir.
Hayati öneme sahip kritik sistemlerin (uçak yazılımı, diyaliz cihazı yazılımı vb.) geliştirilmesinde prototiplerin kullanılması pek doğru olmayacaktır, çünkü prototipler genelde birçok eksiklikler içermektedirler. Bu da kötü ve istenmeyen sonuçlara yol açabilir.
Görüşlerinizi bana e-posta yolu ile iletebilirsiniz.
Yanıt Bırak