Herhangibir diğer mühendislik ürünleri gibi, yazılım ürünleri de müşteriye yöneliktir.O, ya piyasa sürümüdür ya da piyasayı sürer.Müşteri Memnuniyeti 80li yılların moda kelimesiydi.Bugünün kelimesi ise Müşteri Keyfi ve yeni milenyumun kelimesi ise Müşteri Coşkusu. En iyi teknoloji ile tasarlanmış olmalarına rağmen, kullanıcı ya da müşteri dostu olmayan ürünlerin piyasada yeri yoktur.Ürünün arayüzü, ürünün tekniği kadar önemlidir.
Piyasa Araştırması
Piyasa araştırması potansiyel müşteri’nin ihtiyaçlarını belirlemek için yapılır.Bu süreç pazar araştırması diye de geçer.Burada, toplumda mevcut olan ihtiyaç ve potansiyel ihtiyaçlar dikkatlice incelenir.Piyasa araştırması birçok varsayımlar üzerine dayanır.Varsayımlar bir ürün geliştirmesinin, başlangıcında ve gelişiminde önemli faktörlerdir.Gerçek dışı varsayımlar tüm girişimde baş aşağı düşüş olmasına neden olabilir.Varsayımlar soyut olmasına rağmen, başarılı ürün ile gelecek somut varsayımlar geliştirebilmek için bir hareket olması gerekmektedir.
Araştırma ve Geliştirme
Piyasa Araştırması yapıldığında, müşterinin ihtiyacı Araştırma & Geliştirme bölümüne (R&D), müşterinin ihtiyaçlarını imkan dahilinde çözebilecek uygun maliyetli bir sistemi projelendirmesi için verilir.Projelendirilmiş sistem geliştirildiğinde ve hipotetik alanda test edildiğinde, geliştirme takımı kontrolü ele alır.Geliştirme takımı, aşağıda verilen yazılım geliştirme metodolojilerinden birini benimser ve önerilen sistemi geliştirir ve müşteriye verir.
Satış & Pazarlama bölümü müsait müşterilere satmaya başlar ve aynı anda yazılımı imkan dahilinde satın alabilecek niche segment geliştirmek için çalışır.Bölüm, ek olarak, müşterilerin düşüncelerini geliştiricilere ve A&G (R&D) bölümüne ürüne olası değer eklemeleri yapması için iletir.
Bir yazılımı geliştirirken, şirket bazı konularda uzmanlaşmış diğer şirketlere bir takım uygulamaları yaptırır.Bu yazılım geliştirim sürecini büyük çapta hızlandırır.
Popüler Yazılım Geliştirme Modelleri
Aşağıdakiler birçok yazılım geliştirici şirketleri tarafından benimsenmiş bazı temel popüler eliştirme modelleridir.
A. Sistem Geliştirme Yaşam Döngüsü Modeli (System Development Life Cycle (SDLC) Model)
B. Prototipleme Modeli (Prototyping Model)
C. Hızlı Uygulama Geliştirme Modeli (Rapid Application Development Model)
D. Bileşen Çevirme Modeli (Component Assembly Model)
A.Sistem Geliştirme Yaşam Döngüsü Modeli (SDLC)
Bu ayrıca Klasik Yaşam Döngüsü Modeli (Classic Life Cycle Model) ya da Doğrusal Ardışık Model (Linear Sequential Model) ya da Waterfall Metodu (Waterfall Method) olarak bilinir.Bu modeli aşağıdaki aktivitelere sahiptir.
1.Sistem/ Bilişim Mühendisliği ve Modelleme
Bir yazılım, her zaman tüm sistem öğeleri için ihtiyaçları kurmayla başlayan ve bu ihtiyaçların bazı altkümelerini yazılıma tahsis eden büyük bir sistem işidir.Bu sistem görüşü; yazılımın sürücü, insanlar ve diğer kaynaklar gibi başka öğelerle koordine etmesi gerektiğinde zorunludur.Sistem herhangibir mevcudiyette yazılımın varoluşu için temel ve önemli bir ihtiyaçtır.O yüzden eğer sistem elverişli değilse, sistem düzenlenmelidir ve elverişli hale getirilmelidir.Bazı durumlarda, en yüksek sonucu almak için, sistem tekrar düzenlenmelidir. İdeal sistem düzenlendiğinde ya da ayarlandığında, geliştirme takımı sistem için yazılım gereksinimini araştırır.
2.Yazılım Gereksinim Analizi
Bu süreç, olurluk incelemesi olarak da bilinir.Bu aşamada, geliştirme takımı müşteriyi ziyaret eder ve sistemlerini inceler.Verilen sistemde olası bir yazılım otomasyonu için gerekeni araştırırlar.Takım,olurluk incelemesi sonunda, aday sistem için belirli farklı önerileri tutan bir belge tedarik eder.Bu ayrıca, kişisel görevleri, maliyeti, proje programını, hedef tarihleri vs içerir.Gereksinim toplama süreci yoğunlaştırılmış olup özellikle yazılım odaklıdır.Program(lar)ın yapım doğasını anlamak için, sistem mühendisi ya da “analisti” , gereken işlev, davranım, performans ve arayüz kadar yazılım bilişim alanını anlaması gerekir.Bu aşamanın esas amacı gereksinimi bulmak ve çözülmesi gereken problemi tanımlamaktır.
3.Sistem Analizi ve Tasarımı
Bu aşamada, yazılım geliştirme süreci, yazılımın tüm yapısı ve ayrıntıları tanımlanır.Müşteri/sunucu teknolojisi bakımından, paket yazılım altyapısısi için gereken tiers sayısı, veritabanı tasarımı, veri yapısı tasarımı vs hepsi bu aşamada tanımlanır.Bir yazılım geliştirme modeli böylece yaratılır.Analiz ve Tasarım tüm geliştirme döngüsünde çok önemlidir.Tasarım aşamasındaki herhangibir beklenmeyen kusur yazılım geliştirmenin daha sonraki bir evresinde çözmek çok pahalı olabilir.Bu aşama sırasında çok özen gösterilir.Ürünün mantıksal sistemi bu aşamada geliştirilir.
4. Kod Üretimi
Tasarım, makinece okunabilir forma çevrilmelidir.Kod üretim basamağı bu görevi yapar.Eğer tasarım detaylı bir biçimde yapıldıysa,kod üretimi fazla karmaşıklık olmadan başarılabilir.Derleyiciler, yorumlayıcılar, hata ayıklayıcısı gibi programlama araçları kodun üretimi için kullanılır. C, C++, Pascal, Java, PHP gibi farklı üst düzey programlama dilleri kodlama için kullanılır.Uygulamanın türüne göre doğru programlama dili seçilir.
5. Test Etme
Kod üretildiğinde, yazılım program testi başlar.Farklı test metodolojileri önceki aşamalarda yapılan hataları çözmek için uygundur.Farklı test araçalrı ve metodolojileri şimdiden mevcuttur.Bazı şirketler kendi geliştirme işlemleri için kişiye özel kendi test araçlarını geliştirirler.
6. Bakım
Yazılım müşteriye teslim edildikten sonra mutlaka değişim geçirecektir.Bu değişimin gerçekleşmesi için birçok neden olabilir.Değişim, sistemdeki beklenmedik girdi değerleri yüzünden olabilir.Ek olarak, sistemdeki değişimler yazılım işlemlerini doğrudan etkileyebilir.Yazılım uygulama döneminden sonra oluşabilecek değişimlere uyum sağlayabilecek şekilde geliştirilmelidir.
B. Prototipleme Modeli (Prototyping Model)
Doğrusal modelin döngüsel versiyonudur.Bu modelde, gereksinim analizi ve prototipleme için tasarım yapıldıktan sonra,geliştirme süreci başlatılır.Prototipleme yaratıldıktan sonra, müşteriye değerlendirme için verilir.Müşteri paketi test eder ve düşüncelerini, ürünü müşterinin tam beklentilerine göre düzenleyen geliştiriciye iletir.Sınırlı sayıdaki yinelemelerden sonra, son yazılım paketi müşteriye verilir.Bu metodolojide, yazılım müşteri ve geliştirici arasında periyodik bilgi gidip gelmeleri sonucunda gelişir.Çağdaş IT endüstrisinde en popüler geliştirme modelidir.Başarılı yazılım ürünlerinin birçoğu, tek seferde müşterinin gereksinimlerini anlamak çok zor olduğu için (bir iş bitirici için bile!) bu modeli kullanılarak geliştirilmiştir.Şirketlerin proje yönetim stilleri bakımından bu modelin yönelimli birçok çeşidi vardır.Bir yazılım ürünün yeni versiyonları prototipleme sonucunda gelişir.
C. Hızlı Uygulama Geliştirme Modeli (Rapid Application Development Model)
Hızlı Uygulama Geliştirme Modeli, aşırı derecede kısa geliştirme döngüsü üzerinde duran doğrusal ardışık yazılım geliştirme sürecini modelleştirir. Hızlı Uygulama Geliştirme Modeli modeli, hızlı geliştirmenin bileşen-bazlı yapı yaklaşımını kullanarak başarılan doğrusal ardışık modelin “yüksek hızlı” benimsemesidir.Bilişim sistemler için öncelikle kullanılan Hızlı Uygulama Geliştirme Modeli yaklaşımı aşağıdaki aşamaları kapsar:
1.İş Modelleme
İş işlevleri arasındaki bilgi akışı aşağıdaki soruları cevaplayan bir şekilde modellenir:
İş sürecini hangi bilgi yürütür?
Hangi bilgi oluşturulur?
Kim oluşturur?
Bilgi nereye gider?
Kim sürdürür?
2.Veri Modelleme
İş modellemenin bir parçası olarak tanımlanan bilgi akışı, işi desteklemek için gereken bir takım veri nesneleri haline geliştirilir.Her nesnenin özellikleri (nitelikleri) belirlenir ve bu nesneler arasındaki ilişkiler tanımlanır.
3.Süreç Modelleme
Veri modelleme aşamasında tanımlanan veri nesneleri, gereken bilgi akışının iş işlevlerini yerine getirmesi için dönüştürülür.Açıklamaları sürdürmek bir veri nesnesini ekleme, düzenleme, silme veya almak için yaratılır.
4.Uygulama Üretme
RAD modeli,geleneksel üçüncü kuşak programlama dillerini kullanan yazılımlar üretmektense VB, VC++, Delphi gibi RAD araçlarının kullanımları varsayar.RAD modeli, mevcut program bileşenlerini yeniden kullanmak için (mümkün olduğunda) veya yeniden kullanılabilir bileşenleri yaratmak için(gerektiğinde) çalışır.Her durumda, otomatik araçlar yazılım yapımını kolaylaştırmak için kullanılır.
5.Test Etme ve Devir hızı
Hızlı Uygulama Geliştirme Modeli süreci yeniden kullanılabirliğin üzerinde durduğundan, prgram bileşenlerinin çoğu çoktan test edilmiştir.Bu, test etme ve geliştirme süresini en aza indirir.
D. Bileşen Çevirme Modeli (Component Assembly Model)
Nesne teknolojileri, yazılım mühendisliğine, bileşen-bazlı süreç modeli için teknik yapı sağlar.Nesne yönlü dizi, veriyi işletmek için kullanılan hem veri hem de algoritmayı kapsayan sınıflar kreasyonu üzerinde durur.Eğer düzgün tasarlanır ve uygulanırsa,nesne yönlü sınıflar, farklı uygulama kum bilgisayar tabanlı sistem yazılım altyapısılerinde yeniden kullanılabilirler.Bileşen Çevirme Modeli, yazılımın yeniden kullanılabirliğini sağlar. Mevcut olan yazılım bileşenlerinin entegrasyon/çevirme geliştirme sürecini hızlandırır.Bugünlerde birçok bileşen kütüphaneleri İnternette mevcuttur.Eğer doğru bileşenler seçilirse, entegrasyon yönleri daha basitleştirilir.