Yazılım Yaşam Döngüsü Temel Aşamaları (Software Development Life Cycle Core Processes)

Yazılımın ürününün hem üretim hem de müşterideki kullanım süreci boyunca geçirdiği tüm aşamalar yazılım geliştirme yaşam döngüsü (“software development life cycle”, “SDLC”) olarak adlandırılır. Yazılım geliştirme süreci, zamanlamaya dayalı ve içerik olarak bölünmüş aşamalardan oluşmaktadır. Bu sayede yazılım planlı bir şekilde geliştirilmektedir. Yazılım işlevleri ile ilgili gereksinimler sürekli olarak değiştiği ve genişlediği için, söz konusu aşamalar sürekli bir döngü biçiminde ele alınır. Döngü içerisinde her hangi bir aşamada geriye dönmek ve tekrar ilerlemek söz konusudur. Temel yazılım geliştirme aşamaları aşağıdaki gibidir:

  • Planlama: Yazılım yaşam döngüsünün ilk aşamasıdır. Temel ihtiyaçlar belirlenir, proje için fizibilite çalışmaları yapılır (maliyetlerin ve sistemin yararlarının tanımlanması) ve proje planlaması gerçekleştirilir.
  • Analiz: Bu aşamanın amacı sistemin işlevlerini ve kesin gereksinimleri açıklığa kavuşturmak ve sonucunda bunları belirli bir formatta dokümante etmektir. Bu çalışma müşteri, yazılım mühendisi, sistem analisti, iş analisti, ürün yöneticisi vb. rollerin bir araya geldiği gruplar tarafından yapılabilir. İhtiyaçların net olmadığı durumlarda yazılım mühendisi ve müşteri arasında iletişim ve birlikte çalışmanın çok daha fazla olması gerekir. Çeşitli yazılım geliştirme metodolojilerinde bu aşamada kullanım dokümanları ve test plan dokümanları da oluşturulabilir.
  • Tasarım: Gereksinimlerin tamamlanmasıyla beraber sistem tasarım aşamasına başlanır. Yazılım ürün tasarımı, müşterinin gereksinim ve isteklerini karşılamak üzere yazılım ürününün özellikleri, yetenekleri, ve arayüzlerinin belirlenmesi etkinliğidir. İki tür tasarımdan bahsetmek mümkündür (Yüksek düzeyde tasarım – Mimari tasarım ve Detaylı tasarım). Mimari tasarım, yazılım modüllerinin genel yapıları ve organizasyon içerisindeki etkileşimleri ile ilgilenir. Sonucunda mimari tasarım dokümanları oluşturulur. Detaylı tasarım aşamasında Mimari tasarım dokümanları genelde revize edilirler. Tasarım ve analiz aşamalarının ayrımı “Problem Ne?/Problem Nasıl Çözülür?” sorularının kullanımı ile ilgilidir. Gereksinimlerin belirlendiği analiz aşaması problemin ne olduğu ile ilgilidir. Unutmamak gerekir ki sistemdeki tüm problemler yazılım ürününün tamamlanması ile çözülmeyecektir. Maalesef çoğu zaman Ne söylemi tasarım kararı olurken Nasıl söylemi de müşterinin gereksinimi olabilmektedir. Bu duruma dikkat etmek gerekir.
    • Yazılım tasarımında kullanılan en önemli tekniklerden birisi Soyutlama (Abstraction) dır. Soyutlama, problemlerin çözümlerini kolaylaştırmak için nesnelerin, olayların ve durumların bazı özelliklerin görmezden gelinmesidir. Problemi basitleştirerek en önemli kısımlarına odaklanmamızı sağlar. Modelleme is temel tasarım aracı olup statik ve dinamik modellerden bahsetmekten mümkündür. Statik model, programın çalışması sırasında değişmeyen yönlerini ifade etmek için kullanılırken (sınıf ve nesne modelleri), dinamik model programın çalışması sırasındaki işleyişi ifade etmek için kullanılır ( durum ve sıra diyagramları).
  • Gerçekleştirim (Kodlama ve Test)
    • Tasarım aşamasının belirli bir olgunluğa ulaşmasıyla birlikte Kodlama aşaması başlar. Müşteriye teslim edilecek ürünü programlama aşamasıdır. Kaliteli kodlama üzerine önümüzdeki yazılarda bayağı kafa yoracağız. Şimdilik kısaca değinelim. İyi kod, okunabilirliği ve bakımı kolay olan basit koddur. KISS (Keep it simple) prensibine göre yeni mezun olmuş birisine kodunuzu verdiğinde 1-2 gün içerisinde anlayabiliyor ve değiştirebiliyorsa kodunuz iyi bir koddur. İster bir şirkette çalışın ister bireysel projeler geliştirin mutlaka belirli bir kodlama kalite standardınız olsun (İsimlendirme standartları, yorum satırı kullanımları, tekrar eden kodlar, dev –if koşul blokları, aşırı benzer işlevler, uzun metotlar vb.)
    • Kodlama süresince ve kodlama sonrasında yapılan diğer önemli aşama test’tir. Erken test et yaklaşımı ile (early testing) hareket edip, analiz aşamasından itibaren test bakış açısına sahip olmamız hata yapma oranımızı ve maliyetleri (zaman, para, prestij vb.) düşürecektir. Birim testleri, duman testleri, yanlış değer testleri, kabul testleri, kullanım senaryo testleri, yük testleri, kullanıcı kabul testi, yoldan geçen adam testi, test otomasyonu gibi sürece ve duruma göre uygulanabilecek çok farklı kategoride ve derinlikte test türü bulunmaktadır.
  • Teslim ve Bakım
    • Tüm test aşamaları tamamlandıktan sonra yazılım ürünün sahaya teslim edilebilir bir versiyonu çıkartılır ve teslim aşaması gerçekleştirilir. Teslim çıktısı olarak ürün tek başına yeterli değildir. Mutlaka son kullanıcılar için kullanım kılavuzu ve versiyon fark dokümanı oluşturulmalıdır. Teslim ile birlikte bakım aşaması da başlar. Hata giderici, önleyici, altyapıyı iyileştirici, ürüne yeni özellikler ekletici gibi farklı bakım faaliyetleri  mevcuttur.

