Yazılım Geliştirme Süreçleri – Ne Zaman Kullanılır? – Avantajları, Dezavantajları

Yazılım Geliştirme Süreçleri Nelerdir?

Yazılım geliştirme süreçleri, projenin amaçları ve hedeflerine bağlı olarak geliştirilmesi için kullanılan çeşitli modeller veya yöntemlerdir. Yazılım geliştirme süreçleri ile ilgili bir çok yazılım geliştirme yaşam döngüsü (software development lift cycle – SDLC) modeli oluşturulmuştur. Modeller, sürecin çeşitli aşamalarını ve gerçekleştirildikleri sırayı belirtir. En çok bilinen yazılım geliştirme modelleri aşağıdaki gibidir:

  • Şelale modeli
  • V modeli
  • Prototip modeli
  • Artımlı model
  • Evrimsel model
  • Spiral model
  • Yinelemeli model
  • RAD modeli
  • Çevik modeli

Yazılım geliştirme süreçleri temel olarak plan odaklı (plan-driven) ve çevik (agile) süreçler olarak ayrılır. Plana dayalı süreçler, tüm süreç faaliyetlerinin önceden planlandığı ve bu plana göre ilerlemenin ölçüldüğü süreçlerdir. Çevik süreçlerde planlama aşamalıdır ve süreci değişen müşteri gereksinimlerini yansıtacak şekilde değiştirmek daha kolaydır. Pratikte, daha kullanışlı süreçler hem plan odaklı hem çevik yaklaşımı içerir.

Yazılım süreçleri için ilk olarak 1995’te ISO/IEC/IEEE 12207 uluslararası standardı oluşturulmuştur. Yazılım sistemlerinin geliştirilmesi ve sürdürülmesi için gereken tüm süreçleri tanımlamayı hedeflemektedir. Yazılım ürününün veya uygulamanın geliştirilmesi için doğru modeli seçmek çok önemlidir. Modele göre geliştirme ve test işlemleri yapılır. Şimdi yaygın yazılım geliştirme süreçleri ve özelliklerini inceleyelim.

Şelale Modeli (Waterfall Model)

Waterfall model yani şelale modeli klasik yazılım geliştirme yaşam döngüsü olarak da bilinmektedir. Ayrıca doğrusal sıralı yaşam döngüsü modeli olarak da adlandırılır. Plan odaklı bir modeldir. William Royce tarafından 1970 yılında Managing the Development of Large Software Systems makalesiyle ortaya çıkarılmıştır. Yazılım mühendisliğinin en eski değerlerinden biridir. Anlamak ve kullanmak aslında basittir. Şelale modelinde aktiviteler sıralı bir şekilde aşamalara ayrılır. Bunlar:

  1. Gereksinim analizi ve tanımı
  2. Sistem ve yazılım tasarımı
  3. Uygulama (geliştirme) ve birim testi
  4. Entegrasyon ve sistem testi
  5. İşletme ve bakım

Şelale modelinde, her faz, bir sonraki aşamaya başlamadan önce tamamlanmalıdır. Şelale modeli doküman odaklı (document driven) bir modeldir. Her aşamanın sonunda, projenin doğru yolda olup olmadığını ve projeyi sürdürüp sürdürmeyeceğini belirlemek için bir inceleme yapılır. Her fazın sonunda çıktı olarak alınan dokümanlarla o faz tamamlanır. Bu modelde yazılım testleri ancak geliştirme tamamlandıktan sonra başlar. Şelale modelinde fazlar çakışmaz.

Şelale Modelinin Avantajları

» Bu model basit ve kolay anlaşılır bir sürece sahiptir.

» Modelin sağlamlığı nedeniyle yönetilmesi kolaydır – her fazın belirli çıktıları ve inceleme süreci vardır.

» Bu modelde fazlar birer birer işlenir ve tamamlanır. Aşamalar çakışmaz.

» Şelale modeli, gereksinimlerin çok iyi anlaşıldığı küçük projeler için iyi çalışır.

Şelale Modelinin Dezavantajları

» Bir uygulama test aşamasına geldiğinde veya sonradan bir hata tespit edildiğinde değiştirmek zordur. Yani sorun düzeltme maliyeti çok yüksektir.

» Yazılımın çalışan bir modülü proje tamamlanana kadar mevcut değildir.

» Yüksek oranda risk ve belirsizlik barındırır. Uygulama başlamadan önce gereksinimler tamamen belirtilmelidir ama müşterinin tüm gereksinimleri açıkça belirtmesi genelde zordur.

» Ürün geliştirilirken çok daha az müşteri etkileşimi söz konusudur.

» Karmaşık ve nesne yönelimli projeler için iyi bir model değildir.

» Uzun ve devam eden projeler için zayıf modeldir.

» İhtiyaçların orta ve yüksek değişim riski altında olduğu projeler için uygun değildir.

Şelale Modeli Ne Zaman Kullanılır?

» Bu model, yalnızca gereksinimler çok iyi bilindiğinde, açık ve sabit olduğunda kullanılır.

