Yazılım Geliştirme Süreçleri
Yazılım geliştiren işletmeler için, yazılım geliştirme süreci, piyasa araştırması ve sistem analizi konularında, başarım arttırıcı öneri ve çözümler.
1. GİRİŞ
Bugün artık birçok kuruluş, rekabet güçlerini arttırmak, hatta denebilir ki ayakta kalabilmek için, bilgi teknolojilerinden yararlanmaktadır. Ancak, bilgi teknolojileri kapsamında, donanımsal yatırımlara ağırlık verilmesi, bilgi teknolojilerinden elde edilecek yararların sınırlı kalmasına neden olmaktadır. Bu eksikliğin farkına varan kuruluşlar için ise çıkış yolu oldukça labirentli olmaktadır.
Bilgi teknolojileri kapsamında, donanımsal teknolojilerin yanı sıra yazılım teknolojilerinden de yararlanmak başlangıçta çok kolay olmadı. Az sayıdaki yazılım üreticileri, piyasa ihtiyaçlarına uygun çözümler sunamadıkları için, piyasanın bu durumdan büyük kayıpları olmuştur. Buna rağmen, başlangıçtaki bu sürecin kazanımları, yazılım üreticileri için önemli deneyimler olarak ortaya çıkmıştır.
Yazılım üreticileri, hızlı gelişen yazılım araçlarını kullanarak profesyonel uygulamalar geliştirip piyasa ihtiyaçlarını karşılarken, kimi üreticiler çok amatörce yapılmış uygulamalarla piyasanın olumsuz etkilenmesine neden olmuşlardır.
Bilgi teknolojilerinde ülkemizdeki süreç akademik camiada daha hızlı ve önce olmuştur. Bu süreci özel sektör vakit kaybetmeden yakalayıp akademik camiayı geçmiştir. Bu gelişmeler, yazılım sektörü için tüketicilerin bilinçlenmesi yönünde olumlu katkıları beraberinde getirirken, yazılım sektöründeki üreticileri kurumsallaşmaya zorlamıştır. Önceleri, yazılım ihtiyaçlarını bireyler ile çözen birçok kuruluş, artık karşısında bir kurum talep eder hale gelmiştir.
Ülkemizde sayıları oldukça fazla olan yazılım üreticileri, ülkenin dört bir yanında faaliyet göstermektedir. Ancak ne yazılım üreticileri açısından ne de hedef sektörler açısından bilgi teknolojilerinden istenen düzeyde yararlanmak mümkün olmamıştır.
Günümüzde yazılım teknolojileri üreten firmalar için, yazılım geliştirme ve uygulama süreci kadar, pazarlama süreci de büyük önem taşımaktadır. Yazılım pazarı ile ilgili olarak, PAM (INTERPRO Pazar Araştırma Merkezi) yaptığı bir araştırmada, "...Yazılım pazarı son üç yılda ortalama yüzde 26 oranında büyüdü. 1999 yılında sistem yazılımlarının yazılım pazarındaki payının yüzde 26, uygulama yazılımları payının ise yüzde 74 olarak gerçekleştiği tahmin ediliyor. ..." açıklaması yapılmıştır.
Böylesine hızlı büyüyen bir pazara sahip yazılım sektöründe, hem yazılım üreticileri hem de hedef sektörler açısından uyulması gereken, adı konulmuş ürün geliştirme süreçlerinin oluşturulması gerekmektedir.
Yapmış olduğum bu çalışma, yazılım üretici firmanın, yeni bir ürünü geliştirme süreci ve satış/destek hizmetleri arasındaki ilişkileri ortaya koymaktadır.
2. YAZILIMIN ÜRETİM NEDENİ
Yazılım firmasının, bir yazılımın üretimine başlaması için belli başlı iki yol vardır. Bunlar; sektör kuruluşlarından gelen bir talep veya sektörün böyle bir ürüne ihtiyaç duyduğunun firma tarafından belirlenmesi ve ihtiyaç oluşturulması şeklindedir.
Yazılım firmasının yazılım üretme süreci, daha çok, sektörden gelen talep üzerine başlar. Bunun nedeni ise yazılım üreticisinin en azından bir satışı garanti altına alarak zarar etmek istememesidir. Her iki şekilde de izlenecek yol aynıdır. Ve bir çok yazılım firmasının yükselişini yada inişini etkileyen aşamalar bundan sonra ortaya çıkacaktır.
3. YAZILIMIN KULLANILACAĞI SEKTÖRÜN İNCELENMESİ
Geliştirilmesine karar verilen yazılım için bu süreçte ilk adım sektördeki satış potansiyeli olmalıdır. Yazılım sektörüne yapılan yatırımı öncelikli yatırım olarak görmeyen, bu yöndeki yatırımlarını düşük bütçelerde tutan bir sektör için, oldukça fazla zaman ve emek sarf edilerek geliştirilen uygulamanın öncelikli gereği yoktur. Yazılım sektörünün bu süreçte harcadığı emeğin karşılığını ne kadar alabileceği en başta ortaya konulmalıdır.
Üretilecek yazılım için hedef sektörün incelenmesi sürecinde, sektöre ilişkin dikkat edilecek noktaların belli başlıları şunlardır:
· Yoğunluk.
· Ekonomik imkânlar.
· Yönetici ve işletme sahiplerinin, bilgi sistemlerine ilgisi
· Çalışanların bilgisayar kültürü.
· Yönetim organizasyon yapısı.
Sektör araştırılırken, var olan kuruluşların sayısal çoğunluğu göz önüne alınmalıdır. Çok az sayıdaki işletmenin faaliyet gösterdiği bir sektöre yönelik yazılım geliştirilmesi, sektör için maliyeti çok yüksek bir hal alabilir. Böyle bir durumda da, yazılımın geliştirilmesi sürecine hiç girilmeyebilir.
Diğer yandan önemli bir konu da yazılımı kullanacak kişilerin bilgisayar kültürüdür. Yazılımın, kullanıcı açısından oldukça kolay ara yüzlere sahip olma zorunluluğunun yanında kullanıcılara geliştirilecek yazılım için ne derecede eğitim verilmesi gerekliliği de bu aşamada planlanmalıdır.
Çok sayıda işletmenin olduğu bir sektörde, kuruluşlar bilgi teknolojilerine daha az önem veriyor olabilirler. Ya da yeterli yatırımı yapabilecek bütçeyi ayıramıyor olabilirler. Bu gibi durumlarda da uygulamanın, gereksinim duyduğu donanımsal ihtiyaçlar ve yetişmiş personel ihtiyacı, analiz aşamasında mutlaka değerlendirilmelidir.
4. SEKTÖRDE KULLANILAN DİĞER YAZILIMLAR
Maalesef hala birçok yazılım firması, hiç araştırma yapmadan yazılım geliştirmeye başlayabiliyorlar. Ancak, uzun zamandır sektörde kullanılan ve kendi ürünlerinden çok daha iyi olan bir yazılım ile karşılaştıklarında, diğer ürünleri inceleme ve değerlendirme gerekliliği hissediyorlar. Tabi bu durumda yazılım üreticisi, her şeye yeniden başlamak ya da ürünü rafa kaldırmak gibi iki alternatiften birini seçmek zorunda kalıyor.
Bunun yerine, yazılım üretimine başlamadan önce sektörde kullanılan diğer yazılım ürünlerini araştırıp, ürünlerin iyi ve kötü yönlerini tespit ederek daha üstün bir yazılım ortaya çıkartmak mümkündür.
Sektörde birden fazla ürün kullanılıyor olabilir. Bu durumda, rekabetin boyutları, ürünler arası farklılıklar, pazar payları, üretici firmaların bölgesel yoğunlukları ve müşterilerin düşünceleri mutlaka incelenmeli, yazılıma başlamadan önce değerlendirilmeye alınmalıdır.
Değerlendirmede öncelikler:
· Diğer üreticilerin faaliyetleri.
· Üreticilerin bölgesel konumu ve teknolojik gücü.
· Üreticilerin diğer bölgelerdeki faaliyetleri.
· Ürünlerin pazar payları.
· Ürünlerin üstün özellikleri.
Yazılım firmaları belli bölgelerde pazara tamamen hakim olabilirler. Bu gibi durumlarda boşluk olan bölgeler seçilmeli ve bu bölge üzerinde araştırmalar yapılmalıdır. Bayii alt yapısı, ulaşım ve ilgili diğer konular, yoğunlaşılan bölge için değerlendirilmelidir.
5. YAZILIM ANALİZİNİN YAPILMASI
Daha önce bahsettiğim, ön çalışmaların tamamlanmasının ardından firma üretime başlama kararı alabilir. Alınan bu karar, ön çalışmalar ışığında olmalı, olası riskler önceden belirlenmelidir.
Analiz aşamasında, firma belirleyeceği bir ya da daha çok müşteri üzerinde çalışmalıdır. Ancak, analiz araştırmalarında birden çok müşteri ile çalışmak, sektörün tanınması ve daha kapsamlı analiz (ya da çözümleme) yapma olanağı sağlar.
Çoğu sektörde homojen bir yapının olmadığı, bilinmesi gereken önemli bir husustur.
Analize kaynak olan unsurlar:
· Yazılıma ihtiyaç duyulmasının nedenleri.
· Faaliyetlerin, başlangıçtan bitişe doğru aşamaları.
· Kullanılan, tüm belgeler, formlar, resmi ve diğer evraklar.
· Varsa kullanılan uygulama yazılımları ve kullanım amaçları.
· İş gören personelin görüş ve düşünceleri.
· Müşteri tarafından ihtiyaç duyulan, saklanacak veriler.
· Elde edilmesi gereken, yararlı bilgiler, rapor ve formlar.
Ayrıca:
· Sektörde lider kuruluşlar araştırılarak, daha sonra karşılaşılabilecek sorunlar ve çözümlerin tespiti ile elde edilen bilgiler.
Sektör bünyesinde yer alan küçük, orta ve büyük ölçekteki tüm işletmeler göz önüne alınarak, yazılımın işletmelerin gelişim süreçlerine uyum sağlayabilmesi de dikkate alınmalıdır. Gelişim süreçlerinde işletmelerin karşılaştıkları sorunların çözümleri geliştirilen yazılım kapsamında değerlendirilmelidir.
Yanı sıra, analizde dikkat edilmesi gereken bir diğer husus, elde edilen tüm bilgilerin düzenli olarak kağıda dökülmesi ve saklanmasıdır.
Yukarıda belirttiğim unsurlara bağlı kalınarak yapılan, analiz çalışmasının sonuçları, şüphesiz sağlam temellere oturtulmuş demektir.
6. ANALİZE UYGUN TASARIMIN YAPILMASI
Geliştirilen yazılımın kullanıcı ara yüzünün kolay ve kullanışlı olması tamamen profesyonel bir ekip işidir. Yazılımı kullanacak kişilerin yazılımı zorlanmadan kullanabilmeleri ve kullanırken de sıkılmamaları önemli unsurlardır. Tasarım aşaması, yazılımın hem kullanıcı ara yüzünü hem de programın omurgasını ortaya koymaktadır.
Tasarım aşamasının diğer teknik unsurları şöyle sıralanabilir:
A. Veri tabanı seçimi ve tasarımı.
· Veri tablolarının belirlenmesi.
· Sahaların belirlenmesi (Kayıt deseni).
· İndeks ve anahtar alanların belirlenmesi.
· Tablolar arası ilişkilerin kurulması(İlişkisel veri tabanı tasarımı).
· Tetikleyici ve prosedür kodlarının tasarımı.
· Veri tabanı seçimi.
B. Ara yüzlerin tasarımı ve geliştirme araçları.
· Yazılımın adı.
· Ikon tasarımı.
· Kapak resmi (Yada açılış resmi).
· Kullanılacak derleyici yada yorumlayıcı tespiti.
· Kodlama ve iş akış diyagramlarının hazırlanması.
· Veri giriş ekranlarının tasarlanması.
· Sorgulama (Yada arama) ekranlarının tasarlanması.
· Yazıcı ve ekran raporlarının tasarlanması.
Yukarıdaki işlerden de anlaşılacağı gibi, tasarım iki ana başlık altında toplanmıştır. Buna göre, yazılımın alt yapısı olarak adlandırılan, veri tabanı tasarımı ve görsel kanadı oluşturan ara yüz tasarımı ve araçların seçimi, yazılımın tasarım sürecindeki ana hatlardır.
Veri tabanı seçimi ve tasarımı;
Birçok yazılım ürünü, çok iyi görsel araçlara sahip olmasına rağmen, ne yazık ki zamanla yok olup gitmiştir. Bunun nedeni ise, çok kullanıcılı ortamlara aktarılamaması ya da aşırı veri yoğunluğunu destekleyememesi gibi nedenlerdir.
Veri tabanı tasarımı ve seçiminde, tasarım ekibi, analizden gelen bilgiler doğrultusunda maksimum değerleri göz önüne almalıdır. Örneğin; yazılımın kullanılması ile müşterinin bir yıl sonra milyonlarca kayda ulaşması bekleniyorsa, veri tabanı bu desteği verebilecek şekilde seçilmeli ve tasarlanmalıdır.
Yeri gelmişken bir konuya da değinmek gerekir, günümüzde en basit uygulama dahi açık sistem veri tabanı kullanılarak üretilmektedir. Desen gizlemek, artık müşteri için bile olumsuz bir opsiyon olarak değerlendirilmektedir. Müşteri doğal olarak, ileride karşılaşabileceği olumsuz durumlar için açık sistem veri tabanlarını tercih etmektedir.
Bunun yanı sıra, elektronik ticaretin gelecekte alacağı yeri düşünecek olursak, veri tabanı tasarımı ve seçiminin önemli bir unsur olduğu daha iyi anlaşılır.
Ara yüz tasarımı ve geliştirme aracı seçimi;
Bazen öyle uygulamalar tasarlanıyor ki, uygulamayı kapatmak için dakikalarca uğraşmak gerekebiliyor. İyi tasarlanmış ara yüze sahip uygulamalarda, hem kullanıcı kolaylık yaşar hem de firmanın destek ekibi rahat olur. Ayrıca, programcıların hakim olduğu yada destekleyebilecekleri kodlama araçları ile çalışılmalıdır.
Unutulmaması gereken nokta, tasarımının sadece müşteri için değil, firmanın destek birimi de düşünülerek yapılması gerektiğidir. Hiçbir müşteri, yeterli destek alamayacağını bildiği bir uygulama yazılımını satın almak istemez.
7. TASARIMIN BİLGİSAYAR ORTAMINA AKTARILMASI (KODLAMA)
Artık program kodları, eskiden olduğu gibi uzun uzun yazılmıyor. Gelişen teknoloji, kodlamayı daha az kullandırıyor, araçlar (Tools) kullanmayı öneriyor. Ancak bu yöntem, iyi kod yazma gerekliliğini ortadan kaldırmıyor.
Tasarımı tamamlanmış bir uygulama, programcıya ulaştığında, programcının yapacağı ilk iş modülü iyi anlamak olmalıdır. Yazılacak modülü zihninde canlandıramayan programcı kodlamayı yapamaz.
Tasarımda hazırlanan, kodlama detayları, iş akış diyagramları, tablolar ve tetikleyici kodların, programcıya yazılı olarak verilmesi ve yapılan işin anlatılması gereklidir.
Kodlamanın unsurları şunlardır:
· Sağlam ve anlaşılır olmalıdır.
· Şekil (Yazım) kurallarına uymalıdır.
· Yardımcı fonksiyonlar ve özel kitaplıklarla sadeleştirilmelidir.
· Desteklenebilir olmalıdır.
Üzerinde durulması gereken diğer bir nokta da, yazılımın kodlama işlemi ile bitmediğidir. Gerçekten de bir yazılım ürününün kodlaması hiçbir zaman bitmez. Yapılan eklemelerle kod sürekli yenilenir. Bu durumun istisnası yoktur. Ancak zamanla gelen taleplere destek verebilen yazılımlar ayakta kalabilir. Tüm bu anlatılanlar, kodun sağlam ve anlaşılır yazılması gerekliliğini ortaya koyar.
Bazı programcılar, bir işi yerine getiren özel fonksiyonlara ihtiyaç duyarlar. Ama bunu yazmak onların günler, bazen haftalarını alabilir. Bu konuda, yazar Charles Calvert Amerika'yı yeniden keşfetmeyin başlıklı yazısında, "... Genelde böyle sistemleri, makul fiyata satıcılarından almak mümkündür ve eğer mümkünse, bunu istiyorsanız her seferinde yapmalısınız. Çok çok iyi programcılar genelde programlama araçlarını diğer programcılara satma yoluna giderler. TurboPower gibi bir dükkanı kendi oyunlarında yenemezsiniz. Onların kodunu satın alın ve onları kendi tarafınıza çekin. Kısacası Amerika'yı yeniden keşfetmeye gerek yok. ... " diyerek programcılara akılcı bir çözüm sunmaktadır.
8. YAZILIMIN TEST EDİLMESİ.
Test, üretimin son aşaması olmasına rağmen, aynı zamanda süreklilik arz eden bir diğer süreçtir. Yazılım üretiminde ilk testler geliştirme sürecinde programcı tarafından yapılır. Bununla birlikte, asıl hata ayıklama ve geri bildirim (FeedBack) hizmeti test ekipleri tarafından yapılır. Testler ve geribildirim müşteri yazılımı kullandığı sürece devam eder. Programcıların yaptığı testler ağırlıklı olarak, iş akışı değil, teknik testlerdir. Bu nedenle iş akışı yönünden yazılım testi, özel bir ekip tarafından yapılır.
Yazılım Test süreci:
· Programcı testleri.
· Test ekibinin testleri.
· Kullanıcı grubu testleri.
Test sürecinde, en faydalı geri bildirimler, son kullanıcı test gruplarından gelir. Yazılımın beta testlerinde mutlaka müşteriden test grupları oluşturması istenmelidir. Bu sayede müşterinin yeni yazılıma adaptasyonu da sağlanmış olur. Testlerin sonunda ilgili birimlerle birlikte değerlendirme toplantıları yapılmalıdır. Bazen hataların kaynağı analizde ya da tasarımda olabilir. Ya da kullanıcıdan gelen yeni bir istek var ise, bu talep doğrudan analiz ekibine iletilmelidir. Çünkü yazılımın mimarisinin temelleri analizciler tarafından hazırlanmıştır.
9. EĞİTİM VE ORYANTASYON MATERYALLERİNİN HAZIRLANMASI
Müşteri için kullanıma hazır hale getirilen yazılım, tamamlayıcı öğelerinde sağlanmasıyla bitmiş demektir. Ortaya çıkarılan uygulamanın eğitiminin ve dokümantasyonunun da sağlanması tamamlayıcı öğeler olarak düşünülmelidir.
Satış ve destek aşamalarında kullanılan en önemli malzeme, dokümanlardır. Altyapı gereksinimleri, kurulum, ayarlar ve bunlara ilişkin çeşitli eğitsel dokümanlar, uzman kişilerce hazırlanmalıdır.
Satış öncesi yapılacak hazırlıklar;
· Kurulum ve ayarlama dokümanları.
· Uygulama eğitim programlarının oluşturulması.
· Uygulama kullanım kılavuzu hazırlanması.
· Sıkça sorulan soruların cevaplanması.
· Bayiiler için eğitim programı oluşturulması.
· Destek birimi eğitim programı oluşturulması.
Yazılım sürecinde yer alan tüm birimler, her zaman son kullanıcıdan birkaç adım önde olmalıdır. Bir sonraki adımda; uygulamanın çoklu ortamlara, internet ortamına veya başka etkileşimli ortamlara taşınması istenebilir. Böylece, belki başlangıçta düşük maliyetlerde hesaplanan uygulama, değerini de arttıracak teknik özelliklere sahip olabilir.
10. SONUÇ
Anlatılan tüm bu süreçler, detaya inilmeden sadece ana hatları ile belirtilmiştir. Sonuç olarak, müşterinin verimliliğini arttıran en önemli teknolojik araç uygulama yazılımlarıdır. İyi bir uygulama yazılımını üretebilmek için, üretim süreci unsurlarına bağlı kalınarak çalışılmalıdır. Aşağıda görülen grafikte, uygulama yazılımının, müşterinin performansına ve verimliliğine olan etkisi daha açık olarak görülebilmektedir.
Bu bilgiler ışığında ortaya çıkan ve ayrıca üzerinde durulması gerekenler şunlardır:
1. Başarı için sadece bilgi yeterli değildir, bilgiyi kullanacak tekniklerinde firma çalışanları tarafından bilinmesi gerekir.
2. Kaliteli yazılım firması, geliştirdiği ürünü destekleyebilen ve onu zamana uydurandır.
3. Uygulama yazılımının kalitesi, satış, destek ve performans bileşiminin büyüklüğü ile ölçülür.
4. Yazılacak uygulamanın kullanılacağı sektörü en iyi şekilde bilmek analizcinin ve destek biriminin görevidir.
5. Geliştirme sürecinde analiz için harcanan süre ne kadar uzun olursa olsun boşa harcanmış sayılmaz.
6. Tasarımın her aşamasında ekip içinde bir psikolog doktorun ya da EİP(Eğitim İletişim Planlama) uzmanının olması, ürünün performansını arttıran faktörlerdendir. Kullanıcının iş yapma isteğini ortadan kaldıracak renk ve dizaynlar şüphesiz ürün satışını olumsuz etkiler.
7. Yazılımda güvenlik iki türlüdür. Bunlar sistem güvenliği ve veri güvenliği olarak adlandırılır. Müşteri için her ikisi de vazgeçilmez iki unsurdur.
8. Yazılım firması en yoğun zamanlarında bile araştırma-geliştirme faaliyetlerini sürdürmeli ve yenilikleri tüm ekiplere yaymalıdır. Firma içinde bilgi paylaşımı, kaynakların herkese açılması ile yeterli ilerlemeyi sağlamıyorsa, bilginin dolaşımı, hizmet içi eğitimler ve sosyal etkinlikler ile sağlanmalıdır. Yazılımın, ekip işi olduğu herkesçe kabul gören bir gerçektir ve en önemli kaynağı da insandır.
9. Yazılım geliştirme sürecinde ekipler arası koordinasyon sağlanamamışsa, ortaya çıkan ürün toplama bilgisayara benzer ve entegrasyon için ayrıca vakit ayırmanız gerekir.
10. Yazılım üretiminde, düşünce üretime kaynak olan temel hammaddedir, bu nedenle çalışanların da düşünecek uygun şartları olmalıdır. Düşüncenin olmadığı bir yerde üretim olmaz, ancak kopyalama olur.
11. Birçok kişi farkında olmasa da, dünyanın en büyük yazılım üreticileri dahi, ürünlerine yamalar yapmaktadır. İşin esprisi bunu müşteriye en az etkiyle yapabilmektir. Oysaki ülkemizde hala ulusal yazılımlarda yama yapmak yerine, yeniden yükleme yapılmaktadır. Üretici yazılımlarında bu sorunu ortadan kaldıran yöntemleri mutlaka geliştirmelidir.
Mart 2000
www.ayosis.com
KAYNAKÇA
ÖZHAN SEZGİN
[1] BTHABER dergisi, 259. Sayı, Yıl 2000.
[2] DELPHI UNLEASHED, SAMS PUBLISHING, Charles Calvert,1997.