Yazılım Geliştirme Süreci
Yazılım, bilgisayar veya elektronik cihazlara belli görevi yerine getirmesi için geliştirilen tüm programları kapsar. Alanında uzman kişiler tarafından bir veya daha fazla programlama dili kullanılarak geliştirilir ve uzmanlık isteyen bir konudur. Geliştirme aşamasında doğru programlama dili, doğru algoritma ve test işlemi seçilmelidir. Bunun için alanında uzman, devamlılığı olan, güncelleme, teknik destek faaliyetlerine önem veren, işi sadece yazılım geliştirmek olan ve kurumsal hizmet sunan yazılım firmaları tercih edilmelidir. Yazılım geliştirme sürecinin belirli aşamaları vardır. Bu aşamalara uygun hareket edildiğinde hedeflere kolaylıkla erişilebilir. Süreçlerin her aşamasında titiz bir çalışma yapılması, çalışmanın her aşamasının ayrı ayrı belirli aralıklar ile test edilmesi ve yapılan işlemlerin belgelendirilmesi gerekmektedir.
Planlama
Projeye başlanmadan önce talep sahibinin istekleri dikkate alınarak projenin tüm talepleri, gerçekleştireceği işlemler, hangi şartlar altında çalışacağı ve kimlerin ne amaçla nasıl kullanacağı belirlenir. Yazılımın geliştirilme sürecinde en önemli adımlardan biri olan bu aşamada projenin şekillenmesi ve büyüklüğü de ortaya çıkar. Aynı zamanda projenin başlama ve bitiş tarihleri ile beraber projenin hangi yeteneklere sahip yazılımcılar tarafından ve hangi ortam veya ortamlarda geliştirileceği de belirlenir. Bunun için genel ihtiyaçlar listesi yapılır. Bu aşamadan sonra kullanıcıya yönelik faydaların neler olacağının ortaya konması da sağlanır. Proje süresi içerisinde zaman kaybına neden olabilecek bilgiler ve benzeri etkenler sonraki aşamaya bırakılmalıdır. Bu da zamandan tasarrufun oluşmasına imkan sağlar.
Bu aşamada proje süreci boyunca izlenecek yol ve yöntemler, donanım maliyeti, personel iş bölümü, proje yöneticisinin ön görüleri ve seçimleri, yazılım geliştirme ortamı (web, mobil, masaüstü vb.), hangi programlama dili veya dillerinin kullanılacağı, hangi veri tabanı yönetim sisteminin ve proje adımlarının sürece dağıtılması gibi unsurlar değerlendirilir.
Analiz
Geliştirilecek yazılımın donanım ve yazılım olarak ihtiyaç ve işlevlerinin ayrıntılı bir şekilde çıkarıldığı ve belirli kurallar çerçevesinde kağıda döküldüğü aşamasıdır. Geliştirilecek olan yazılımdan tam olarak ne istendiği, hangi şartlarda çalışacağı, kimler tarafından nasıl kullanılacağı net bir şekilde belirlenir.
Tasarım Aşaması
Yazılım geliştirme süreci içerisinde yer alan bu adımda ilgili projenin hangi alanlarda kullanılacağının oluşmasına olanak sağlar. Web tabanlı bir uygulama, mobil tabanlı uygulama veya masaüstü bir uygulama (bunlardan biri veya birkaçı da olabilir) yapılacağına karar verme aşaması olarak da değerlendirilebilir.
Bu aşamada belirlenen istekler çerçevesinde yazılım sisteminin temel yapısı oluşturulur. Tasarım aşamasında iki tür tasarımdan bahsedilebilir:
Mantıksal Tasarım : Önerilen sistemin yapısı ortaya konulur.
Fiziksel Tasarım : Yazılımı içeren bileşenler ve bunların ayrıntıları belirlenir.
Tasarım aşaması temel olarak projenin mimarisini oluşturur. Bu adım, bir standart belirleyip ona bağlı kalmaya çalışarak çıkabilecek hataları gidermeye yardımcı olur.
Geliştirme ve Uygulama Aşaması
Kodlama aşamasında titiz bir çalışma yapılmalı ve gelecekte ilgili değişikliklerin yapılabilmesi için de zemin oluşturulmalıdır. Kodlama aşamasının ekip ile birlikte yürütülmesi ve ilgili iletişim ortamının sağlanması gerekir. Kodlama ile beraber veri tabanını oluşturan tabloların yapıları da bu aşamada geliştirilir. Bu aşamada aşağıdaki konulara dikkat edilmelidir.
* Oluşturmak istenilen proje web tabanlı, mobil veya masaüstü olabilir. Bu doğrultuda yapılacak tasarımın bu platformlara veya cihazlara uygun olması gerekir.
* Kullanılacak veri tabanı yönetim sisteminde hangi verilerin nasıl kaydedileceği belirlenmelidir. Bu verilere kimlerin nasıl erişeceği de ortaya konulur.
* Web arayüz tasarımı yapılırken html standartlarına uyulmalı (SEO) arama motorları tarafından anlaşabilecek şekilde düzenlenmelidir.
* İhtiyaç duyulan modüller tasarlanmalı ve kullanışlılık olarak kolaylığı analiz edilmelidir.
* Kullanıcıyı istediği sayfaya veya bilgiye/rapora/listeye en fazla 3 tıklama ile ulaşması hedeflenmelidir.
* Tasarımların sade ve kullanıcıya güven veren tasarımlar olmasına özen gösterilmelidir.
* Sayfalar arası geçişlere ve sayfalar arasında aktarılacak bilgiye dikkat edilmelidir.
* Güçlü bir yazılım mimarisi ile çalışılmalı ve sonradan çıkabilecek tüm isteklere kolaylıkla cevap verebilecek şeklide kodlama yapılmalıdır.
* Gerekli kapasiteye sahip server/sunucu kullanılarak, projenin ekip tarafından bir takım çalışması halinde yönetilebilmesi, raporlanabilmesi, izlenebilmesi sağlanmalıdır.
* Modüllerin hızlı çalışması için sayfa içerisinde aşırı sorgu ifadelerinin olmamasına özen gösterilmeli ve yapısal kodlamalar kullanılmalıdır.
* Yazılımda kullanıcı tanımlamaları ve kullanıcılara yetki tanımlamaları mutlaka olmalıdır.
* Yazılımın çalışacağı ve veri tabanının tutulacağı server/sunucunun güvenliğinin sağlanması gerekir. Belirli aralıklarla (otomatik/manuel) yedek alma imkanın olması gerekir.
Test Aşaması
Tüm işlemler sona erdikten sonra ilgili projenin yayına almadan önce test aşamasının gerçekleşmesi gerekir. Her bölüm, her form ve formdaki her detay ayrı ayrı teste tabi tutulmalıdır. Eğer test sonucunda yanlış veri alma, yavaşlama, öngörülmeyen durumlarla karşılaşma ve benzeri bir hata oluşması durumunda ilgili çalışmalar baştan sona tekrar gözden geçirilmelidir. Yazılımın tamamı bu şekilde test edildikten sonra herhangi bir sorun çıkmadığında ise ilgili proje yayına alınabilir. Yayına alınan projede de kullanıcı hatalarından da hatalar çıkabilir. Bu hatalar da dikkate alınmalı ve sürekli izlenmelidir.
Yazılım geliştirme konusunda gerekli adımları doğru bir şekilde uygulandığında hedeflenen noktaya kısa süre içerisinde ulaşmak mümkün olur. Test aşamasında aşağıdaki noktalara azami dikkat edilmelidir:
- * Önceden belirlenen gereksinimlerin karşılanıp karşılanmadığı, doğru çıktıyı üretip üretmediği testleri yapılmalıdır. Bunun için konunun uzmanları ile çalışılmalıdır.
- * Güvenlik testleri yapılarak, sistemdeki açıklıklar belirlenmeli ve açıklar kapatılmalıdır.
- * Stres testleri ile sistemin dayanıklılığı test edilmeli, gerekli yerlerde sorgular optimize edilmelidir.
- * Veri tabanında tutulan bilgilerin miktarı arttıkça bilgiye erişim testleri yapılmalı ve gerekiyorsa veri tabanı ve sorgular tekrar gözden geçirilmelidir.