Yazılım yaşam döngüsü, herhangi bir yazılımın, ihtiyaç durumundan gerçekleştirilmesi ve sonrasında bakımına kadar geçen tüm süreçtir.

Aşağıdaki grafikte yazılım yaşam döngüsünün planlama aşamasından bakım aşamasın kadar olan sürecini görebiliriz.
Planlama:
İlk olarak gereksinim analizinin yapılmasıyla başlar. Gereksinim analizi müşterinin istekleri doğrultusunda ortaya çıkacak olan olan yazılım hakkında ilk bilgilerin alındığı adımdır. Bu adımda müşteri iyi bir şekilde dinlenmeli ve isterler tam ve net olarak belirlenmelidir.
Planlama ise: Yazılımın üretim aşamasında ihtiyaç duyulacak, personel, donanım ve yazılım gereksinimlerinin çıkarıldığı, fizibilite çalışmasının yapıldığı ve proje planının oluşturulduğu ilk adımdır.
Çözümleme:
- Yazılım işlevleri ile gereksinimlerin ayrıntılı olarak çıkarıldığı aşamadır.
- Eğer varsa mevcut sistem incelenmesi gerçekleştirilir.
- Temel amaç, bir yazılım mühendisi gözüyle mevcut yapıdaki işlerin ortaya çıkarılması ve doğru olarak algılanıldığından emin olmaktır.
- Bu aşamada temel UML diyagramlarının çizilmeye başlanıldığı ilk adımdır.(Use Case, Activity, Class …)
Tasarım:
Çözümleme aşamasından sonra belirlenen gereksinimlere çözüm olacak yazılım ilk ve temel halinin oluşturulması aşamasıdır. Kodlama olarak herhangi bir durum söz konusu değildir.
Bu aşama 2’ye ayrılır. Bunlar:
- Mantıksal Tasarım: Mevcut sistem değil önerilen sistemin yapısı anlatılır. Olası örgütsel değişiklikler önerilir.
- Fiziksel Tasarım: Yazılımı içeren bileşenler ve bunların ayrıntılarını içerir.
Gerçekleştirim:
Bu aşamada çözümlesi ve tasarımı bitmiş olan sistemin kodlanması aşamasıdır. Kodlama işlemi planlama veya çözümleme aşamasında belirtilen programlama dili, geliştirme ortamı, ve teknolojilerin yardımıyla yapılır.
Bu aşama 3’e ayrılır. Bunlar:
- Kodlama
- Test Etme
- Kurulum
Bakım:
Test etme ve kurulum aşamasından sonra gerçek ortama kurulunan yazılımın, hata giderme, güncelleme gibi işlemlerin yapıldığı aşamadır.
Bu aşama yazılım tüm yaşamı boyunca sürer.
Bu yazılım yaşam döngüsünü daha aktif ve en iyi sonucu vermesi için yazılım geliştirme süreç modelleri kullanılabilir. Bu süreç modelleri ise en temelde 3’e ayrılırlar. Bunlar:
Düzenleyici Süreç modelleri:
- Kodla ve Düzelt ( Code and Fix)
- Gelişigüzel Model
- Barok Modeli
- Çağlayan/Şelale Modeli (Waterfall Model)
- V Modeli (V-shaped Model)
- Prototipleme
- Helezonik Model (Spiral Model)
- Evrimsel Geliştirme Modeli (Evolutionary Development)
- Artırımsal Geliştirme Modeli (Incremental Development)
- Araştırma Tabanlı Model (Resource Based Model)
- Formal Sistem Geliştirme (Formal System Development)
- Bileşen Tabanlı Geliştirme (Component Based Development)
Birleşik Süreç:
Genellikle yazılım geliştirme süreçlerinin en iyi özelliklerinin bir araya getirilerek bütünleştirilmiş bir yazılım geliştirme sürecidir.
Çevik Yazılım Süreci:
- Uç değer Programlama (“Extreme Programming – XP”)
- Scrum
- Özellik Güdümlü Geliştirme (“Feature-Driven Development – FDD”)
- Çevik Tümleşik Süreç (“Agile Unified Process – AUP”)
Yazılım geliştirme süreç modellerinden sadece Çevik Yazılım Süreçlerinden Çevik Yazılım Tümleşik Sürecini inceleyeceğiz. Diğer yazılım geliştirme süreçleri artık çok fazla kullanılmamaktadır.