0

Yazılım Süreç Modelleri

Yazılım yaşam döngüsünden belirtilen süreçlerin geliştirme aşamasında, hangi düzen ya da sırada, nasıl uygulanacağını tanımlar. Yazılım süreç modellerinin temel hedefi “Proje başarısı için yazılım geliştirme yaşam döngüsü boyunca izlenmesi önerilen mühendislik süreçlerini tanımlamak” dır.
            Özetle yazılım üretim işinin genel olarak yapılma düzenine ilişkin rehberler olarak kullanılır.

1. Kodla ve Düzelt (Code and Fix)

Şekil 1: Kodla ve Düzelt

Avantajları:

  • Bireysel projelerde verimli bir şekilde kullanılır.
  • Tüm gereken yeterli olacak kadar gayrettir.
  • Tüm adımlardaki gayret ürüne direkt yansıdığı için müşteri memnuniyeti iyidir.
  • Eğer ürün onu yapanlar tarafından kullanılacaksa avantajdır.

Dezavantajlar:

  • Kodlama başlamadan önce değişiklikler tahmin edilmediğinden ve program gelişirken yapılan değişiklikler bir zaman sonra kod karmaşasına neden olacak ve düzeltmeler yapmak daha da zorlaşacak.
  • Müşterinin sürece dahil edilmemesi kullanıcı ihtiyaçlarına uygun olmamasına yol açar.
  • Bireysel geliştiriciler için uygun, takımlar için ise uygun değildir.

2. Barok Modeli

Şekil 2: Barok Modeli
  • Yaşam döngüsü temel adımlarının doğrusal bir şekilde geliştirildiği modeldir.
  • Belgelemeyi ayrı bir aşamada (en son aşama) ele alır. Hâlbuki belgeleme, günümüzde yapılan işin doğal bir ürünü olarak görülmektedir.
  • Gerçekleştirim aşamasına daha fazla ağırlık veren bir model olup, günümüzde kullanımı önerilmemektedir.

3. Çağlayan / Şelale Modeli (Geleneksel Model / Waterfall Model)

Çağlayan modeli
Şekil 3: Şelale Modeli
  • Yaşam döngüsü temel adımları baştan sona en az bir kez izleyerek gerçekleştirilir.
  • İyi tanımlı projeler ve üretimi az zaman alan yazılımlar için uygun bir modeldir.
  • Her aşamada belgeleme işlemi yapılır.
  • Bir sonraki aşama önceki aşama tamamlanmadan başlamaz.
  • Gerektiğinde geliştirme aktivitelerinde tekrarlamalar olabilir.
  • Askeri ürün üretilirken kullanılabilir.

Aşamaları:

  • Gereksinim Tanımlama: Gerçekleştirilecek sistemin gereksinimlerinin belirlenmesidir. “Müşteri ne istiyor? Ürün ne yapacak, ne işlevsellik gösterecek?” gibi sorulara cevap aranır.
  • Sistem ve Yazılım Tasarımı: Gereksinimleri belirlenmiş bir sistemin yapısal ve detaylı tasarımının oluşturulduğu aşamadır.
  • Gerçekleştirme ve Birim Testi: Tasarımı yapılmış bir yazılım sisteminin kodlanarak gerçekleştirilmesidir.
  • Birleştirme ve Sistem Testi: Gerçekleştirilmiş sistemin beklenen işlevselliği gösterip göstermediğini test eden aşamadır.
  • İşlem ve Bakım: Müşteriye teslim edilmiş ürünü, değişen ihtiyaçlara ve ek müşteri taleplerine göre güncelleme işidir.

Avantajları:

  • Gereksinim adımı tamamlandıktan sonra sağlam bir temel oluşur.
  • Gereksinimleri iyi anlaşılan projelerde daha verimli çalışır.
  • Proje yöneticileri için işin dağılımını yapma açısından kolaydır.
  • Her aşamada belgelendirme işlemi yapılır.

Dezavantajlar:

  • Bir aşama tamamlanmadan diğerine geçilememesi riski artırır.
  • Sistem geliştirme süresince gereksinimler sıklıkla değişir. Bu durumda gereksinimlerin daha iyi anlaşıldığı durumlarda kullanılması daha doğrudur. (Askeri ürün üretimi, İnşaat sektörü gibi)

4. V Modeli

