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

Yazılım sürüm yaşam döngüsü, bir yazılım ürününün (örneğin bir işletim sistemi) geliştirilmesi, test edilmesi ve dağıtılması sürecidir. Genellikle, son sürüm veya “altın” halka sunulmadan önce alfa öncesi, alfa, beta ve sürüm adayı gibi çeşitli aşamalardan oluşur.

Alfa öncesi, yazılımın hala tasarlanmakta ve inşa edilmekte olduğu, geliştirmenin erken aşamalarını ifade eder. Alfa testi, yazılımın white-box teknikleri kullanılarak dahili olarak test edildiği resmi testin ilk aşamasıdır. Beta testi, yazılımın genellikle onu geliştiren kuruluşun dışında daha büyük bir kullanıcı grubu tarafından test edildiği bir sonraki aşamadır. Beta aşaması kullanıcılar üzerindeki etkilerin azaltılmasına odaklanır ve kullanılabilirlik testlerini içerebilir.

Beta testinden sonra yazılım, nihai sürüm yayınlanmadan önce daha da rafine edildiği ve test edildiği bir veya daha fazla sürüm adayı aşamasından geçebilir.

Özellikle internet ve teknoloji sektörlerinde bazı yazılımlar sürekli beta halinde yayınlanır, yani sürekli olarak güncellenir ve geliştirilir ve hiçbir zaman tam olarak tamamlanmış bir ürün olarak kabul edilmez. Bu yaklaşım daha çevik bir geliştirme sürecine olanak tanır ve yazılımın geliştirme döngüsünün başlarında kullanıcılar tarafından piyasaya sürülmesini ve kullanılmasını sağlar.

## Gelişim Aşamaları

### Pre-alfa
Pre-alfa, resmi testlerden önce yazılım projesi sırasında gerçekleştirilen tüm faaliyetleri ifade eder. Bu faaliyetler arasında  , ,  ve  yer alabilir. Tipik  geliştirmede, birkaç tür alfa öncesi sürüm vardır. *Milestone* sürümleri belirli işlev setlerini içerir ve özellik tamamlanır tamamlanmaz yayınlanır.

### Alfa
Sürüm yaşam döngüsünün alfa aşaması,  ilk aşamasıdır (alfa, Yunan Alfabesinin ilk harfidir ve 1 rakamı olarak kullanılır). Bu aşamada geliştiriciler genellikle  kullanarak yazılımı test ederler. Daha sonra başka bir test ekibi tarafından  yahut  teknikleri kullanılarak ek doğrulama gerçekleştirilir. Kuruluş içinde kara kutu testine geçilmesi alfa sürüm olarak bilinir.

Alfa yazılım, müşterilere sunulmadan önce geliştirici tarafından kapsamlı bir şekilde test edilmez. Alfa yazılımı ciddi hatalar içerebilir ve ortaya çıkan kararsızlık çökmelere veya veri kaybına neden olabilir. Alfa yazılımı, son sürüm için planlanan tüm özellikleri içermeyebilir. Genel olarak, alfa yazılımın dışarıdan erişilebilirliği  için nadirdir.  yazılımların ise genellikle halka açık alfa sürümleri vardır. Alfa aşaması genellikle yazılıma daha fazla özellik eklenmeyeceğini belirten bir   ile sona erer. Şu anda yazılımın  olduğu söylenmektedir. Beta testi, tedarikçinin tesisindeki kabul testinin (alfa testi) ardından ve yazılımın bir ürün olarak genel sürümünden hemen önce gerçekleştirilir.

#### Feature-complete
Bir yazılımın Feature-Complete (FC) sürümü, planlanan veya birincil özelliklerinin tamamına sahiptir ancak hatalar, performans veya kararlılık sorunları nedeniyle henüz nihai değildir. Bu, geliştirme sürecinde alfa testinin sonunda ortaya çıkar.

Genellikle, özellikleri tamamlanmış bir yazılımın sürüm adayı ve son olarak altın statüsüne geçebilmesi için beta testi ve hata düzeltmenin yanı sıra performans veya kararlılık iyileştirmesinden geçmesi gerekir.

