SDLC (System/Software Development Life Cycle) - Industryolog
Bu yazımda SDLC Türkçe açılımıyla Sistem/Yazılım Geliştirme Yaşam Döngüsü’nden ve modellerinden bahsedeceğim.
Öncelikle Sistem Geliştirme Yaşam Döngüsü’nü anlamak için sistem hakkında genel bilgi sahibi olmalıyız. Sistem, bir amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan sınırları belirlenmiş bir bütündür. Sistemde üç anahtar kavram vardır; öğe, ilişki, amaç. Sistemin doğru tanımlanması ve iyi analiz edilmesi bu süreci kolaylaştıracaktır. Temelinde analiz, tasarım, geliştirme, uygulama ve değerlendirme safhalarından oluşan SDLC, en iyi sistemin oluşması amacıyla uygulanmaktadır. Aşağıda karşılaşılan bir problemde çözüm odaklı yaklaşımın aşamaları gösterilmektedir.
Bu temel bilgiler ışığında Yazılım Geliştirme Döngüsü’nü ele alırsak iş analizinin temelini oluşturmaktadır. Projenin başlangıcından bitişine kadar gerçekleşen süreci kapsar. Gereksinim analizi, tasarım, uygulama, test etme, geliştirme aşamalarından oluşan bir döngüyü izlemektedir.
1.Gereksinim analizi aşamasında iş, kullanıcı, fonksiyonel ve teknik gereksinimler belirlenmektedir. Bir nevi projenin ihtiyaçları listelenir. Listelenen ihtiyaçların ayrıntılı tanımlamaları yapılarak bu ihtiyaçları karşılayacak çözümler belirlenir. Böylece projenin analizi de elde edilmiş olur. Fizibilite analizi gerçekleştirilir.
2.Tasarım aşamasında belirlenen gerekli bileşenler doğrultusunda proje adımları oluşturulur. Proje sürecinde yazılımın gelişim aşamalarının kolayca anlaşılacağı şekilde dökümante edilir. İhtiyaçları karşılayabilen donanım, yazılım, ağ, veri kaynakları gibi özellikler geliştirilir.
3.Uygulama, yapılan analiz ve tasarım planlamalarında oluşturulan çerçevede projenin yazılıma döküldüğü ve geliştirildiği aşamadır. Gerekli algoritma geliştirme ve kodlamalar yapılır.
4.Uygulamaya dökme aşaması bittikten sonra herhangi bir aksaklığın önceden belirlenmesi amacı ile sistem test edilir. Eğer hatalar varsa giderilir. Sonrasında müşteri kullanımına sunulur.
5.Döngünün son aşamasında müşterilerden gelen istekler doğrultusunda iyileştirmeler yapılır. Ayrıca bu süreçte oluşabilecek hatalar düzeltilir ve yeni özellikler eklenir. Sistemin izlenmesi ve değerlendirilmesi sürecini kapsar.
İş veya sistem analizinde Endüstri Mühendisleri yazılımcılarla ortak çalışmaktadır. SDLC’nin uygulanmasında aynı projede yer alanların birbirini anlayarak çalışması önemlidir. Öncelikli olarak müşteri ihtiyaç ve istekleri doğru biçimde belirlenmelidir. Sonrasında müşteri ihtiyacını karşılayan bir yazılımın oluşabilmesi için bunun yazılımcıya anlaşılır şekilde iletilmesi gerekmektedir. Bu şekilde SDLC’nin ilk aşamaları başarılı bir şekilde oluşturularak hataların ortaya çıkma olasılığı azaltılır. Projenin yazılıma dökülmeden önceki aşamada rapor oluşturularak programcıya ulaştırılması görevi sistem analistinin görevidir.
Temel SDLC Modelleri
Agile: Bu model son zamanlarda birçok organizasyonda kullanılmaktadır. Hızlı yanlış yapma bu model için avantaj durumundadır. Çünkü her aşamasında ürün kontrol edilir. Bir hatayla karşılaşıldığında ilerlemeden geri dönüp hatayı düzeltme imkanı sağlar.
Lean: Yalın üretim uygulamalarından ve ilkelerinden esinlenilmiştir. Gereksiz hiçbir iş yapılmayacak şekilde o an ne üzerine çalışılıyorsa ona odaklanılır. Çoklu görevlere yer yoktur. Müşteri memnuniyetinin sağlanmasını israfların ortadan kaldırılmasıyla olacağını temel alır.
Waterfall: Yapılandırılmış en eski SDLC modeli olarak kabul edilir. Aynı zamanda oldukça basit bir yaklaşımı vardır. Geriye dönüş olmadan bir aşamayı bitirip diğer aşamaya geçilir.
Iterative: Yinelemeli modeldir. Tamamen bilinen ihtiyaçlarla başlamak yerine döngü küçük parçalara bölünerek süreç kontrolü sağlanır. Bu modelde ilk aşama tamamlandığında yazılımın basit bir bölümü elde edilmiş olur.
Spiral: En esnek modellerden olup proje bitimine kadar dört aşamadan geçer. Genellikle büyük projelerde kullanılırken avantajı risk yönetiminde kolaylık sağlamasıdır.
DevOps: Yeni bir model olup Agile ve Lean uygulamalarından etkilenerek ortaya çıkmıştır. Disiplin, sürekli geri bildirim ve süreç iyileştirme ve manuel geliştirme süreçlerinin otomasyonu DevOps modelinin tüm özellikleridir.
Yazılım geliştirme projesi için doğru SDLC modelini seçerken dikkatli şekilde düşünülmesi gerekmektedir. Fakat projenin planlanması ve yönlendirilmesi için modelin başarılı olması sadece bir bileşeni oluşturur. Daha da önemli olan her ilerleyiş ve gerileyişte anlık zorlukları ekip olarak karşılayıp başarılı şekilde başa çıkabilmektir.