Yaşam döngüsünün temel adımları çekirdek süreçler (core processes) olarak da adlandırılır. Bu süreçlerin gerçekleştirilmesi amacıyla Yazılım Belirtim Yöntemleri ve Yazılım Süreç Modelleri kullanılmaktadır.

Yazılım Belirtim Yöntemleri (Specifications)

Bir çekirdek sürece ilişkin fonksiyonları yerine getirmek amacıyla kullanılan yöntemlerdir.

  • Süreç Akışı İçin Kullanılan Belirtim Yöntemleri: Süreçler arası ilişkilerin ve iletişimin gösterildiği yöntemlerdir (Veri Akış Şemaları, Yapısal Şemalar, Nesne/Sınıf Şemaları).
  • Süreç Tanımlama Yöntemleri: Süreçlerin iç işleyişini göstermek için kullanılan yöntemlerdir (Düz Metin, Algoritma, Karar Tabloları, Karar Ağaçları, Anlatım Dili).
  • Veri Tanımlama Yöntemleri: Süreçler tarafından kullanılan verilerin tanımlanması için kullanılan yöntemlerdir (Nesne İlişki Modeli, Veri Tabanı Tabloları, Veri Sözlüğü).

Yazılım Süreç Modelleri (Processes)

Yazılım yaşam döngüsünde belirtilen süreçlerin geliştirme aşamasında, hangi düzen ya da sırada, nasıl uygulanacağını tanımlayan modellerdir. Karmaşıklığı azaltıp krizleri önler. Ürünlerin beklenilen kalitede olması süreçlerin kontrol edilmesine bağlıdır. Belli başlı yazılım süreç modelleri aşağıdaki gibidir;

  • Kodla ve Düzelt (Code and Fix)
  • Şelale Modeli (Waterfall Model)
  • V Modeli (V-shaped Model)
  • Evrimsel Geliştirme (Evolutionary Development)
  • Prototipleme (Prototyping)
  • Spiral Model
  • Formal Sistem Geliştirme (Formal System Development)
    • Matematiksel sistem modeli formal (kurallara uygun) olarak gerçekleştirilir.
  • Yeniden kullanıma yönelik geliştirme (Re-use based development)
    • Sistem var olan bileşenlerden toparlanır
  • Artımlı Geliştirme (Incremental Development)
  • Birleşik Süreç (Unified Process)
  • Çevik Modeller (Agile models: XP, Scrum)

Deniz KILINÇ

(Visited 593 times, 1 visits today)

0 Comments

  1. erencol 8 Temmuz 2013 at 09:19

    Bu güzel yazı için teşekkürler. Emeğinize sağlık.

    Reply
    1. Deniz KILINÇ 8 Temmuz 2013 at 11:54

      Ben teşekkür ederim 🙂 Devamı fazlasıyla gelecek 🙂

      Reply
  2. Durmuş Ali Nergiz 9 Kasım 2014 at 15:45

    Gerçekten kısa ve güzel bir çalışma emeğinize sağlık 🙂

    Reply

Yorum Bırak

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir