top of page

Yazılım Yaşam Döngüsü

  • Yazarın fotoğrafı: Volkan Köse
    Volkan Köse
  • 29 Kas 2024
  • 3 dakikada okunur

Güncelleme tarihi: 7 Ara 2024

Yazılım yaşam döngüsü yani software lifecycle (SLC) bir yazılımın yaşamı boyunca geçtiği aşamaları ifade eder.


Bu aşamalar temel olarak şunlardır:

  1. planlama yani analiz

  2. tasarım

  3. uygulama yani kod geliştirme

  4. doğrulama, onaylama yani test

  5. sürdürme, bakım


1.PLANLAMA

Analiz aşaması olarak da isimlendirilen, işe başladığımız, müşteri ile iletişim kurduğumuz, iş analizi ve gereksinim mühendisliği çalışmalarını yaptığımız adımdır.


Müşterinin sorunları, istekleri, gereksinimleri bu aşamada doğru sorular sorularak, araştırmalar yapılarak ortaya çıkarılır, paydaşlardan ve diğer kaynaklardan gereksinimler toplanır, domain (alan) bilgisi edinilir, ihtiyaçlar daha derin bir şekilde anlaşılmaya çalışılır.

Requiretements Engineering for Software and System

İstenen özellikler ayrıntılarıyla tariflenir ve eksiksiz, tutarlı, gereksiz olmadığı, müşteri tarafından istenen şey olduğu tasdik edilir. 

Süreçte yapılacak yanlış anlamalar, hatalar sonraki proje süreçlerini de silsile yoluyla olumsuz etkileyeceği için başlangıçta yapılan hataların olabildiğince erken fark edilmesi ve düzeltilmesi çok daha önemli ve düşük maliyetlidir.


Gereksinim mühendisliğine dair daha detaylı bilgi için soldaki bu kitaba göz atabilirsiniz.

2.TASARIM

Tasarım  aşamasında gereksinimler analiz edilerek sistemin büyük resmi kabataslak ortaya konulur. Bu resim gerçek sistemin inşası için temel teşkil edecektir. Kullanıcı, akış, geçiş vb.Uml diyagramları oluşturulur, mockuplar örnek arayüzler çizilir, mühendislerle sisteme, bileşenlere dair mimari tasarımlar, veri yapısı, algoritmalar ve özellikler tartışılır, netleştirilir. 


Mimari tasarım olan sistemin üst düzey bir görüntüsünden, algoritma tasarımı olan alt düzey bir görüntüye kadar inilir.


3.UYGULAMA

Fikirlerin konuşmalara, konuşmaların metinlere; metinlerin  görsellere dönüştüğü aşamalardan sonra iş uygulamaya yani kod yazmaya gelir. Gerçek bir yazılım sistemi bu süreçte oluşturulur. 


Yazılım oluşturulurken 4 temel şeye dikkat edilmelidir.


Karmaşıklığın Azaltılması: Yazılımın kullanılması ve anlaşılması olabildiğince basit ve kolay olmalıdır. 


Çeşitlilik Beklentisi : Sistemin zaman içerisinde değişebileceğinin, gelişebileceğinin farkında olunması, geliştirme yaparken olasılıkların da hesaba katılmasıdır. 


Bazen zaman baskısı, programcıları geleceği görmezden gelerek bugünün sorununu hızlıca çözen çalışan kodlar yazmaya zorlar. Ancak en iyi sistemler, evrim geçirebilir olanlardır; mevcut kodu değiştirmek, sıfırdan yeniden yazmak yerine kod eklenerek yeni durumlara uyarlanabilir olanlardır.


Test için yapılandırma : Yazılım üretilirken test senaryoları da düşünülmeli ve kolayca test edilebilir yazılımlar üretilmelidir.

 

Standartlara uyma: Uluslararası, kurumsal ve takım kodlama standartlarına, adlandırma standartlarına dikkat edilmelidir.


Sistemimizi oluşturduktan sonra sıra test aşamasına gelir.


Retro bilgisayar ve test uzmanı

4.TEST

