Yazılım Geliştirme Süreçleri

Yazılım geliştirme süreci bir yazılımın geliştirilmesi sırasında uygulanan yapıdır. Buna yazılımın yaşam döngüsü de diyebiliriz. Yazılım geliştirilirken hangi modellerden faydalanılacağı, her türlü görev ve faaliyetleri açıklayan yaklaşımlar bu süreçte yer alır.

Hızla gelişim gösteren yazılım geliştirme kuruluşları bu yöntemlerden faydalanmaktadırlar. Savunma sanayinin de içinde bulunduğu bir çok kuruluş, sözleşme yapmak için yazılımın, birçoğu ABD tarafından derecelendirilmiş süreç modellerine dayandırılarak geliştirilmesini istemektedirler. Yazılım sürecinin izlenmesi ve uygulanması konusunda geliştirilmiş uluslar arası standart ISO 12.207 'dir. Uzun vadede amaç, verimliliği ve kaliteyi arttıran, tekrarlanabilir ve öngörülebilir süreçler bulmaktır.

Yazılım geliştirilirken bu süreçlerin uygulanmaması projenin teslim süresinin uzaması, hedeflenen bütçenin aşılması ya da tamamen başarısız olunması gibi sonuçlar doğurmaktadır. Amerika'da yapılan bir araştırmaya göre yazılım projelerinin;


  • % 33' ü bitmeden iptal edilmekte,


  • % 53' ünde maliyet tahminleri %189 oranında aşılmakta,


  • % 222' sinde ise proje süre aşımı olmaktadır.


Bu başarısızlıkların sebebi ise yazılım geliştirme süreçlerinin düzgün uygulanmamasıdır. Bu süreçlerin düzgün uygulanmaması sonucunda hedefteki belirsizlikler, kötü planlama, teknolojik gelişmelere ayak uyduramama, yetersiz kadro, proje yönetim yöntemi eksikliği gibi sonuçlar ortaya çıkmaktadır.


Şimdi bu süreçleri tek tek inceleyelim:



1. Fizibilite Çalışması


Fizibilite çalışması projeye başlamaya karar vermeden önce yapılan bir ön çalışmadır. Bu çalışmada projenin ihtiyaçların belirlenir ve gereksinimler analiz edilir. Büyük şirketlerde fizibilite çalışmalarının yürütüldüğü ayrı bir bölüm yer almaktadır.

Bir diğer aşama da geliştirilmesine karar verilen yazılımın sektördeki satış potansiyelidir. Müşterinin çok büyük emek ve zaman harcanarak geliştirilen bir yazılımın hakkını yeteri kadar verebilecek bir firma olup olmadığı araştırılır. Yazılım projeleriyle ilgili yatırımlarını düşük bütçelerde tutan bir firmaysa bu aşamada projeden vazgeçilebilinir.


2. Planlama

Fizibilite çalışmalarının sonucu projenin yapılabilir olduğunu gösteriyorsa planlama aşamasına geçilir. Bu aşamada müşterinin istekleri belirlenir ve verilen sürede bu isteklerin ne kadarının yapılıp yapılmayacağı belirlenir. Proje ile ilgili genel bir plan yapılır ve bütçeleme, ekip oluşturma gibi işler üzerinde çalışılır.


3. Analiz

Bu aşamada proje ile ilgili genel bir kapsam belirlenir. Müşterilerin genellikle programın sonucunda ne görmek istediklerine dair soyut fikirleri vardır ama gerçekte programın neler yapabileceğini bilmezler. Bu nedenle sizden karmakarışık pek çok şey isteyebilirler. Bu durumda bütün bu istekler yerine getirilmeli midir? Belirsiz, hatta çelişkili gereksinimler bu noktada açığa kavuşturulmakta ve bir kapsam oluşturulmaktadır. Bu kapsamda müşterinin istekleri zaman, maaliyet gibi kısıtlarla değerledirilir ve sonuç olarak projenin tam olarak ne yapacağı belirlenir.


