YAZILIM YAŞAM DÖNGÜ MODELLERİ
Bir yazılım projesinin geliştirilmesi sürecinde ;
- Gereksinim
- Analiz
- Proje Planlama
- Tasarım
- Kodlama
- Entegrasyon
- Test
aşamaları yer almaktadır. Geliştirilecek bir yazılım projesinin planlamasından başlayarak müşteriye teslimatına kadar geçirmiş olduğu bütün aşamalara ve bu aşamalardan oluşan döngüye “ yazılım geliştirme yaşam döngüsü ( software development life-cycle -SDLC) “ denir.
Yazılım sektöründe sık kullanılan SDLC modelleri :
· Çağlayan Yaşam Döngü Modeli
· V Süreç Modeli
· Helezonik ( Spiral ) Model
· Evrimsel Geliştirme Süreç Modeli
· Artırımsal Geliştirme Süreç Modeli
· Kodla-Düzelt Yaşam Döngü Modeli
· Hızlı Prototipleme Yaşam Döngü Modeli
Teoride Yazılım Geliştirme Süreci
Teoride yazılım geliştirme süreci, işe sıfırdan başlayarak, gereksinim, analiz, tasarım ve gerçekleştirme adımlarının doğrusal bir biçimde tanımlanmasıyla ifade edilir. Fakat pratikte yazılım geliştirme süreci oldukça farklıdır. Bunun nedeni göz önüne, iki durumun alınmasından dolayıdır. Göz önüne alınan durumlardan birincisi , yazılım geliştiriciler ( software developers ) sonuç olarak insandır ve hata yapabilirler. İkinci durumsa , yazılım geliştirme sürecinde müşterinin gereksinimleri değişebilir. Müşteri gereksinimlerinin yazılım geliştirme sürecinde sıklıkla değişmesi değişen hedef problemi ( moving target problems ) olarak adlandırılır. Bu iki durum göz önünde bulundurulduğunda , yazılım geliştirme süreci doğrusaldır diyemeyiz.
Yazılım geliştirme sürecinin herhangi bir bölümünde, yazılım geliştiricisinin deneyim eksikliğinden ya da dikkatsizliğinden dolayı hatalar meydana gelebilir. Ayrıca müşterinin gereksinimlerinde veya iş sürecinde değişiklikler meydana gelebilir. Böyle durumlarda , geliştirilmekte olan yazılım ürününün tamamlanmadan önce değiştirilmesi gerekmektedir. Bu değişimler müşteri için iyiyken yazılım ürünü için çok kötü olabilir. Yazılım geliştirme süreci doğrusal ve geri dönüşlere imkan tanımıyorsa müşterinin gereksinimlerini yerine getirmek zordur.
Kısaca yazılım geliştirme süreci doğrusal olarak düşünülürse müşteri gereksinimleri değiştiğinde geri dönüşler zor olacaktır. Onun için yazılım geliştirme sürecini döngüsel olarak düşünmeliyiz. Böylelikle geri dönüşler kolay olacak ve tekrar ilerleme söz konusu olacaktır.
Yazılım Geliştirme Yaşam Döngüsü Temel Adımları
1.Planlama
Bu aşama yazılım yaşam döngüsünün ilk adımıdır. Bu adım ile uygulamadaki ilk fizibilite testleri yapılır. İhtiyaç durumları gözden geçirilir. Personel ve kaynak durumları ile ilgili değerlendirmeler yapılır. Bu aşama ile ilgili kesinlikle bilmemiz gereken kısım ise “Proje Maliyet” hesabının bu aşamada yapıldığıdır.
2.Çözümleme
Bu aşamada sistemin işlevleri kesin olarak belirlenir, sistem ile ilgili sorunlar listelenir ve çözüm sistemleri geliştirilir. Bu adımda müşteri, sistem analisti, ürün yöneticisi, yazılım mühendisi, iş analisti vb. konumlar arasında toplantılar yapılır ihtiyaçların net bir şekilde anlaşılıp anlaşılmadığı gözden geçirilir. Bu aşamada kesinlikle bilmemiz gereken kısım ise “Tüm diyagramlar tek tek çizilir, uzmanlar tarafınca proje ile ilgili tüm raporlar yazıldığı” olacaktır.
3.Tasarım
Sistemdeki tüm gereksinimlerin tamamlanması ile birlikte tasarım kısmına geçilir. Gereksinimlere karşılık veren bilgi ya da yazılım sistemi kurulur. Gereksinimlerin müşterinin isteklerini karşılaması beklenir. Arayüzlerin ve sistemin belirlenmesi aşaması yapılır. Tasarım genel olarak ikiye ayrılır.
a) Mantıksal Tasarım
b) Fiziksel Tasarım
4.Gerçekleştirime
Gerçekleştirim dendiğinde aklımıza gelmesi gereken üç sihirli kelime vardır bu üç kelime ile gerçekleştirim aşamasını anlatmak mümkündür bunlar; “Kodlama, Test, Kurulum” olarak nitelendirilebilir. Bu aşamaların ilerleme şekli; tasarım aşamasının belli bir aşamaya gelmesinden sonra kodlama aşaması başlar. Bu aşamada farklı teknikler oluşturulur. Kodlamadaki amaç temiz ve okunabilir kod oluşturmaktır. Test ve kurulum aşaması da kendi içinde teknikler içerebilir.
5.Test
Test aşamasını yalnızca bir başına bir adım gibi algılamak yanlıştır. Buradaki test tüm sistemin genel geçerlemesi olan sistem testidir. Çünkü test her aşamanın sonunda yapılır, her aşama kendine ait test kısmı içerebilir. Buradaki test işlemi sistemin tamamına yapılmakta genel problemlerin tespiti ve giderilmesi üzerinde çalışılmaktadır. Bu aşamadan sonra ürün teslim edilir. Tek başına ürün tabi ki yeterli değildir. Ürün ile ilgili genel bilgiler, kullanım kılavuzu vb. dokümanlar da teslim edilmelidir.
6.Bakım
Bakım aşaması yazılım yaşamı boyunca sürer. Bilmemiz gereken budur. Kalite bakımın bir sonucu olduğundan bakımın kalitesi uygulamanın kalitesi ile doğru orantıda olacaktır. Bakım deyince aklımıza gelmesi gereken ögeler “Hata giderme, yeni eklenti yapmak” olacaktır.
Çağlayan Yaşam Döngü Modeli
En eski, en bilinen ve en temel yaşam döngü modelidir. Yakın zamana kadar en popüler yazılım geliştirme yaşam-döngü modellerinden biridir. Gereksinimlerin baştan belirlenmiş sistemlerin geliştirilmesinde tercih edilmektedir. Bu yaşam-döngü modelinde oluşturulacak sistemlerin her birini proje olarak ele almalıyız. Bu yaşam-döngü modelinde aşamaların en az birer kez tekrarlanmasıyla yazılım projesi geliştirilir. Bu modelde işler aşama aşama yapılarak bir aşama bitmeden diğerine geçilmez. Geriye dönüşler gerçekleşebilir. Her bölümün sonunda dokümantasyon yazılmalıdır. Yazılım projesiyle ilgili tüm iş ürünlerinin belgelenmesi gerekir. Eğer bir bölümde belgeleme yapılmamışsa ve test edilmemişse o bölüm tamamlandı olarak sayılmaz.
Avantajları
•Birimlere bölünmüştür.
•Gereksinim adımı tamamlandıktan sonra temel oluşur.
•Erken iş yapılır.
Dezavantajları
•Projede bir aksaklık bulunduğunda fazla geri dönüş bulunduğundan iki ya da daha fazla geri dönüşlerin maliyeti çok fazladır.
•Bir kısım bitmeden diğer kısma geçmek risklidir.
V Süreç Modeli
V süreç modelinde “v” harfi yapısında yol izlenir ve adımlar bu şekilde gerçekleştirilir. V harfinin sol tarafı üretimi temsil ederken sağ taraf test işlemini temsil eder. Bu modelde yer alan çıktıları “Kullanıcı Modeli”, “Mimari Model” ve “Gerçekleştirim Modeli” olarak üç başlık altında inceleyebiliriz.
Kullanıcı modelinde geliştirme sürecinin kullanıcıyla ilişkileri tanımlanmakta ve istemin nasıl kabul edeceğine ilişkin test belirtimleri ve planları ortaya çıkarılmaktadır. Mimari modelde sistem tasarımı ve oluşacak alt sistem ile tüm sistemin test işlemlerine ilişkin işlevler göz önüne alınıyor. Gerçekleştirim modelindeyse yazılım modüllerinin kodlanması ve testine ilişkin fonksiyonlar ele alınır.
Bu model belirsizliklerin az, iş tanımlarının belirgin olduğu bilişim teknolojileri için projeleri için uygundur. Bu süreç modeli, kullanıcının projeye katkısını artırmaktadır. Kullanıcı yazılım projesinin geliştirilmesi süresince projede yer almaktadır.
Avantajları
•Takibi kolay sistem.
•Kullanımı kolay bir sistem.
Dezavantajları
•Aşamalarda tekrar yok.
•Risk çözümleme yok.
Helezonik ( spiral ) Model
Helezonik modelin üzerinde durduğu en temel konular risk analizi ve prototip üretmedir. Her döngü öncesinde içerisinde bulunan bölümün risk analizi yapılır. Her döngü sonunda yeniden planlama yapılarak kısıt, ister ve hedefler yeniden hesaplanır. Bu model, önceden geliştirilmiş yazılım bileşenlerinin yeniden kullanıldığı projeler için çok uygundur. Helezonik modelin en büyük getirisi risk analizinin detaylı ele alınmasıdır. Bu nedenle zaman ve maliyet daha kolay hesaplanabilir. Özellikle güvenlik yazılımlarının oluşumunda bu model kullanılmaktadır.
Avantajları
•Kullanıcı sistemi daha erken görebilir.
•Parçalara böler, önce risk taşıyanı çözer.
•Pek çok yazılım modelini içinde barındırır.
•Hataları erken giderme şansı tanır.
Dezavantajları
•Küçük ve düşük riskli projeler için oldukça pahalı bir sistemdir.
•Kompleks bir yapıya sahiptir.
•Fazla dokümantasyon oluşur.
Evrimsel Geliştirme Süreç Modeli
Bu model ilk tam ölçekli modeldir. Çok birimli organizasyonlarda kullanmak için geliştirilecek projeler için kullanımı uygundur. Örneğin; bankacılık uygulamaları bu model kullanılarak geliştirilebilir. Bu modelde sistem zaman içerisinde kazanılan anlayışa göre sürümler oluşturulur. Müşteriden alınan gereksinimlerle proje geliştirilmeye başlanır ve ilk sürüm elde edilir. Müşteriden gelen yeni taleplerle sisteme yeni özellikler eklenerek diğer sürümler oluşturulur. Modelin başarısı geçirdiği ilk evrimin başarısına bağlıdır.
Avantajları
•Müşteri gereksinimlerinin anlaşılması kolay
•Projenin geliştirilmesi süresince ortaya çıkabilecek riskleri ve hataları azaltır.
Dezavantajları
•Konfigürasyon ve değişiklik yönetiminin zordur.
•bakım yapmak zordur.
Artırımsal Geliştirme Süreç Modeli
Bu modelde sistem geliştirme ve teslim parçalara dönüşür. Her teslimde beklenen işlevselliğin bir parçasını karşılar. Müşteri gereksinimlerinin önemlerine ve birbirine bağımlılıklarına göre sıralanarak her yinelemede bu gereksinimlerin bir kısmı giderilir. Bir parça geliştirilmeye başlandığında, gereksinim alınmaya devam edilmez. Olası değişiklikler bir sonraki teslimde giderilir. Üretilen her teslim sürümü bir öncekini kapsamalı ve giderek artan işlevselliğe sahip olacak şekilde geliştirmeye devam edilir.
Uzun zaman alabilecek ve sistemin eksik işlevsellikle çalışabileceği türdeki projeler bu modelle geliştirilebilir.
Avantajları
•Başarısızlık riski az.
•Sistem fazla sınanır.
•Böl-Yönet tarzında sisteme uygundur.
Dezavantajları
•Deneyimli personel gerektirir.
•İyi tanımlama gerektirir.
•Tekrar yoktur.
Kodla Düzelt Yaşam Döngü Modeli
Yazılım ürünü gereksinim, analiz ve tasarım bölümlerine dikkate almadan direkt kodlama ve test işleminin yapılarak oluşan yaşam döngü modelidir. İlk bölümde yazılımın ürünü olan ilk sürüm ortaya çıkarılır. Ürün istenen son şekle gelinceye kadar geliştirilir.
Avantajları
•Yazılım geliştirmenin en kolay yoludur.
Dezavantajları
•Dokümantasyon yoktur.
•Bakımı zordur.
•Maliyeti yüksektir.
Hızlı Prototipleme Yaşam Döngü Modeli
Prototipleme yazılım süreç modelinde amaç isminden de anlaşılacağı gibi prototip üretip geliştirmektir. Gereksinimlerin doğru anlaşılması bu süreç için çok önemlidir. Bu modelde Hızlı plan, Hızlı Tasarım, Hızlı kodlama ön plandadır.
Avantajları
•Karmaşa ve yanlış anlaşılmayı engeller
•Yeni gereksinimlere açıktır.
•Risk kontrolü var.
Dezavantajları
•Belgeleme olmayan hızlı ve kirli prototipler oluşur.
•Hedefler net değilse güvenlik açığı problemi oluşur.
•Düzeltme adımı atlanırsa düşük performansa neden olabilir.
KAYNAKÇA
http://www.ugurkizmaz.com/YazilimMakale-1825-Yazilim-Yasam-Dongusu-Nedir.aspx
http://furkanalniak.com/yazilim-muhendisligi-yazilim-yasam-donguleri/
https://yazilimtestikariyerrehberi.blogspot.com/2018/02/v-model-nedir.html
http://furkanalniak.com/yazilim-muhendisligi-yazilim-surec-modelleri/
YAZILIM MÜHENDİSLİĞİNDE MODERN YAKLAŞIMLAR (DR. FATİH YÜCALAR- DR. EMİN BORANDAĞ )- 1. BASIM, ARALIK 2018
EMİNE ÖZTÜRK