### Beta
Adını Yunan alfabesinin ikinci harfinden alan beta, alfayı takip eden yazılım geliştirme aşamasıdır. Bir beta aşaması genellikle yazılımın özellikleri tamamlandığında ancak bilinen veya bilinmeyen birkaç hata içermesi muhtemel olduğunda başlar. Beta aşamasındaki yazılımlarda genellikle tamamlanmış yazılımlardan çok daha fazla hata, hız veya performans sorunları bulunur ve yine de çökmelere veya veri kaybına neden olabilir. Beta testinin odak noktası, genellikle kullanılabilirlik testlerini de içerecek şekilde kullanıcılar üzerindeki etkilerin azaltılmasıdır. Bir beta sürümünün kullanıcılara ulaştırılması sürecine beta sürümü adı verilir ve genellikle yazılımın, onu geliştiren kuruluşun dışında ilk kez kullanıma sunulmasıdır. Yazılım beta sürümleri açık ya da kapalı olabilir, bu da yazılımın herkese açık ya da sadece sınırlı bir kitleye açık olmasına bağlıdır. Beta sürümü yazılımlar genellikle bir kuruluş içinde ve olası müşterilere yönelik tanıtımlar ve önizlemeler için kullanışlıdır. Bazı geliştiriciler bu aşamayı ön izleme, ön izleme sürümü, prototip, teknik ön izleme veya teknoloji ön izleme (TP)  Veya **' Olarak Adlandırır.

''Beta test kullanıcıları'', beta yazılımla ilgili sorunları aktif olarak rapor eden kişilerdir. Bu kişiler genellikle yazılımı geliştiren kuruluşun müşterileri ya da müşteri adaylarının temsilcileridir. Beta test uzmanları hizmetlerini ücretsiz olarak gönüllü olarak sunma eğilimindedir ancak genellikle test ettikleri ürünün sürümlerini, sürümde indirim veya diğer teşvikleri alırlar.

==== Sürekli Beta ====

Bazı yazılımlar, nihai bir “kararlı” sürüm oluşturulmadan yazılıma sürekli olarak yeni özelliklerin eklendiği sürekli beta olarak adlandırılan sürümde tutulur. İnternet yazılımların hızlı ve ucuz bir şekilde dağıtılmasını kolaylaştırdıkça, şirketler beta kelimesinin kullanımı konusunda daha gevşek bir yaklaşım benimsemeye başladılar.

==== Açık Yahut Kapalı Beta ====
Geliştiriciler kapalı beta ya da açık beta sürümleri yayınlayabilirler; kapalı beta sürümleri davetiye yoluyla kullanıcı testi için kısıtlı bir gruba yayınlanırken, açık beta test kullanıcıları daha büyük bir gruptan ya da ilgilenen herkesten olabilir. Özel beta, değer sunma kapasitesine sahip ancak ölçeklendirme sorunları, dokümantasyon eksikliği veya hala eksik olan hayati özellikler nedeniyle herkes tarafından kullanılmaya hazır olmayan yazılımlar için uygun olabilir. Test kullanıcıları buldukları hataları rapor eder ve bazen son sürümde bulunması gerektiğini düşündükleri ek özellikler önerirler.

Açık betalar, bir ürünü potansiyel tüketicilere göstermek gibi ikili bir amaca hizmet eder ve geniş bir kullanıcı tabanı arasında yapılan testler, çok daha küçük bir test ekibinin bulamayacağı belirsiz hataları ortaya çıkarabilir.

=== Release candidate ===

Gama testi veya “gümüşe geçiş” olarak da bilinen ''release candidate'' (''RC''), önemli hatalar ortaya çıkmadığı sürece piyasaya sürülmeye hazır, kararlı bir ürün olma potansiyeline sahip bir beta sürümüdür. Ürün stabilizasyonunun bu aşamasında, tüm ürün özellikleri tasarlanmış, kodlanmış ve bir veya daha fazla beta döngüsü boyunca test edilmiş ve bilinen durdurucu sınıf hatalar bulunmamıştır. Geliştirme ekibi bu sürüme tamamen yeni kaynak kodu eklenmeyeceğini kabul ettiğinde bir sürüm kod tamamlanmış olarak adlandırılır. Yine de hataları düzeltmek için kaynak kod değişiklikleri, dokümantasyon ve veri dosyalarında değişiklikler ve test durumları veya yardımcı programlar için çevresel kod olabilir.

=== Kararlı sürüm ===
''Üretim sürümü'' olarak da adlandırılan **kararlı sürüm*', doğrulama ve testlerin tüm aşamalarını geçen son sürüm adayıdır. Kalan bilinen hatalar kabul edilebilir olarak değerlendirilir. Bu sürüm üretime geçer.

Bazı yazılım ürünleri (örneğin Debian gibi Linux dağıtımları), zaten denenmiş ve test edilmiş tam sürümlere dayanan ve yalnızca güvenlik güncellemeleri alan uzun vadeli destek (LTS) sürümlerine de sahiptir.