4. Tasarım

Proje planı yapılıp, problemin ne olduğu analiz edilip, projeden ne istendiği tam olarak anlaşıldıktan sonra artık tasarım işlemi başlar. Öncelikle projenin hangi teknolojileri kullanacağı, platformunun ne olacağı, hangi programlama dillerini ve veritabanını kullanarak geliştirileceği belirlenir.

Teknoloji belirlendikten sonra sıra yazılımın kullanıcı arayüzünün tasarlanmasındadır. Kullanıcı arayüzünün hem istekleri yerine getirebilmesi hem de kolay ve kullanışlı olması gerekir. Bu esnada arayüzler kağıt üzerinde tasarlanır, veri giriş, sorgulama, arama ekranlarının belirlenerek önemli fonksiyonlar ve veritabanı sorguları genel hatlarıyla belirlenir. Bu aşamada proje detaylandırıldığı için projenin doğru analiz edilip edilmediğinı teyit etme fırsatı elde edilir. Ayrıca bu detaylar hem müşteriye hem de bize projenin bitiminde ne olacağı hakkında fikir verir.


5. Geliştirme

Tasarımdan sonra elimizde projenin hem arayüzü hem de kullanacağı teknolojiler hakkında somut bilgiler olmaktadır. Bu bilgiler ışığında kodlama yapılır. Hem kodlama aşamasında hem de proje bitiminde geliştirilen yazılım devamlı test edilir.


6. Test Etme ve Bakım

Yazılım geliştirildikten sonra artık sıra test aşamasıdır. Yazılım geliştirilirken ilk testler programcı tarafından yapılır. Ancak asıl hatalar test ekipleri tarafından belirlenir. Çünkü programcı programı sadece teknik açıdan test eder ama test sürecinin başka boyutları da vardır. Programcının testi dışındaki diğer testler, test ekibinin yaptığı ve kullanıcıların yaptığı testlerdir.

Bu aşama aslında kullanıcı yazılımı kullandığı sürece devam eder. Çünkü sürekli kullanıcıdan geri bildirim alındığı için gerekli düzeltme ya da eklemeler yapılmaya devam edilir.Bu da yazılımın bakım sürecidir.


7. Eğitim ve Tanıtma

Bütün bu aşamalardan sonra artık yazılım kullanmaya hazır hale geldi. Ancak burada kullanıcıların da bilgilendirilmesi, yazılımı nasıl kullanacaklarına yönelik eğitimler yapılması gereklidir. Yazılımı tanıtıcı dökümanlarla alt yapı gereksinimleri, kurulum, ayarlar hakkında deteylı bilgi verilmesi gerekir.

Süreçlere baktığımızda bunlardan en önemlisi problemin tam olarak ne olduğunun anlaşılası aşamadır. Çünkü hedefi net olarak göremezsek nereye gideceğimizi de bilemediğimiz için hatalarımızın farkına varamayız ve sonuç olarak başarısız oluruz. Yapacağımız iş küçük çapta bir iş de olabilir ama ne olursa olsun problem net olarak anlaşılmadan diğer süreçler başarıyla yerine getirilmiş olsa dahi hatalı sonuçla karşılaşmamız kaçınılmazdır.

Anlatılan tüm bu süreçlere bakıldığında iyi bir yazılım üretebilmek için bu süreçlere bağlı kalınarak çalışılması gerektiği açıktır. Bu süreçlerden bir tanesinin bile atlanması başarısızlıklara yol açabilmektedir. Bu nedenle yazılımın yaşam döngüsü de denilen bu süreçte hiçbir basamak göz ardı edilmemelidir.




Not: Bu makale, Eskişehir Osmangazi Üniversitesi teknoloji dergisi olan readmee için yazılmıştır. Dergimizi www.readmee.com adresinden ziyaret edebilirsiniz.

0 yorum:

Yorum Gönder