Yazılım Mühendisliği 1993 IEE tanımıyla; "sistemli, düzenli, ölçülebilir yaklaşımın yazılım geliştirmede, yazılımın işlenilmesinde ve bakımında uygulanmasıdır, başka deyişle mühendisliğin yazılıma uygulanmasıdır." Yazılım için en önemli özellik, bir yazılımın sürdürülebilir, güvenilir, verimli ve kullanılabilir olmasıdır.Günümüzde bir çok yazılım türü mevcut. Bunlardan bir kaç örnek verecek olursak; sistem yazılımları, gerçek zaman yazılımları, iş yazılımları, mühendislik ve bilimsel yazılımlar, gömülmüş yazılımlar,yapay zeka yazılımları. Bu yazılımlar çeşitli alanlarda kullanılmakta. Bir yazılım üretimi yaparken, bu süreçte öncelikle belirteçlerin hazırlanmasını sağlamalıyız. Burada yazılımın işlevselliği ve işlemlere koyulmuş sınırlamalar tanımlanmalıdır. Yani sistem ne yapar ve geliştirim kısıtları nelerdir. Geliştirme bölümünde, daha önceden belirlemiş olduğumuz belirteçlere göre yazılımın üretimini sağlarız. Ürettiğimiz bu yazılımın doğruluğunu test etmeliyiz. Bu süreçte yazılım müşteri isteklerini karşılıyor mu sorusuna cevap ararız. Bu doğruluğu yaptıktan sonra yazılımımız evrim sürecine geçer. Bir yazılımın en uzun süreci evrimdir. Çünkü müşteri istekleri sürekli değişir ve hatalar her an çıkabilir.
Çeşitli yazılım geliştirme modelleri mevcut. Şelale modeli, evrimsel geliştirme, formal sistem geliştirme, yeniden kullanılabilirliğe dayalı geliştirme bu modellere örnek olarak verilebilir. Bunlardan en çok kullanılan şelale modeli ve evrimsel geliştirmeyi inceleyelim.
Şelale Modeli (Waterfall Model):
Faaliyetlere ayrı süreçler gibi bakılıyor.
Gereksinimlerin Belirlenmesi: Sistem servisleri ve sınırları analiz edilir, sistem tanımlanması yapılır.
Sistem ve yazılım tasarımı: Donanımın ve yazılımın gerekliliklerine göre bölme yapılır.
Çalıştırma ve Birim Denemesi: Yazılım dizaynı uygulanır ve yazılımın birimi test edilir.
Bütünleşik ve Sistem Denemesi: Yazılımın birimleri birleştirilir ve bütün bir sistem olarak test edilir.Yazılım bu işlemin ardından müşteriye gönderilir.
Bakım:Sistem işletilir. Hatalar düzeltilir, uygulama geliştirilir.Genellikle uzun fazdır.
Şelale modelinin yetersiz yönü, süreç tamamlandıktan sonra değişikliklerin yapılmasının zorluğudur. Projenin farklı aşamalara esnek biçimde bölünmemesi, değişen müşteri gereksinimlerini yerine getirmekte zorluklar yaratır.
Şelale modeli, gereksinimlerin yalnızca çok iyi tanımlandığı takdirde uygun modeldir. Şelale modeli yavaş yavaş popülerliğini yitirmektedir.
Evrimsel Geliştirme (Iterative Development) :
Keşif Geliştirmesi ve Prototip Geliştirme olarak ikiye ayrılır.
Keşif Geliştirmesi:Müşteri ile çalışarak gereksinimlerin keşfi yapılır.Başlangıç ana hatlarıyla verilmiş belirteçten son sisteme doğru evrimsel geliştirme yapılır. Sistemin anlaşılır kısmı ile başlanılmalıdır. Müşterinin önerdiği yeni özellikleri ilave etmekle evrimleşir.Daha iyi anlaşılır ve yüksek öncelikli gereksinimler ile başlanır.
Prototip Geliştirme: Sistem için gereksinimlerin en iyi tanımlanması yapılır. Zayıf anlaşılır müşteri gereksinimleri ile başlar.Bunun nedeni onları daha iyi anlamaktır.Çünkü çok iyi anlaşılan gereksinimler için prototipe gerek yoktur.
Evrimsel geliştirmenin sorunları; tüm geliştirme süreci iyi görülmüyor, sistemler çoğu zaman zayıf yapılandırılmış oluyor.Örneğin hızlı prototip oluşturan diller gibi özelliklere sahip olunması gerekir.
Küçük ve orta boyutlu projeler için daha uygundur. Büyük sistemlerin bazı bölümleri için örneğin arayüz yapımında kullanılabilir. Kısa yaşam devirli sistemler için daha uygundur.
0 yorum:
Yorum Gönder