Yazılım sisteminin tanımlanması ve çözümleme -yazılımın işlevselliği ve işlemlere koyulmuş sınırlamalar tanımlanmalıdır
Tasarım (Geliştirme) –gereksinimleri sağlayan yazılım üretilmelidir
Deneme –müşteri isteklerinin karşılandığına emin olmak için yazılım doğrulanmalıdır
Çalıştırma ve bakım
Yazılımın evrimi –müşterinin değişen isteklerinin sağlana bilmesi için yazılım gelişe bilmelidir
Yazılım Geliştirme Modelleri
Yazılım süreci modeli sürecin basitleştirilmiş soyut tasviridir.O, her hangi özgü açıdan süreci ifade eder. Yazılımın geliştirilmesi için kullanılan genel modeller:
Şelale modeli
Faaliyetlere bağımsız süreçler gibi bakılıyor
6 aşamalı model bir şelale modelidir
Evrimsel geliştirme
Kullanıcı ve sistem gereksinimleri evrimsel olarak karşılanmaktadır
Şelale Modeli
Şelale modeli klasik projelerin (inşaat, gemicilik, köprü yapma ve diğerleri) geliştirilmesi sürecini yansıtmaktadır. İdeal halde modelin bir adımı gerçekleştikten sonra bir sonraki adımın geçekleştirilmesine geçmek mümkündür. Her adımdan sonra uygun adım için proje raporu hazırlanmalı ve yönetime sunulmalıdır. Rapor onaylandıktan sonra bir sonraki adıma geçilebilir.
Şelale modelinin özelliği her adımın ayrıntılı biçimde düşünülmesi, incelenmesi ve doğru karar verile bilmesidir. Bir adım yapıldıktan sonra geriye dönüş yoktur.
Şelale Modelinin Adımları
Gereksinimlerin çözümlenmesi ve tanımlanması
Sistem ve yazılım tasarımı
Birim ve bütünleşme denemesi
Sistem ve teslimat denemesi
Çalıştırma ve bakım
Şelale modelinin yetersiz yönü, süreç tamamlandıktan sonra değişikliklerin yapılmasının zorluğudur
Şelale Modelinin Sorunları
Projenin farklı aşamalara esnek biçimde bölünmemesi; Bu, değişen müşteri gereksinimlerini yerine getirmekte zorluklar yaratır
Bu nedenle, şelale modeli, gereksinimlerin yalnız çok iyi tanımlandığı takdirde uygun modeldir
Yazılım Geliştirmenin Gerçek Süreci
Evrimsel Geliştirme
Temel düşünce: İlkin bir çalışma yapmak,bunu müşteri görüşüne sunmak, bu görüşleri de dikkate alarak sistemin son gereken halini alana dek sürümlerini geliştirmek
Açınsama (Exploratory)Geliştirmesi: Müşteri ile birlikte çalışarak gereksinimlerin açınsaması; başlangıç ana hatlarıyla verilmiş belirteçten son sisteme doğru evrimsel geliştirme yapılması. Sistemin anlaşıla bilir kısmı ile başlanılmalıdır. Müşterinin önerdiği yeni özellikleri ilave etmekle evrimleşmelidir.
Prototip geliştirme: Hedef- müşteri gereksinimlerinin anlaşılması; sistem için en iyi gereksinim tanımlanmasının geliştirilmesi; müşteri gereksinimlerinin zayıf anlaşılır kısımları üzeride denemelere odaklanıyor.
Evrimsel Geliştirme Yaklaşımları Arasındaki Farklar
Açınsama yaklaşımında hedef çalışır sistemi son kullanıcıya teslim etmektir. Daha iyi anlaşılır ve yüksek öncelikli gereksinimlerle başlanılır. Zayıf öncelikli ve kesin anlaşılmayan kısımlar yalnız kullanıcı isteği ile çalıştırılır.
Prototip yaklaşımında ise hedef sistem gereksinimlerinin geçerliliğini yoklamaktır. Zayıf anlaşılabilir gereksinimlerle başlamanın nedeni onları daha iyi anlamaktır. Çok iyi anlaşılan gereksinimler için prototipe gerek yoktur.
Evrimsel Geliştirme
Evrimsel geliştirme-Prototip Geliştirme
Evrimsel Geliştirme (Devam)
Sorunlar
Geliştirme sürecini bütünlükle görmek mümkün olmaya bilir
Sistemler çoğu zaman zayıf yapılanmış oluyorlar
Özel marifetler (örneğin, hızlı prototipler oluştura bilen diller) gereke bilir
Uygulanabilirlik
Küçük ve orta boyutlu etkileşimli sistemler için
Büyük sistemlerin kısımları için (örneğin, kullanıcı arayüzü)