YAZILIM GELİŞTİRME PROJE MODELLERİ:

Yazılım ihtiyaçlarının giderek büyümesi, yazılım geliştirme projelerinde kullanılmak üzere metodolojilerin gelişimini de ortaya çıkartmıştır. Yazılım teknolojilerinin gelişmesi ile var olan model ve metodolojiler de gelişmekte ve yeni modeller ortaya çıkmaktadır. Uygun yazılım geliştirme modelleri kullanılması, yazılımın daha emniyetli, doğru, anlaşılabilir,  test edilebilir ve bakım yapılabilir olarak geliştirilmesinde çok önemli rol oynar. Daha emniyetli yazılımların daha kısa sürede, daha az bütçeyle ve en önemlisi daha az hatayla geliştirilmesi için sürekli yeni teknolojiler ve modeller bulunmaya çalışılmaktadır.

Yazılım sürecince kullanılacak modelin seçimi, proje yönetiminin en önemli kararlarından biridir. (Kettunen ve Laanti, 2005). “Bir prosesin olması hiç olmamasından iyidir ve birçok durumda hangi prosesin kullanıldığı nasıl yerine getirildiğinden daha az önemlidir ” (Natarajan, 2004) . Yine de, uygun bir modelin seçilmesi projeyi birçok problemden koruyabileceği gibi yanlış bir seçim de ek problemler çıkartabilecektir (Kettunen ve Laanti, 2005).

Farklı proseslere rağmen tüm yazılım süreçlerinde ortak olan aktiviteler vardır.

Bu aktiviteler;

a. )Yazılım özelliklerinin belirlenmesi; yazılım ihtiyaç ve kısıtlarının saptanması,

b. )Yazılımın tasarımı ve gerçekleştirilmesi,

c. )Yazılımın geçerliliğinin sağlanması ve teslim edilmesi; müşteri ihtiyaçlarının karşılanıp karşılanmadığının test edilmesi ve müşteriye teslimi,

d.) Yazılım bakımı; müşteri ihtiyaçlarının değişikliğine göre ya da oluşan herhangi bir yanlışlığa karşı yazılımın bakımı (Sommervile, 2000).

Yazılım geliştirme temel adımlarının nasıl gerçekleştirileceğine yönelik çeşitli modeller kullanılabilmektedir.  Modelleme, yazılım geliştirme faaliyetinin nasıl yapılacağına ve genel geliştirme düzeninin nasıl olacağına dair bir rehber niteliği taşır.

1. Gelişigüzel (Ad Hoc) Model:

Bu yaklaşım genellikle kaotik, düzensiz ve plansızdır veya planlandıkları zaman kolayca bozulabilir ve pratikte çok az gerçekleşirler.

Bu yöntemi bir model olarak adlandırmak aslında pek doğru değildir. Gelişigüzel geliştirmede belirlenmiş bir yöntem bulunmaz. Genellikle kişiye bağlı yazılım geliştirme şeklinde yapılır ve bu yüzden yazılımın izlenebilirliği, bakım yapılabilirliği oldukça zordur. 1960’lı yıllarda uygulanan bu yöntem, genellikle basit programlama içeren ve çoğunlukla tek bir kişinin üretim yaptığı yöntemdir.

2. Şelale Modeli (Waterfall Model):

Geleneksel yazılım geliştirme modeli olarak da bilinir. Şelale Modeli diğer modellere örnek teşkil etmekte olup; Gereksinimler (Reguirements), Tasarım (Design), Gerçekleştirme (Implementation), Test (Verification) ve Bakım (Maintanence) aşamalarından oluşmaktadır.

Genel Özellikleri;

Şelalenin her basamağında yer alan aktiviteler eksiksiz olarak yerine getirilir. Bu bir sonraki basamağa geçme şartı budur.

Her safhanın sonunda bir doküman oluşturulur. Bu yüzden şelale modeli doküman güdümlüdür.

Yazılım süreci lineerdir, yani bir sonraki safhaya geçebilmek için bir önceki safhada yer alan aktivitelerin tamamlanmış olması gerekir.

Kullanıcı katılımı başlangıç safhasında mümkündür. Kullanıcı gereksinimleri bu safhada tespit edilir ve detaylandırılır. Daha sonra gelen tasarım ve gerçekleştirme (kodlama) safhalarında müşteri ve kullanıcılar ile diyaloğa girilmez.

Şelale modelinde yazılım, aşamaları en az birer kez tekrarlanarak geliştirilir. Çok iyi tanımlanmış ve üretimi az zaman gerektiren projeler için uygun bir model olmakla birlikte günümüzde kullanımı gittikçe azalmaktadır.

3. Evrimsel Süreç Modelleri:

Yazılım projelerinde safhalar tekrarlanarak yazılım ürünü sürekli geliştirilmektedir. Evrimsel Süreç Modellerinde geliştirme çok hızlı ilerlediğinden doküman hazırlamak maliyetli olabilmekte, sürekli geliştirme yazılım mimarisini etkilemekte ve değişiklikleri birleştirmek zor olabilmektedir. Özel yazılım metotlarına ve bunları kullanabilecek insan gücüne ihtiyaç duyulabilmektedir.

4. Çevik Modeller:

Çevik yazılım geliştirme metotları, hantal olduğu düşünülen yazılım geliştirme modellerine bir alternatif olarak 90’lı yılların ortalarında gelişmeye başlamıştır. Döngüler içerir ve bu döngüler çok kısa ancak sayıları fazladır.

Çevik Model, projelerde insan odaklı bir yaklaşımı içerir. İnsanların değişime etkin bir şekilde karşılık vermesini sağlar. Bu da bu projeden fayda sağlayacak olanların ihtiyaçlarını karşılayabilen çalışma ortamlarının yaratılmasına imkân verir. Bu kategoride süreçler üst düzeyde tanımlanır. Genellikle sinerjik çözümler veya felsefeler olarak sunulur. Bu modelde, doküman üretiminin yazılım geliştirme faaliyetlerini yavaşlattığına inandığından doküman üretme yerine yüz yüze görüşmelere ağırlık verir. Döngüler sonucunda ortaya çıkan yazılım birimleri değerlendirilir ve yapılan her yorum yeni bir versiyon olarak yazılıma eklenir.

Enise Nurtaç ATEŞ

Haziran-2011

Author: Enise Nurtaç ATEŞ

Bu yazıyı paylaş