v modeli
Şekil 4: V Modeli

V Modelinin Temel Çıktıları

Kullanıcı Modeli:
     – Geliştirme sürecinin kullanıcı ile olan ilişkileri tanımlanmakta ve sistemin nasıl kabul edileceğine ilişkin sınama belirtimleri ve planları ortaya çıkarılmaktadır.

Mimari Modeli:
     – Sistem tasarım ve oluşacak alt sistem ile tüm sistemin sınama işlemlerine ilişkin işlevlerdir.

Gerçekleştirim Modeli:
     – Yazılım modellerinin kodlanması ve sınamasına ilişkin fonksiyonlar.

  • Belirsizliklerin az, iş tanımının belirgin olduğu projeler için uygun bir modeldir.  
  • V modeli, kullanıcının projeye katkısını artırmaktadır.
  • Sol taraf üretim, sağ taraf sınama işlemlerini yapar.
  • Projenin iki aşamalı ihale edilmesi için oldukça uygundur.
        – İlk ihalede kullanıcı modeli hedeflenerek, iş analizi ve kabul sınamalarının tanımları yapılmakta
        – İkinci ihalede de ise ilkinde elde edilmiş olan kullanıcı modeli tasarlanıp, gerçekleşmektedir.

Avantajları:

  • Verification(Gerçekleme) ve Validation(Onaylama) planlarına erken aşamalarda uygulanır,
  • Gerçekleme ve onaylama sadece son üründe değil tüm teslim edilebilir ürünlerde uygulanır,
  • Proje yönetimi tarafından takibi kolaydır,
  • Ürün üretilirken sınanır,
  • Sınama müşteriye sunularak onay alınır.

Dezavantajlar:

  • Aşamalar arasındaki tekrarlamaları kullanmaz,
  • Risk çözümleme ile ilgili aktiviteleri içermez,
  • Aynı zamanda gerçekleştirilebilecek olaylara kolay imkân tanımaz.

5. Prototipleme

Şekil 5: Prototipleme
  • Geliştirici ile müşteri aynı masada oturur, müşteriye ilk anda istemlerine göre bir prototip verilir ve ana ürün üretilene kadar küçük prototiplerle müşteri sürece dahil edilir.
  • Gereksinimler geliştikçe prototip düzeltilir.
  • Müşteri memnuniyeti sağlanana kadar düzeltmeler devem eder.

Avantajları:

  • Kullanıcı sistem gereksinimlerini görebilir,
  • Karmaşa ve yanlış anlaşılmaları engeller,
  • Yeni ve beklenmeyen gereksinimler netleştirilebilir,
  • Risk kontrolü sağlanır.

Dezavantajlar:

  • Belgelendirmesi olmayan hızlı ve kirli prototipler,
  • Düzeltme aşaması atlanırsa, düşük performansa yol açar,
  • Müşteri prototipten de son ürün gibi görünüm ve etki bekler.

6. Spiral Model (Helezonik Model)

Şekil 6: Spiral Model

Helezonik Model Aşamaları

V Modelinin Temel Çıktıları

Planlama
 
– Üretilecek ara ürün için planlama, amaç belirleme, bir önceki adımda üretilen ara ürün ile bütünleştirme işlemi yapılır.

Risk Analizi
– Risk seçenekleri araştırılır ve riskler belirlenir.

Üretim
– Ara ürün üretilir.

Kullanıcı Değerlendirmesi
– Ara ürün ile ilgili olarak kullanıcı tarafından yapılan sınama ve değerlendirmeler toplanır.

Avantajları:

  • Kullanıcılar sistemi erken görebilirler,
  • Geliştirmeyi küçük parçalara bölerek en riskli kısımlar önce gerçekleştirilir,
  • Riske duyarlı yaklaşımı potansiyel zorlukları engeller,
  • Risk analizinin en iyi yapıldığı modeldir,
  • Büyük projeler için kullanılır,
  • Pek çok süreç modelini içerisinde barındırır,
  • Çağlayan modelinden daha avantajlıdır.

Dezavantajlar:

  • Küçük ve düşük riskli projeler için maliyetli bir yöntemdir,
  • Spiral sonsuza gidebilir,
  • Ara adımların fazlalığı nedeniyle çok fazla dokümantasyon gerekir,
  • Yalnızca büyük ölçekli projeler için uygundur.

