Yazılım Mühendisliği kapsamındaki Yazılım Geliştirme Metodolojileri, bir bilgi sistemini geliştirme sürecinin yapımını, planlamasını ve kontrolünü sağlayan bir framework tür. Her farklı framework güçlü ve zayıf yanlarıyla birlikte zaman içinde olgunlaşır. Bir sistem geliştirme metodolojisi her proje için uygun olmayabilir. Her metodoloji, projenin teknik, organizasyonel ve takım unsurlarına göre farklı özellik gösterir. Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme süreci yaklaşımıyla bir yazılım geliştirme felsefesi Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler. Bu frameworkler çoğunlukla metodolojiyi geliştiren, destek veren ve onu ilerleten organizasyon tiplerine bağımlıdır. 1 / 10
Tarihçe En eski yazılım geliştirme araçlarından biri, kökleri 1920 lere dayanan flowchart lardır. Yazılım geliştirme metodolojisi 1960 lara kadar tam olarak ortaya çıkmamıştır. Yazılım geliştirme yaşam döngüsü (SDLC), bilgi sistemleri inşası için biçimlendirilmiş en eski metodoloji olarak nitelendirilebilir. SDLC nin ana fikri bilgi sistemi geliştirme sürecinin planlanmış, yapısal ve metotlu bir şekilde olmasını kovalamaktır. Bu metodolojinin 1960 lardaki temel hedefi geniş ölçekli fonksiyonel business sitemleri, geniş ölçekli büyük şirketlerde geliştirmekti. Bilgi sistemleri aktiviteleri yüklü veri işlemleri ve yoğun hesaplama işlemleri etrafında döner. Spesifik Yazılım Geliştirme Metodolojileri 1970 lerde Yapısal programlama 1980 lerde Yapısal sistem analizi ve tasarımı metodolojisi 1990 larda Nesne yönelimli programlama Rapid Application Development 2 / 10
Scrum Development Team software process 2000 lerde Rational Unified Process Extreme Programming Agile Unified Process Intgrated Methodology Yazılım Geliştirme Yöntemleri Her yazılım geliştirme metodolojisinin, yazılım geliştirme açısından az ya da çok kendi yaklaşımları vardır. Aşağıda birkaç spesifik metodoloji tarafından geliştirilen genel yaklaşımları görüyoruz; Waterfall: Lineer tip framework Prototyping: İteratif tip framework 3 / 10
Incremental: Lineer ve iteratif tip framework kombinasyonu Spiral: Lineer ve iteratif tip framework kombinasyonu Rapid Application Development: İteratif tip framework Extreme Programming Waterfall Model Waterfall model, yazılım geliştirmenin gereksinim analizi, tasarım, implementasyon, test, entegrasyon ve bakım gibi fazları boyunca aşağıda doğru (şelale gibi) devam eder gibi göründüğü sıralı geliştirme sürecidir. Waterfall modelinin temel prensipler; Proje ardışık fazlara bölünmüştür. 4 / 10
Temel vurgu, tüm sistemin planı, iş programı, hedeflenen tarihi, bütçesi ve implementasyonu üzerindedir. Proje süreci devam ederken yeni bir faza başlamadan önce tamamlanmış son faza ait özellikle kullanıcıların ve IT yönetiminin formal yorumlarını, onay ve kabul imzalarını içeren kapsamlı şekilde yazılmış bir dokümanın varlığı. Prototyping Yazılımda prototipleme, istenilen yazılım kodlanırken, yazılımın tamamlanmamış bir prototipinin oluşturulma sürecindeki aktiviteleri içeren bir framework tür. Prototyping in temel prensipleri; Tek başına bir şey ifade etmeyen, bütünsel bir geliştirme metodolojisidir. Fakat bütünün belirli parçalarını ele alma yaklaşımının aksine daha geleneksel bir geliştirme metodolojidir. (Örneğin incremental, Spiral veya RAD gibi) Projeyi küçük segmentlere ayırarak ve geliştirme sürecinde projenin daha kolay değiştirilebilir olmasını sağlayarak öngörülen proje risklerini azaltmaya çalışır. Kullanıcılar sürece dâhil edilmişlerdir. Bu sayede nihai implementasyonda kullanıcıların onay verme oranı/olasılığı artmış olur. Prototip, kullanıcı gereksinimlerini karşılayana kadar olan süreçte iteratif şekilde sistemin küçük ölçekli modelleri geliştirilir. Reddedileceği düşüncesiyle geliştirilen prototiplerin bazıları prototip halinden gerçek çalışan sistem haline doğru evrimleşebilir. 5 / 10
Gerçek business problemi anlamak, yanlış problemi çözmekten kaçınmak için gereklidir. Incremental Lineer ve iteratif sistem geliştirme metodolojilerini içermesi açısından muhtelif metotlar kullanılabilir. Projeyi küçük segmentlere ayırarak ve bu sayede kodlama sürecinde kolay değiştirilebilir olmasını sağlayarak projenin olası risklerinin azaltılması hedeflenir. Incremental metodunun temel prensipleri; Waterfall modelinin küçük parçalar halinde dizisi gibidir. Burada waterfall geliştirme modelinin tüm fazları sistemin küçük bir parçası için tamamlanmış durumdadır. Waterfall yaklaşımla ilk yazılımsal konsept, gereksinim analizi ve sistem mimarisi tasarımı belirlenir. Sonrasında da finalize edilmiş prototipin sisteme yüklenmesi ile sonuçlanacak olan prototipleme süreci ile devam edilir Spiral 6 / 10
Spiral model, top-down ve bottom-up yaklaşımlarının avantajlarının kombine edildiği, tasarım ve prototipleme aşamalarını içeren bir yazılım geliştirme sürecidir. Temel prensipler; Risk değerlendirmesi, projeyi küçük parçalara ayırarak riskin minimize edilmesi, geliştirme süresinde kolay değiştirilebilir olmasının sağlanması gibi noktalara odaklanılmıştır. Proje yaşam döngüsündeki her aşama, proje kapsamında hazırlanan genel bir operasyonel kavram dokümanından her uygulamanın kendi kodlarını içeren spesifik dokümanına kadarki her aşama ve ürünün ve detaylarının her bir adımı boyunca kendi içinde bir ilerleme sağlar. Proje yaşam döngüsü aşağıdaki 4 temel çeyrekten oluşur; o Yinelemelerdeki hedefler, alternatifler ve kısıtları tespit etmek o Alternatifleri değerlendirip riskleri tanımlamak ve çözümlemek o İterasyondaki teslim edilebilir ürünleri geliştirmek ve doğrulamak. 7 / 10
o Bir sonraki iterasyonu planlamak Her döngüye paydaşların tespiti ve ile başlanır ve her döngüyü son bir kez gözden geçirerek ve taahhütle sonlandırılır. Rapid Application Development (RAD) RAD, iteratif geliştirme ile prototiplemenin kurgusunu kapsayan bir yazılım geliştirme metodolojisidir. Genellikle James Martin taafından 1991 de ortaya atılan yazılım geliştirme süreci ni tarif etmek için de RAD terimi kullanılır. Temel prensipleri; Anahtar hedef, az bir yatırım maliyetine ile hızlı kod geliştirerek yüksek kalitede sistemler üretmektir. Projeyi küçük segmentlere ayırıp geliştirme sürecince kolay değiştirilebilir olması sağlanarak proje riskinin azaltılmasına çalışılır. Hızlı bir şekilde yüksek kaliteli sistemleri iteratif prototipleme motedolojisini projenin herhangi bir safhasında kullanarak, kullanıcıları aktif şekilde dahil ederek ve otomatize edilmiş geliştirme araçları kullanarak sunmaya çalışır. Bu araçlar Grafik Kullanıcı Arayüzü (GUI) geliştiricileri, Bilgisayar Destekli Yazılım Mühendisliği (CASE) araçları, Veritabanı Yönetim Sistemleri (DBMS), 4. Nesil programlama dilleri, kod generator leri ve nesne yönelimli teknikleri kapsar. Anahtar vurgu, business ihtiyaçları karşılamak üzerinedir. Bu durumda teknolojik ve teknik başarı daha az önem arz eder. Proje kontrolü, kod geliştirme ve teslim süresi tanımlama konularında önceliklendirme yapılmasını sağlar. Proje uzamaya başladıysa, yaklaşım gereksinimleri teslim tarihine göre revize etmek olmalı, teslim süresini geciktirecek şekilde değil. 8 / 10
Genel olarak Bileşik Uygulama geliştirme- Joint Application Development(JAD) yi kapsar. Kullanıcılar hem yapısal çalıştaylar hem de kolaylaştırılmış elektronik etkileşimler vasıtasıyla mutabakata varma çalışmalarında sitem tasarımına yoğun şekilde dâhil edilmiştir. Kullanıcıların aktif şekilde dâhil olması kaçınılmazdır. Prototiplerin atıl olmasına karşın yazılımsal ürün iteratif şekilde üretilir. İleride yapılacak yazılım ve destek faaliyetlerine kolaylık sağlayacak dokümanlar üretilir. Standart sistem analizi ve tasarımı teknikleri bu framework e uydurulabilir. Diğer yazılım geliştirme yaklaşımları Diğer kavramsal metotlar şunlardır; Nesne yönelimli analiz ve tasarım (OOAD) adıyla da bilinen Nesne yönelimli geliştirme metodolojileri. 6 diyagram içerir: Sınıf(class), nesne(object), durum değişim(state transition), etkileşim(interaction), modül ve süreç diyagramları. 1970 lerde IBM araştırıcılarından Harlan Mills in yapısal programlamayla geliştirdiği Top-down programlama. 9 / 10
UML temelli iteratif yazılım geliştirme metodolojisi yaklaşımı olan Unified Process (UP). UP, y azılım geliştirmeyi her biri bir ya da birden fazla yürütülebilir iterasyonlardan meydana gelen 4 faza ayırmıştır. Başlangıç (Inception), Detay (Elaboration), Yapı (Construction) ve Yönerge (Guidelines). UP implemantasyonuna olanak sağlamak için tasarlanan araçlar ve ürünler geliştirilmiştir. UP un en popüler versiyonu ise Rational Unified Process (RUP). Çevik yazılım geliştirme (agile software development), iteratif geliştirme temelli olup birden fazla yazılım geliştirme metodolojisini baz alan metottur. Bu metodolojide gereksinimler ve çözümler kendinden örgütlü cross-functional takımların işbirliğiyle olgunlaşır. Tümleşik (integrated)yazılım geliştirme metodolojisinde yazılım geliştirme yaklaşımlarından (iteratif, waterfall, spiral, agile)istenilenlerin kombine edilerek kullanıldığı görülür. 10 / 10