Onaylama / Validation  : Doğru sistemimi yaptık? Başlangıçtaki gereksinimler karşılanıyor mu?, Müşterinin istediği şeyi mi kurduk? Bu müşteriyi mutlu edecek mi ?

sorularına cevap aramaktır.


Doğrulama /Verification ise Sistemi doğru, hatasız mı yaptık?  sorusunun cevabıdır.


Bu sorulara cevap vermek için çeşitli testler gerçekleştirilir.  

 

Test çalışmaları en geniş anlamda ikiye ayrılır. Bunlar Kara Kutu (black box) ve beyaz kutu (white box) testleridir.


Sistemin dışarıdan, koda bakılmaksızın, nasıl çalıştığı anlaşılmaksızın, davranışsal anlamda test edilmesine kara kutu testi denir. Kutunun içinde ne olduğunu bilmeden çalışıp çalışmadığına bakarız. Beyaz kutu testi ise kutunun içinin gözüktüğü kodlara bakarak yaptığımız gözlem ve kontrollerdir.


  • Yazılımın en küçük biriminin, fonksiyonun test edilmesine birim testi denir. 

  • Birleştirilmiş kodun, modülün, yapının test edilmesi ise entegrasyon testidir.

  • Birim gibi küçük parçaların veya birleştirilmiş parçaların değil de komple sistemin bir bütün olarak test edilmesineyse sistem testi denir.

  • Stres, sağlamlık, hız, performans gibi diğer bazı test teknikleri de sistemsel anlamda burada uygulanır.

  • Adından da anlaşılacağı üzere müşterinin dahil olduğu gerçek dünya ortamında, gerçek kullanıcılarla, yayın öncesi son aşamalarda yapılan testlere ise kullanıcı kabul testi denir. 

  • Sistem, testleri geçtikten ve müşterilere yayınlandıktan sonra yeni bir değişiklik, düzeltme yaptığımızda etkilenebilir. Bu yüzden her yayından önce sistem geriye doğru test edilir. Buna da regresyon testi denir.


Peki bir yazılımı %100 test edebilir miyiz ? Tamamen doğru çalıştığından emin olabilir miyiz ? 


Teorik olarak evet ama pratik olarak hayır. Çünkü olası hataları tespit etmek için binlerce on binlerce test senaryosu, yüzbinlerce milyonlarca veri girişi/ kombinasyon gerekebilir. Bu da çok fazla kaynak gerektirir.


Bu yüzden esas önemli olan şey, yaparken hatasız yapmaya odaklanmak, kaliteyi üretim aşamasına entegre etmektir.


5.Sürdürme

Yazılım süreci, kullanıcı gereksinimlerini karşılayan bir yazılımın üretilmesi ve son tüketiciye teslim edilmesiyle sonuçlanır. 


Yazılım yayınlandıktan sonra yeni hatalar bulunabilir, kullanıcılardan yeni gereksinim talepleri gelebilir, yeni ihtiyaçlara yeni özelliklere ihtiyaç duyulabilir, yazılımımızın çalıştığı sistemler, paydaş sistemler, pazar, teknoloji değişebilir. Bu yüzden yazılımımızda güncelleme yapar yeni versiyonlar yayınlarız.


Bakım faaliyetleri içerisinde kodla ilgili sorunlar düzeltilir, yeni özellik talepleri karşılanır, yazılımın daha verimli hale getirildiği, alt yapı ve kod yeniden düzenleme (refactoring) uygulamaları yapılır. 


Bu etkinliklerin yapılıp yazılımın yeni bir sürümünün yayınlanması ile bu döngü yazılım ömrü boyunca devam eder. 


Bakım, çok temel bir faaliyettir ve çok pahalıdır. Çünkü ürün yaşam süresi boyunca analizlerin, geliştirmelerin, testlerin ve kullanıcılara yönelik destek, iletişim faaliyetlerinin sürdürülmesi gerekir.


Bir yazılım yaşam döngüsü metodolojisi olan Scrum'ı öğrenmek için Scrum Yazılım Proje Geliştirme eğitimine göz atabilirsiniz.



Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page