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 dâhil 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.[*kaynak belirtilmeli*]

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 hâlini 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.

Ayrıca bakınız
--------------

* Sürüm kontrol sistemi
* Yazılım tasarımı
* Yazılım yaması

Kaynakça
--------

1. ↑  Çetin, Ömer Harun (30 Mart 2019). "Yazılım Yaşam Döngü Modelleri". *Medium* (İngilizce). 20 Ağustos 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2023.
2. ↑  "Yazılım Geliştirme Yaşam Döngüsü | İŞ KULÜBÜ". 16 Haziran 2021. 19 Haziran 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2023.
3. ↑  "What is CI/CD?". *about.gitlab.com* (İngilizce). 19 Eylül 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2023.
4. ↑  SEYREK, Hamit (14 Mart 2022). "5- Continuous Integration ve Continuous Delivery nedir? Neden kullanılmalı?". *Devops Türkiye☁️ 🐧 🐳 ☸️* (İngilizce). 20 Ağustos 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2023.
5. ↑  "CI/CD SÜREÇ YÖNETIMI" (PDF). *Araştırma*. Tübitak Bilgem. 1 Şubat 2023. 1 Ağustos 2023 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 20 Ağustos 2023.

|  |  |
| --- | --- |
| Otorite kontrolü Bunu Vikiveri'de düzenleyin | 
* NKC: ph127838

 |