== Sürüm ==
Yazılım yayınlandıktan sonra genellikle “kararlı sürüm” olarak bilinir. Resmi terim genellikle yayınlama yöntemine bağlıdır: fiziksel medya, çevrimiçi yayınlama veya bir web uygulaması.

=== Üretim Sürümü (RTM) ===

“Altın sürüm” olarak da bilinen “üretim sürümü” (RTM) terimi, bir yazılım ürünü teslim edilmeye hazır olduğunda kullanılan bir terimdir. Bu yapı dijital olarak imzalanabilir ve son kullanıcının satın aldığı yazılımın bütünlüğünü ve gerçekliğini doğrulamasına olanak tanır. RTM yapısı “altın ana” veya GM[1] olarak bilinir ve varsa toplu çoğaltma veya disk çoğaltma için gönderilir. Bu terminoloji ses kaydı yapım endüstrisinden, özellikle de mastering sürecinden alınmıştır. RTM, ürünün halka sunulduğu genel kullanılabilirlikten (GA) önce gelir. Altın ana yapı (GM) genellikle geliştiriciler için beta aşamasındaki bir yazılım parçasının son yapısıdır. Genellikle iOS için, büyük bir sürümden önceki son yapıdır, ancak birkaç istisna olmuştur.

RTM tipik olarak belirli perakende seri üretim yazılım bağlamlarında - ticari veya devlet üretim ve dağıtımındaki özel bir yazılım üretimi veya projesinin aksine - yazılımın ilgili bir bilgisayar donanımı satışında bir paketin parçası olarak satıldığı ve tipik olarak yazılımın ve ilgili donanımın nihayetinde perakende mağazalarında toplu / halka açık olarak satışa sunulacağı ve satılacağı durumlarda yazılımın tanımlanmış bir kalite seviyesini karşıladığını ve toplu perakende dağıtıma hazır olduğunu belirtmek için kullanılır. RTM diğer bağlamlarda yazılımın ilgili donanım son kullanıcı bilgisayarlarına veya makinelerine kurulum veya dağıtım için bir müşteriye veya müşteriye teslim edildiği veya serbest bırakıldığı anlamına da gelebilir. Bu terim teslimat mekanizmasını veya hacmini tanımlamaz; sadece kalitenin toplu dağıtım için yeterli olduğunu belirtir. Mühendislik kuruluşundan teslim edilen ürün genellikle çoğaltma veya web için görüntü üretmek için kullanılan altın bir ana medya şeklindedir.

=== General availability (GA) ===

Genel kullanıma hazır olma Veya *General Availability'' (GA), gerekli tüm ticarileştirme faaliyetlerinin tamamlandığı ve bir yazılım ürününün dil, bölge ve elektronik ve medya kullanılabilirliğine bağlı olarak satın alınabilir olduğu pazarlama aşamasıdır. Ticarileştirme faaliyetleri, güvenlik ve uyumluluk testlerinin yanı sıra yerelleştirme ve dünya çapında kullanılabilirliği de içerebilir. RTM ve GA arasındaki süre, GA'nın gerektirdiği tüm ticarileştirme faaliyetlerinin tamamlanması için gereken zaman nedeniyle, genel kullanıma hazır bir sürümün ilan edilebilmesi için günlerden aylara kadar sürebilir. Bu aşamada yazılım “yayına girmiştir”.

### Release to the Web (RTW)
Release to the Web (RTW) veya Web sürümü, dağıtım için İnternet'i kullanan bir yazılım dağıtım aracıdır. Bu tür yayın mekanizmalarında üretici tarafından herhangi bir fiziksel medya üretilmez. İnternet kullanımı arttıkça web sürümleri daha yaygın hale gelmiştir.

## Destek
Desteklenen ömrü boyunca, yazılım bazen “ara sürümler” veya “bakım sürümleri” (MR) olarak da adlandırılan hizmet sürümlerine, yamalara veya hizmet paketlerine tabi tutulur. Örneğin Microsoft, Windows XP'nin 32 bit sürümleri için üç ana hizmet paketi ve 64 bit sürümleri için iki hizmet paketi yayınlamıştır. Bu tür hizmet sürümleri, tek bir yüklenebilir paket biçiminde sunulan güncellemeler, düzeltmeler ve geliştirmelerden oluşan bir koleksiyon içerir. Ayrıca yeni özellikler de uygulayabilirler. Bazı yazılımlar düzenli destek beklentisiyle piyasaya sürülür. Genellikle uzun süreli destek içeren yazılım sınıfları arasında anti-virüs paketleri ve devasa çok oyunculu çevrimiçi oyunlar yer alır. Windows XP örneğinden devam edersek, Microsoft genişletilmiş desteğin sona ermesinden sonra beş yıl daha ücretli güncellemeler sunmuştur. Bu da desteğin 8 Nisan 2019 tarihinde sona erdiği anlamına gelmektedir.

