İçeriğe atla

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

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.[]

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.[1]

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:[2]

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,[3] "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.[4] 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.[5]

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

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. 

İlgili Araştırma Makaleleri

Yazılım mühendisliği, yazılım geliştirme ile ilgilenen mühendislik dalıdır. Yazılım mühendisliği tanımı ilk olarak 1968 yılında Friedrich L. Bauer tarafından Almanya'da gerçekleştirilen NATO toplantısında gündeme gelmiştir. Ayrıca, matematikçi ve bilgisayar bilimcisi Margaret Hamilton "yazılım mühendisliği" terimini ortaya atan kişilerden biri olarak kabul edilmektedir. Yazılım mühendisliği tanım olarak "karmaşık yazılım sistemlerinin belirli bir hedefe ve sisteme dayalı olarak ve iş bölümü yapılarak, belirli prensipler, yöntemler ve araçlar kullanılarak geliştirilmesidir."

Linux dağıtımı ; Linux çekirdeği, GNU araçları ve bir masaüstü ortamının bir araya gelmesiyle, bu birlikteliği sürdürülebilir şekilde yönetecek bir yapılandırma araçları seti, yazılım güncelleme araçları vb. ile oluşturularak tam teşekküllü bir işletim sistemi haline gelen uygulamalar bütününü ifade eder.

<span class="mw-page-title-main">Mikro çekirdek</span>

Bilgisayar biliminde, bir mikro çekirdek, bir işletim sistemini uygulamak için gereken mekanizmaları minimuma yakın sağlayan işletim sistemi çekirdeği türüdür. Ana çekirdek sadece birimler arası iletişim ve süreçleri sıralama işlerini yapar. Bellek yönetimi, kayıt ortamı yönetimi, sürücüler ve ağ ile ilgili çok sayıda sürec birbirleriyle iletişim kurarak haberleşir. Bu sayede; parçalardan oluşan yapı ve tasarımın sadeleştirilmesi, bir parçadaki hatanın diğer parçaları etkilememesi ve çalışma anında işletim sisteminin güncelleştirilebilmesi mümkün olabilmektedir.

<span class="mw-page-title-main">Açık kaynak yazılım</span> açık kaynak lisansıyla yayınlanmış programlama kodu

Açık kaynak yazılım ya da açık kaynak kodlu yazılım, telif hakkı sahibinin kullanıcılara yazılımı ve kaynak kodunu herhangi bir amaç için kullanma, inceleme, değiştirme ve dağıtma haklarını verdiği bir lisans kapsamında yayınlanan bilgisayar yazılımıdır. Kullandıkları lisans gereğince isteyen kişi ve grupların yazılımı kendi kişisel ihtiyaçlarına uyarlamalarına ve sonunda değişikliği benzer tercihlere sahip kullanıcılar için bir çatal olarak yayınlamalarına olanak tanır.

Beta ya da beta sürüm, yazılımın ilk sürümündeki sistem testlerinden ve eksiklik testlerinden geçirilmeyi belirtir. Bu sürümde amaçlanan farklı donanımlar altında yazılımı sorunsuz çalıştırmadır. Tüm kullanıcılar tarafından gerçek verilerle test edilen yazılımın test sonuçları, yazılım testçileri tarafından yakından takip edilir. Demo ile karıştırılmamalıdır.

Web grafik tasarımı, grafik tasarım alanı ile yakın ilişkili bir konu olmakla birlikte kendi içinde ayrı bir dal olarak da geniş bir alanı kapsayan bir kavramdır.

<span class="mw-page-title-main">Tümleşik geliştirme ortamı</span> yazılım geliştirmek için kullanılan yazılım ortamı

Tümleşik geliştirme ortamı, bilgisayar programcılarının hızlı ve rahat bir şekilde yazılım geliştirebilmesini amaçlayan, geliştirme sürecini organize edebilen birçok araç ile birlikte geliştirme sürecinin verimli kullanılmasına katkıda bulunan araçların tamamını içerisinde barındıran bir yazılım türüdür.

Dassault Systemes, Dassault Systèmes A.Ş. 3D ve Ürün Yaşam Döngüsü yazılımlarında uzman ve alanında lider bir şirkettir.

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

Gereksinim Yönetimi ; tanımlama, sağlama, belgeleme, analiz etme, takip etme, öncelik verme, gereksinimlere karar verme ve daha sonra değişimi kontrol etme ve ilgili taraflarla iletişim kurma işlemlerini kapsar. Bu proje boyunca süregelen bir süreçtir.

<span class="mw-page-title-main">Sistem çözümlemesi ve tasarımı</span>

Sistem çözümlemesi ve tasarımı, bir bilişim sisteminin hangi verileri, hangi kullanıcılar için ve nasıl işlemesi gerektiğini irdeleme; sistemin girdilerini, mantığını, çıktılarını ve bileşenlerini betimleme; ve sistemi meydana getirerek çalıştırma aşamalarını inceleyen bilgi alanıdır. Bu sürece sistem yaşam döngüsü adı da verilmektedir. Her bilişim sistemi, insan yapımı diğer pek çok sistem gibi, beş aşamalı bir yaşam döngüsünden geçmektedir:

  1. Planlama,
  2. Çözümleme,
  3. Tasarım,
  4. Gerçekleştirme,
  5. Kullanım ve bakım.

