Blog

Yazılım Geliştirme Yaşam Döngüsü Modelleri (The Software Development Life Cycle-SDLC )

Yazılım geliştirme projelerinin hedefleri ve öncelikleri projeden projeye değişiklik göstermektedir. Proje hedefleri ve önceliklerindeki farklılıklara bağlı olarak projenin en elverişli şekilde sürdürülmesi için çok sayıda yazılım geliştirme modeli geliştirilmiştir. Her yazılım geliştirme modeli “Yazılım Testinin Temelleri” yazısında yer alan yazılım testinin prensiplerinden biri olan “erken test” prensibini desteklemelidir. Genel anlamda yazılım geliştirme modelleri sıralı ve agile (çevik, artımlı) olmak üzere ikiye ayrılmaktadır.

Bu yazıda modeller derinlemesine anlatılmamış, sadece genel bir bakış açısı sunma amacıyla anlatılmıştır.

Sıralı Yazılım Geliştirme Modelleri

1) Şelale (Waterfall) Modeli

Proje sürecinde sıralı bir şekilde tüm faaliyetlerin yapıldığı yazılım geliştirme modelidir. Bu model katı bir sırayla ilerlediği yani bir önceki aşama bitmeden diğer aşama başlamadığından dolayı proje teslimi geç olabilmektedir. Geriye dönük olarak bir geliştirme olmadığı için daha çok gereksinimlerin net bir şekilde anlaşıldığı küçük projelerde kullanılmaktadır.

Resim 1 – Şelale Modeli

2) V Modeli

Şelale modeli gibi proje faaliyetlerinin sıralı bir şekilde yürütüldüğü bir modeldir ancak şelale modeline ek olarak her proje faaliyetine karşılık gelen bir test faaliyeti vardır. Dolayısıyla bu model erken test presibini desteklemektedir. Bu model “Doğrulama (Verification)” ve “Onaylama (Validation)” modeli olarak da bilinmektedir.

Doğrulama (Verification) yazılımın geliştirilme aşamasında kod çalıştırılmadan(statik analiz) gereksinimlerin sağlanıp sağlanmadığının değerlendirilmesidir.

Onaylama (Validation) yazılımın geliştirme aşaması tamamlandıktan sonra gereksinimlerin karşılanıp karşılanmadığını dinamik testler (fonksinel, fonksiyonel olmayan testler ) ile kodların çalıştırılarak yapıldığı testlerdir.

Yaygın olarak doğrulama işlemi tasarımcılar, onaylama işlemi ise test mühendisleri tarafından yapılmaktadır.

Resim 2 – V modeli

Agile (Çevik) Yazılım Geliştirme Modelleri

Proje fazlara ayrılarak parçalar şeklinde projenin yürütüldüğü modellerdir. Her bir döngü o fazda yapılacak özelliklerin analizini, tasarımını ve testini içermektedir. Bu tür modellerde proje teslimi tüm fazlar tamamlanmadan yapılabileceği için sıralı yazılım geliştirme modellerine göre daha erken yapılabilir. Yazılım geliştirme süreci müşteri kullanımı sırasında devam ettiği için süreç boyunca müşteriden gelen geri bildirimler sayesinde yazılımın kullanıcı ihtiyaçlarını karşılaması sağlanabilir. Döngülere genel olarak “sprint” ifadesi kullanılmaktadır. Tüm sprintler bittiğinde proje bitmiş sayılmaktadır. Sprintler kullanılan modellere göre uzun veya kısa olabilmektedir.

Yaygın olarak kullanılan agile yazılım geliştirme modelleri;

  • Scrum
  • Kanban
  • Rational Unified Process
  • Spiral

Resim 3- Agile Yazılım Geliştirme Modeli

1)Scrum

Agile(çevik) yazılım geliştirme methodlarından biridir. Dolayısıyla proje süreci sprintler halinde yönetilmektedir. Sprintlerin ve proje içerisinde yapılan görevlerin başlangıç ve bitiş tarihleri mevcuttur. Genellikle büyük/karmaşık projelerde kullanılmaktadır. Scrum yazılım geliştirme modelinin 3 temel ilkesi vardır.

  • Şeffaflık (transparency): Projede yaşanan problemler tüm proje çalışanları tarafından bilinmelidir.
  • Denetim (inspection): Proje ilerleyişi düzenli olarak denetlenebilir olmalıdır.
  • Uyarlama(adaption): Müşteri veya proje yöneticileri tarafından yapılan değişikliklere uyum sağlanabilmelidir.

Bir sprintte yapılacak olan gereksinimler (backlogs) “scrum board” üzerinde gösterilirler. Scrum board üzerinde yapılacak olan işler “To Do” durumuna, yazılım geliştiricinin başladığı işler “In Progress” durumuna, test uzmanının o gereksinimi kontrol ettiği süreçteki işler “To Verify” durumuna ve en son olarak test uzmanı gereksinimi doğruladıktan sonraki işler “Done” durumuna çekilir.

Scrum yazılım geliştirme modelinde projenin ilerleyişini kontrol etmek için sıklıkla “burndown chart” kullanılır. Bu çizelgede sprintte kalan işler ve sprintte geçen gün sayısından faydalanılmaktadır.

Resim 4 – Scrum Board Örneği

2)Kanban

Çıktığı ilk yıllarda öncelikle endüstride kullanılmaya başlansa da sonraki yıllarda yazılım dünyasında da kullanılmaya başlanmıştır. Agile(çevik) yazılım geliştirme methodlarından biridir. Proje süreci sprintler halinde yönetilse de Scrum modelinden farklı olarak sprintlerin belirli bir başlangıç ve bitiş tarihi yoktur yani bir önceki işin bitişi sonraki işin başlamasını tetiklemektedir. Bu sebepten dolayı kanban modelinde proje işleyişinin yönetimi daha basittir dolayısıyla çok fazla toplantı yapmaya gerek kalmamaktadır. Proje yönetim ihtiyacının az olmasından dolayı projedeki rol sayıları Scrum modeline göre daha azdır, daha esnek bir yapıya sahiptir.

Yorum Bırakın

E-posta hesabınız yayınlanmayacaktır. Gerekli alanlar "*" ile işaretlenmiştir.