7. Evrimsel Geliştirme Modeli

Şekil 7 : Evrimsel Model
  • İlk tam ölçekli modeldir.
  • Anahtar gereksinimleri ile başlangıç sistemi geliştirilir,
  • Müşteri geribildirimi ile sistem pek çok versiyon ile yavaş yavaş geliştirilir,
  • Her aşamada üretilen ürün, üretildiği alan için tam işlevselliği içermektedir,
  • Coğrafik olarak geniş bir alana yayılmış kurumlar için önerilir(bankalar),
  • Pilot uygulama kullanılarak test edilir. İhtiyaca göre geliştirilerek diğer birimlere taşınır.

    İki çeşit Evrimsel Geliştirme Modeli vardır.
    Keşifçi Geliştirme (Exploratory Development)
    Hedef: Müşterinin gereksinimlerini incelemek için müşteri ile çalışıp son sistemi teslim etmektir. Projeye başlanmadan önce gereksinimlerin iyi anlaşılması gerekir.
    Atılacak Prototipleme (throw-away prototyping)
    Hedef: Sistem gereksinimlerini anlamak. Sistem gereksinimleri tam anlaşılmayan durumları içerir.
Şekil 7.1: Evrimsel Model ve Çağlayan Model Karşılaştırması

Avantajları:

  • Kullanıcıların kendi gereksinimlerini daha iyi anlamalarını sağlar.
  • Sürekli değerlendirme erken aşamadaki geliştirme risklerini azaltır,
  • Proje geliştikçe büyüme vardır.

Dezavantajlar:

  • Düzenli teslim edilen bir ürün yoktur,
  • Sürekli değişiklik yapılması yazılımın yapısına zarar verir,
  • Bakımı zordur,
  • Yazılım gereksinimini yenilemek gerekebilir.

8. Artırımsal Geliştirme Modeli

8artırımsal Geliştirme modeli
Şekil 8: Artırımsal Geliştirme Modeli
  • Üretilen her yazılım sürümü birbirini kapsayacak ve giderek artan sayıda işlev içerecek şekilde geliştirilir.
  • Bir taraftan kullanım, diğer taraftan üretim vardır.
  • Örneğin; Öğrencilerin dönem boyunca geliştirmeleri gereken bir programlama ödevinin 2 haftada bir gelişiminin izlenmesi Artırımsal Geliştirme Modeline örnektir,
  • Genel olarak baktığımızda Divide and Conquer (Böl ve Yönet) yaklaşımı uygulanır.

Çağlayan modeli ve Evrimsel model arasında bir modeldir.

8artırımsal model2
Şekil 8.1: Artırımsal Geliştirme Modeli

Avantajları:

  • Sistem için gerekli olan gereksinimler müşteri ile birlikte belirlenir,
  • Öncelikle en önemli gereksinimleri karşılayan çekirdek bir sistem geliştirilir,
  • Erken artımlar prototip gibi davranarak gereksinimlerin daha iyi anlaşılmasını sağlarlar,
  • Tüm projenin başarısız olma riskini azaltır.

Dezavantajlar:

  • Artırımları tanımlamak için tüm sistemin tanımlanmasına ihtiyaç vardır,
  • Gereksinimleri doğru boyuttaki artırımlara atamak zor olabilir,
  • Deneyimli bir personel gereklidir,
  • Artırımların kendi içerisinde tekrarlamalara izin verilmez.
8artırımsal model2
Şekil 8.2: Artırımsal Model Genel Mantığı

9. Gelişigüzel Model

  • Geliştirme ortamında herhangi bir model ya da yöntem kullanılmaz.
  • Geliştiren kişiye bağımlıdır. Bir süre sonra geliştirici bile sistemi anlayamaz ve geliştirme güçlüğü çeker.
  • Bakımı oldukça zordur.
  • Artık kullanılmıyor, miladını 60’lı yıllarda doldurdu.

10. Araştırma Tabanlı Model

  • Yap-At prototipi olarak da bilinir,
  • Araştırma ortamları bütünüyle belirsizlik üzerine çalışan ortamlardır,
  • Yapılan işlerden elde edinilecek sonuç belirsizdir,
  • Geliştirilen yazılımlar genellikle sınırlı sayıda kullanılır ve kullanımı bittikten sonra işe yaramaz hale gelir ve atılır. (YAP-AT)