Yazılım yaşam döngüsü

Yazılım yaşam döngüsü, bilgisayar yazılımlarının ilk geliştirme aşamalarından başlayarak; yayındaki mevcut sürümün hatalarının giderilmesi, iyileştirme odaklı yeni ara sürümlerin yayınlarak yazılımın güncellenmesi de dahil olmak üzere nihai (kararlı) sürüme ulaşana dek geçen geliştirme ve olgunlaştırma aşamalarının tamamını ifade etmek için kullanılan terimdir.
Yazılım Yaşam Döngüsü (YYD), yazılımın başlangıcından sonuna kadar geçirdiği aşamaların süreçsel ve yönetimsel bir yaklaşımla yönetilmesini ifade eder. Yazılım geliştirme sürecini başlangıcından sonuna kadar planlama, tasarım, geliştirme, test, dağıtım, bakım ve sonlandırma gibi aşamaları içeren bir çerçeve olarak düşünür. Bu süreç, yazılımın etkili bir şekilde tasarlanması, geliştirilmesi, test edilmesi, dağıtılması ve yönetilmesi için rehberlik eder. Birçok farklı model bulunmaktadır.
Yazılım Yaşam Döngüsü, yazılım projelerinin etkili bir şekilde yönetilmesine yardımcı olur. Her aşama belirli hedeflere ve süreçlere sahiptir ve bu hedeflere ulaşmak için farklı yöntemler ve araçlar kullanılır. Bu döngü, yazılım geliştirme sürecini düzenli bir şekilde yönetmek ve sorunları erken aşamalarda tespit etmek için önemlidir.
Genellikle yaygın olarak kabul gören bir Yazılım Yaşam Döngüsü aşamaları şunlardır:
Gereksinim Analizi: Yazılım geliştirme sürecinin ilk aşamasıdır. Müşteri gereksinimleri ve beklentileri toplanır ve belirlenir.
Tasarım: Gereksinim analizi sonuçlarına dayanarak yazılımın yapısı, bileşenleri, veritabanı tasarımı gibi teknik ayrıntıları planlandığı aşamadır.
Geliştirme: Tasarım aşamasında oluşturulan plana göre kodlama gerçekleştirilir. Yazılımın gerçekleştirildiği aşamadır.
Test: Geliştirilen yazılım bileşenlerinin ve sistemlerinin işlevselliği, doğruluğu ve güvenilirliği test edilir.
Entegrasyon ve Doğrulama: Farklı bileşenlerin veya modüllerin birleştirilip test edildiği aşamadır. Sistem düzgün bir şekilde çalışıp çalışmadığı kontrol edilir.
Dağıtım: Test edilen ve onaylanan yazılım son kullanıcılara dağıtılır. Canlı ortama taşınır.
Bakım: Yazılımın kullanımı sırasında karşılaşılan hataların düzeltilmesi, yeni özelliklerin eklenmesi gibi sürekli güncelleme ve bakım işlemlerini içerir.
Sonlandırma: Yazılımın ömrü boyunca artık kullanılmayacağı kararlaştırıldığında gerçekleşir. Bu aşama, yazılımın devre dışı bırakılması ve gerekli verilerin yedeklenmesini içerebilir.
Süreç
GA
General availability, yazılımın tanıtım çalışmaları tamamlandıktan sonra satışa hazır olduğu durumu ifade eder.
Üretime hazır sürüm (RTM)
Açılımıyla release to manufacture, söz konusu yazılımın fiziksel üretime hazır son halini ifade eder.
RTW
Release to the Web, dağıtımı internet üzerinden yapılan ürünler için geçerli olan bir terimdir.
CI/CD
CI/CD, "Continuous Integration" (Sürekli Entegrasyon) ve "Continuous Deployment" veya "Continuous Delivery" (Sürekli Dağıtım veya Sürekli Teslimat) kısaltmalarının birleşimi olarak kullanılan bir terimdir. CI/CD, yazılım geliştirme süreçlerini otomasyon, hızlandırma ve iyileştirme amacıyla kullanılan bir yaklaşımdır.
Continuous Integration (Sürekli Entegrasyon): Bu aşama, geliştiricilerin kodlarını sürekli bir şekilde merkezi bir depoya (örneğin Git) eklemesini ifade eder. Her yeni kod eklentisi, otomatik olarak birleştirme (merge) işlemlerine ve otomatik test süreçlerine tabi tutulur. Bu sayede, geliştiricilerin kodlarının uyumluluğu ve hataları erken aşamada tespit edilir.
Continuous Delivery (Sürekli Teslimat): Bu aşama, sürekli entegrasyon sonrası oluşturulan ve test edilen kodun otomatik olarak bir sonraki aşamaya taşınmasını ifade eder. Bu aşamada kod, hatalar düzeltilmiş ve test edilmiş olarak bir sonraki aşamada hazır bir şekilde bulunur. Bu aşamada manuel onay gerekebilir.
Continuous Deployment (Sürekli Dağıtım): Bu aşama, sürekli teslimatın daha da otomasyonlaştırıldığı bir aşamadır. Burada, kod otomatik olarak canlı üretim ortamına dağıtılır ve kullanılabilir hale getirilir. Bu aşama, kodun hızla ve güvenli bir şekilde müşterilere sunulmasını sağlar.
Bu süreçlerin birleşimi, yazılımın daha hızlı, güvenilir ve tekrarlanabilir bir şekilde geliştirilmesini sağlar. CI/CD yaklaşımı, hataların erken aşamalarda tespit edilmesini, kodun sürekli olarak test edilip güncellenmesini ve yeni özelliklerin veya düzeltmelerin hızlı bir şekilde kullanıcıların eline geçmesini amaçlar. Bu da yazılım geliştirme sürecini verimli hale getirir ve kullanıcılarla daha iyi etkileşim sağlar.