Proje yönetimi, belirli bir projenin hedef ve amaçlarına ulaşıp bitirilmesi için kaynakların planlanması, organize edilmesi, tedarik edilmesi ve yönetilmesi disiplinidir.

<span class="mw-page-title-main">Waterfall model</span>

Şelale yönteminde yazılım geliştirme süreci analiz, tasarım, kodlama, test, sürüm ve bakım gibi safhalardan oluşur. Geleneksel yazılım metotlarında bu safhalar şelale modelinde olduğu gibi doğrusal olarak işler. Her safha, başlangıç noktasında bir önceki safhanın ürettiklerini bulur. Kendi bünyesindeki değişikler doğrultusunda teslim aldıklarını bir sonraki safhanın kullanabileceği şekilde değiştirir.

<span class="mw-page-title-main">Yazılım testi</span>

Yazılım testi, test altında hizmetlerin veya ürünlerin kalitesi hakkında paydaşlara bilgi sağlamak için yürütülen bir araştırmadır. Yazılım testi aynı zamanda, yazılım uygulamalarının risklerini anlamak için yazılımı bağımsız ve nesnel olarak incelemektir. Test teknikleri yazılım böceklerini bulma niyetiyle uygulama veya bir programı çalıştırma süreçlerini kapsar.

V-Model, sistem geliştirme sürecinde karmaşıklığı basitleştirmek amacıyla tasarlanmış bir kavramsal modelden, ayrıntılı ve özenli yaşam döngüsü modellerine ve proje yönetimi araçlarına kadar uzanan bir dizi modele uygulanan bir terimdir. İngiltere ve dünya genelindeki test topluluklarında, V-Model'in yazılım geliştirme sürecinde test edilebilmesi için ISTQB kuruluş müfredatı içinde tanımlanması, açıklayıcı ve değişken bir tanım olarak kabul edilir. V-Model'e ilişkin alternatif makalelerde bu modelin tek bir kabul edilmiş tanımının olmadığı görülür. Bu nedenle, farklı varyasyonlara sahip birçok versiyonu bulunmaktadır.

<span class="mw-page-title-main">V-Model (Yazılım geliştirme)</span>

V-model şelale (waterfall) modelinin gelişmiş hali olarak düşünülebilecek bir yazılım geliştirme süreci sunar. Doğrusal bir yönde ilerlemek yerine, süreç adımları kodlama evresinden sonra yukarıya doğru eğim alır ve tipik V şeklini oluşturur. V-Model geliştirme yaşam çevriminin her bir evresi arasındaki ilişkileri gösterir. Yatay ve dikey açılar zaman veya projenin tamamlanabilirliğini ve soyut seviyeyi gösterir.

<span class="mw-page-title-main">Regresyon testi</span>

Regresyon testi uygulama ortamındaki yapılan tüm değişiklikleri; uygulamaya yeni eklenen özellikler, daha önceki yaşanan hataların düzeltilmesinden sonra, mevcut problemlerin giderildiği ve yeni yapılan güncellemelerin, eklenen özelliklerin yeni bir hata üretip üretmediğini kontrol amaçlı olarak yapılan yazılım test türüdür.

Yazılım test etmede, test otomasyonu önceden tahmin edilmiş sonuçlarla gerçek sonuçların karşılaştırılması ve testlerin koşulmasını kontrol etmek için(test edilmiş yazılımdan farklı olan) belirli yazılımın kullanılmasıdır. Test otomasyonu tekrar eden fakat çoktan test etme süreçlerinde yer almış gerekli testlerin otomatikleştirebilir veya manuel olarak koşulmasının zor olacağı testleri de içerebilir. Test otomasyonları sürekli paket dağıtımı veya sürekli test etme için kritik öneme sahiptir.

<span class="mw-page-title-main">GitLab</span> Çevrimiçi Git kaynak kodu deposu barındırma

GitLab, Git sürüm kontrol aracını kullanan bir Kaynak Kod ve Proje Yönetim platformudur. Sürekli entegrasyon (CI), sürekli teslimat (CD), hata kayıt, kod gözden geçirme ve viki desteği bulunur.

<span class="mw-page-title-main">DevOps</span>

DevOps, yazılım geliştirme ve bilgi teknolojileri endüstrisinde bir metodolojidir. Bir dizi uygulama ve araç olarak kullanılan DevOps, sistem geliştirme yaşam döngüsünü iyileştirmek ve kısaltmak için bir araç olarak DevOps çalışmalarını entegre eder ve otomatikleştirir. DevOps kelimesi yazılım geliştirme (Dev) ve bilgi teknolojileri operasyonlarının (Ops) birleşiminden oluşmaktadır. DevOps, çevik yazılım geliştirmeyi tamamlayıcı niteliktedir; DevOps'un birçok yönü çevik çalışma biçiminden gelmektedir.