Yazan:Şadi Evren ŞEKER (mesaj) 02:31, 8 Mayıs 2013 (EEST)
Bu yazının amacı, İngilizcedeki Software Development Life Cycle (SDLC) yani Türkçe karşılığı ile yazılım geliştirme hayat dairesini (yaşam döngüsünü) açıklamaktır.
Her geliştirme işlemi özellikle de ürün geliştirme işlemi belirli aşamalar içerir. Yazılımların da birer ürün olduğu unutulmamalıdır. Bu bağlamda nasıl bir otomobil, bir uçak veya bir televizyonun geliştirilmesi için çeşitli aşamalardan bahsetmek mümkünse, yazılım için de benzer aşamalar mevcuttur. Genel olarak bu ürünlerin tamamını birer sistem olarak görmek ve sistem geliştirme metodolojisi ismi altında incelemek mümkündür.
Her sistem öncelikle tasarlanır, üretilir, piyasaya arz edilir ve neticede piyasadan yok olur, yerine yeni bir sistem arz edilir ve bu daire böylece devam eder. Benzer şekilde yazılım da öncelikle bir ihtiyaçla başlar. Birileri bir bilişim sisteminin neler yapması gerektiği, ihtiyaçlara nasıl cevap vermesi gerektiği konusunda fikirle işe başlar. Bu bilişim sistemini kullanacak olan yapının altında ayırlabilecek kaynaklar belirlenir. Ardından bu yazılımın yerine ikame edileceği mevcut sistem tahlil edilir. Örneğin bir Doküman yönetim sistemi için mevcut işleyiş incelenir. Mevcut işleyişe yeni beklentiler sisteme eklenerek, sistemin tanıtımı yapılır, gerekli eğitimler verilir ve sistemin kurulumu gerçekleştirilir.
Her kurumda benzer aşamalardan geçilen yazılım geliştirme süreçleri ve bilişim sistemleri kavramlarını farklı kelimeler ve aşamalarla anlatmak mümkün olsa da genel olarak aşağıdaki maddeler altında toparlamak mümkündür.
- Planlama ve seçim aşaması
- Tahlil (analiz) aşaması
- Tasarım (Design) aşaması
- Fiil aşaması (implementation)
Yukarıdaki aşamalar aşağıdaki şekilde temsili olarak resmedilebilir:
Yukarıdaki şekilde de temsili olarak resmedildiği üzere bu dört aşama aslında bir dairenin merhaleleridir. Yani bütün aşamalar tamamlandıktan sonra tekrar başa dönülerek herşey yeniden devam eder. Bunu örneğin piyasadaki ürünlerin yaşamlarının son bulması ve yeniden yeni ürünlerin piyasaya girmesi olarak görmek mümkündür. Aslında her yazılımın da bir ömrü vardır ve bu ömür tamama erdikten sonra yazılımda gerekli yenilemeler ve değişikliklerle yeni yazılım müşterinin / kurumun hizmetine sunulur ve bu süreç bir süreklilik arz eder.
Yukarıdaki bu aşamaları aşağıdaki şekilde detaylandırmak mümkündür.
Sistem planlama ve seçim aşaması
Bu aşamada, iki önemli adım atılmalıdır. Birincisi birisinin yeni ve daha gelişmiş bir bilişim sistemine olan ihtiyacı belirtmesi ikincisi ise bilişim sisteminin kullanılacağı ortamdaki ihtiyaçların belirlenmesidir.
Bu iki adım atılırken aşağıdaki yan amaç ve sorular gündeme getirilmelidir:
- Mevcut sistemdeki problemlerin çözülmesi için kullanılan yöntemler ve bu yöntemlerin iyileştirilmesi
- Sistemin iyileştirilmesi için ortamdaki beklenti düzeyi ve buna olan inanç
Bilişim sisteminin gerekliliği ve sisteme yapacağı katkı düzeyi
- Planlama: Bu aşama, planlamanın bütün gereklerini tamamlar. Zaman kaynak ayrımı, personel, kurumun mevcut bilişim seviyesi ve yeni sistemin kullanılabilirliği, uzun vadede sistemin bakımı ve sürdürülebilirliği gibi çok sayıda parametre bu aşamada incelenir. Bu aşamanın tamamlanmasının ardından bir uygunluk raporu (feasibility report) hazırlanarak kurumdaki irade sahiplerine (yönetim) sunulur ve bilişim sisteminin yapacağı olumlu katkıların maliyet analizine göre katma değeri olduğu kesinleştirilir.
- Sistem Tahlili (Analiz) : Bu aşamada sistem analizi yapılır ve geliştirilmekte olan bilgi sisteminin etkilediği diğer birimler ve mevcut işleyiş tahlil edilir. Örneğin geliştirilmekte olan sistem ödeme emirleri ile ilgili olsun, bu durumda girilen emirlerin satış, defteri kebir, stok kayıtları gibi çok sayıdaki etkilediği diğer kayıt tahlil edilerek bu sistemlerle olan etkileşimi çalışılır.
- Sistem Tasarımı (Design): Bu aşamada sistemin bütün bileşenleri ve genel yapısı tasarlanır. Çok çeşitli tasarım yöntemleri ve aşamaları olmakla beraber genelde mantıksal bir tasarım aşamasından geçilerek sistemin hedefleri ve etkileşimde olduğu alt bileşenleri arasındaki uyum gözetilir. Ardından bu mantıksal tasarımın fiziksel tasarıma çevrilmesi aşaması gelir. Fiziksel tasarıma çevrilim aşamasında, programlama dilinden kullanılacak olan teknolojilere ve sistemin bütün parçalarına kadar olan tasarımı tamamlanır. (veri tabanı tasarımı, kullanıcı ekranları, veri akış yolları gibi).
- Uyarlama ve işletme aşaması (implementation and operation): Bu aşama, şimdiye kadar yapılan bütün kağıt üzerindeki işlemlerin gerçeğe dönüştürüldüğü ve yazılım halini aldığı aşamadır. Kodlama, kod kontrolleri, testleri, kurulumu, yönetimi gibi işlemlerin tamamı bu aşamada yapılır.
Yukarıdaki 4 aşama kapsamında SDLC adımlarının çıktıları aşağıdaki şekilde özetlenebilir:
Safha | Neticeler |
---|---|
Planlama ve seçim safhası | Sistem öncelikleriVeri, ağ, donanım ve bilgi sisteminin mimarisiSeçilmiş olan proje için detaylı çalışma planıSistemin geçerlilik alanı için özelliklerSistemin iş akışı açısından önemi |
Sistem Tahlili | Mevcut sistemin tanımıMevcut sistemin düzeltilmesi, iyileştirilmesi, değiştirilmesi için önerilerMuhtelif sistemler için açıklamalar ve alternatiflerin değerlendirilmesiYeni teknoloji gereksinimlerinin belirlenmesi ve geçiş için öneriler |
Sistem Tasarımı | Sistemin bütün alt bileşenleri için detaylı birer tasarım |
Uyarlama ve işletme | KodDokümantasyonEğitim ve destek kaynaklarıYeni sürüm için kod, eğitim ve destek aşamalarındaki değişiklikler. |
Yukarıdaki 4 adımlı yaklaşımın yanında Kendall and Kendall tarafından sunulan 7 adımlı yaklaşımdan söz etmek de mümkündür. Bu yaklaşım aşağıdaki adımlardan oluşur (bkz. System Analysis and Design, Kendall and Kendall):
1. Problem, fırsatlar ve hedeflerin belirlenmesi
2. İnsan seviyesi enformasyon ihtiyaçlarının belirlenmesi
3. Sistem ihtiyaçlarının (isterlerinin) belirlenmesi
4. Şimdiye kadar olan adımlar ışında elde edilen isteklere cevap veren bir sistemin tasarlanmsası
5. Yazılımın geliştirilmesi ve dokümantasyonu.
6. Sistemin testleri ve bakım adımlarının belirlenmesi.
7. Sistemin gerçeğe alınması ve değerlendirilmesi.
Yine Kendall ve Kendall kitaplarında bu geliştirme sürecindeki kaynak harcama miktarlarını aşağıdaki şekilde modellemektedir.
Şekilden de anlaşılacağı üzere, sistemin geliştirilme aşamasında sürekli artan (üstel olarak artan) proje maliyeti varken, projenin canlıya geçmesinin ardından bu maliyet düşmeye başlar. Zamanla sistemdeki istek ve ihtiyaçların ölçeğinin artması ile proje maliyetleri de artmaya başlar. Hatta sistemin geliştirme aşamasındaki maliyetlerin bile üzerine çıkabilir. Bu yüzden projenin tasarımının ve analizinin ileride çıkabilecek ihtiyaçları en verimli şekilde karşılayacak yeterlilikte olması çok önemlidir.
Ayrıca yukarıdaki SDLC yaklaşımı için alternatif olarak sunulan yöntemler veya araçlardan da bahsetmek mümkündür.
Örneğin bilgisayar destekli yazılım mühendisliği araçları (computer allied software engineering, CASE tools), ortak uygulama tasarımı (joint analysis design, JAD), hızlı uygulama geliştirme (rapid application development, RAD), katılımcı tasarım (participatory design, PD), atik yöntemler (agile methodologies) gibi farklı birer yazı konusu olan yöntemler kullanılabilir.
SDLC klasik bir yaklaşım olup, yazılım mühendisliği alınındaki şelale modeline benzetilebilir. Bu modelin yanında çevik geliştirme ve nesne yönelimli geliştirme gibi yöntemler de kullanılabilir.