» Ürün tanımı tutarlı, istikrarlı ve belirsiz bir gereksinim olmadığı takdirde kullanılır.

» Gerekli uzmanlığa sahip geniş kaynaklar serbestçe bulunabilir durumda olmalıdır.

» Proje kısa ise etkili çalışır.

Ürün hazır olduğunda yalnızca son kullanıcılara prototip gönderilebilir. Bu, özellikle etkileşimli uygulamalar için kullanışlıdır. Prototip, yazılım gereksinimlerini tanımlamak için bir mekanizma görevi görür. Ancak prototipin tasarımında ve uygulanmasında yapılan hızlı ve muhtemelen kötü seçimler gerçek ürünü etkileyebilir.

Şelale modelinin bir diğer varyasyonu da V-modeldir. Takım önce problem gereksinimlerini düzeltmek için V’nin sol tarafında aşağı iner. Kod oluşturulduktan sonra, takım V’nin sağ tarafından yukarı taşınır ve takım sol taraftan aşağı doğru hareket ederken oluşturulan modellerin her birini doğrulayan bir dizi test gerçekleştirir. V modeli için Yazılım Kalite Güvencesi – SQA yazısına da göz atabilirsiniz.

Artımlı Model (Incremental Model)

Artımlı modelde tüm gereksinim çeşitli yapılara ayrılmıştır. Çoklu geliştirme döngüsü şeklinde gerçekleşir. Her bir artımla birlikte gerekli işlevin bir bölümü sağlanır. Çevrimler daha küçük, daha kolay yönetilen modüllere bölünür. Yinelenen şelale modellerinin bir kombinasyonu olarak düşünülebilir.

Bu modeldeki her bir modül gereksinimler, tasarım, uygulama ve test aşamalarından geçer. Yazılımın çalışan bir sürümü, ilk modülde üretilir, böylece yazılım yaşam döngüsü boyunca erken çalışan yazılım elde edilmiş olur. Bir sonraki modüllerin devreye alımları ile birlikte çalışan bir işlev eklenmiş olur. Süreç, komple sistem tamamlanıncaya kadar devam eder. Bu modeli aşağıdaki örnek resim güzel bir şekilde açıklamaktadır:incremental-model-monalisa-yazılım-geliştirme-süreçleri

En yüksek öncelikli gereksinimler ilk artımlarda ele alınır. Genelde ilk artımla birlikte temel bir ürün oluşturulmuş olur. Bir artımın geliştirilmesi başlatıldığında, bu kısımla ilgili gereksinimler dondurulur ancak sonraki artımlar için gereksinimler gelişmeye devam edebilir.

artımlı-model-yazılım-geliştirme-süreçleri

Artımlı Modelin Avantajları

» Yazılım yaşam döngüsü boyunca hızlı ve erken çalışan yazılım üretilmesini sağlar. Böylece sistemin işlevselliği erkenden kullanılmaya başlanabilir.

» Bu model daha esnektir, kapsam ve gereksinimlerin değiştirilmesi daha az maliyetlidir.

» Küçük parçaları test etmek ve hata ayıklamak daha kolaydır.

» Başlangıçtaki teslimat maliyeti düşüktür.

» Risklerin yönetilmesi biraz daha kolaydır çünkü riskli parçalar yineleme boyunca tanımlanır ve ele alınır.

» Erken artımlar, sonraki artımlar için gereksinimleri ortaya çıkarmaya yardımcı olur.

» En yüksek öncelikli işlevler daha erken devreye alındığı için bu kısımların en fazla test yapılan yerler olmasını sağlar.

Artımlı Modelin Dezavantajları

» İyi planlama ve tasarıma ihtiyaç duyar.

» Parçalanmadan ve aşamalı olarak kurulmadan önce tüm sistemin net ve açık bir tanımına ihtiyaç duyar.

» Toplam maliyet şelale modelinden daha yüksektir.

» Çoğu sistem, sistemin farklı bölümleri tarafından kullanılan bir dizi temel yetkinlik gerektirir. Bir artım uygulanıncaya kadar gereksinimler ayrıntılı olarak tanımlanmadığından, tüm artımların ihtiyaç duyduğu ortak yetkinliğin belirlenmesi zor olabilir.

Artımlı Model Ne Zaman Kullanılır?

» Bu model, komple sistem gereksinimleri açıkça tanımlanmış ve anlaşılmışsa kullanılabilir.

» Başlıca gereksinimler tanımlanmalıdır; Ancak, bazı ayrıntılar zamanla gelişebilir.

» Piyasaya erken bir ürün almak ihtiyacı varsa kullanılabilir.

Diğer modellere devam edeceğiz.

Bu yazı size ne kadar faydalı oldu?

Değerlendirmek için bir yıldıza tıklayın!

Yazının sizin için faydalı olmadığını duymaktan dolayı müteessiriz...

Bu yazıyı geliştirmek isteriz!

Bu yazıyı nasıl geliştirebileceğimizi paylaşmak ister misiniz?