### End-of-life
Yazılım artık satılmadığında veya desteklenmediğinde, ürünün kullanım ömrünün sonuna ulaştığı, üretimden kaldırıldığı, emekli edildiği, kullanımdan kaldırıldığı, terk edildiği veya modasının geçtiği söylenir, ancak kullanıcı sadakati, platformunun modası geçtikten çok sonra bile bir süre daha varlığını sürdürebilir - örneğin,  ve Sinclair .

Kullanım ömrünün sona erdiği tarihten sonra, geliştirici genellikle herhangi bir yeni özellik uygulamayacak, mevcut kusurları, hataları veya güvenlik açıklarını (bu tarihten önce biliniyor olsun ya da olmasın) düzeltmeyecek veya ürün için herhangi bir destek sağlamayacaktır. Geliştirici isterse, platformun gönüllüler tarafından sürdürülebilmesi için kaynak kodunu yayınlayabilir.

## Tarihçe
“Alfa/beta” test terminolojisinin kullanımı IBM'de ortaya çıkmıştır. IBM'in yazılım geliştirmesi için benzer terminolojiler, en azından 1950'lerden itibaren (ve muhtemelen daha önce) IBM ile ilgili kişiler tarafından kullanılmıştır. “A” testi, yeni bir ürünün kamuoyuna duyurulmadan önce doğrulanmasıydı. “B” testi, ürünün üretilmek üzere piyasaya sürülmesinden önce yapılan doğrulamaydı. “C” testi ise ürünün genel kullanıma sunulmasından önceki son testti. Yazılım IBM'in sunduklarının önemli bir parçası haline geldikçe, alfa testi terminolojisi duyuru öncesi testi belirtmek için, beta testi ise ürünün genel kullanıma hazır olduğunu göstermek için kullanılmaya başlandı. IBM'in daha önceki bazı yazılım projelerinde yönetici olan Martin Belsky bu terminolojiyi icat ettiğini iddia etmiştir. IBM 1960'larda alfa/beta terminolojisini bıraktı, ancak o zamana kadar bu terminoloji oldukça yaygın bir şekilde kullanılmaya başlanmıştı. Müşteriler tarafından yapılan testlere atıfta bulunmak için “beta testi” kullanımı IBM'de yapılmadı. Bunun yerine IBM “saha testi” terimini kullanmıştır.

Daha sonra büyük halka açık betalar geliştirildi ve ilk müşteriler IBM PC için WordVision kelime işlemcisinin “öncü sürümünü” 49.95 dolara satın aldı. 1984 yılında Stephen Manes, “Bruce ve James Program Publishers'ın parlak bir pazarlama darbesiyle insanların ürünü test etme ayrıcalığı için ödeme yapmalarını sağladığını” yazdı. Eylül 2000'de Apple'ın Mac OS X Public Beta işletim sisteminin kutulu bir sürümü piyasaya sürüldü. Eylül 2005 ve Mayıs 2006 arasında Microsoft, Windows Vista için topluluk teknoloji önizlemelerini (CTP'ler) yayınladı. Minecraft 2009'dan 2011'e kadar halka açık beta sürümündeydi.

Şubat 2005'te , bir beta sürümünün genellikle yıllarca kalması ve üretim seviyesindeymiş gibi kullanılması olgusu hakkında bir makale yayınladı. Örneğin, Gmail ve  yaygın olarak kullanılmasına rağmen uzun süredir beta aşamasında olduğunu; Google News'in Ocak 2006'da beta aşamasından çıktığını, ardından Temmuz 2009'da Gmail'i de içeren Google Apps'in (şimdiki adıyla ) geldiğini belirtti.  piyasaya sürülmesinden bu yana Microsoft, yayın öncesi yazılımları beta yerine önizleme olarak adlandırıyor. 2014'te başlatılan  aracılığıyla yayınlanan tüm ön sürüm yapıları “Insider Preview yapıları” olarak adlandırılır. 2014 yılında piyasaya sürülenler “Insider Preview yapıları” olarak adlandırılır. “Beta” ayrıca daha çok bir sürüm adayı veya zaman sınırlı bir demo veya pazarlama tekniği gibi bir şeye de işaret edebilir.

## Kaynakça