Yazılım Geliştirme Süreci

Posted on Aralık 8th, 2009 in Yazılım by Hhuso

Yazı uzun fakat çok faydalı bir yazı. Gözünüz takıldıysa eğer sonuna kadar gitmenizi tavsiye ederim.

Özet
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. GiriÅŸ

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 olmamıştır. 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, ne de hedef sektörler açısından bilgi teknolojilerinden istenen düzeyde yararlanmak mümkün olabilmiştir.

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ını yapmış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. Yazılımın üretim nedeni

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. Birçok yazılım firmasının yükselişini ya da inişini etkileyen aşamalar bundan sonra ortaya çıkacaktır.

3. Yazılımın kullanılacağı sektörün incelenmesi

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 sarfedilerek 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 imkanlar.
  • 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, varolan 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 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 kullanılan diğer yazılımlar

    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. Bayi alt yapısı, ulaşım ve ilgili diÄŸer konular yoÄŸunlaşılan bölge için deÄŸerlendirilmelidir.5. Yazılım analizinin yapılması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.
  • 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.Bunların 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. Analize uygun tasarımın yapılmasıGeliÅŸtirilen yazılımın kullanıcı arayü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ı arayü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. Arayüzlerin tasarımı ve geliÅŸtirme araçları
  • Yazılımın adı.
  • Ikon tasarımı.
  • Kapak resmi (Ya da açılış resmi).
  • Kullanılacak derleyici ya da yorumlayıcı tespiti.
  • Kodlama ve iÅŸ akış diyagramlarının hazırlanması.
  • Veri giriÅŸ ekranlarının tasarlanması.
  • Sorgulama (Ya da 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ış arayü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 ya da 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. Tasarımın bilgisayar ortamına aktarılması (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çektende, 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. Yazılımın test edilmesiTest, ü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 geribildirim (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ı geribildirimler 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. 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ÄŸitim ve oryantasyon materyallerinin hazırlanmasıMüşteri için kullanıma hazır hale getirilen yazılım, tamamlayıcı öğelerin de saÄŸlanmasıyla bitmiÅŸ demektir. Ortaya çıkarılan uygulamanın eÄŸitiminin ve dokümantasyonunun 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ı.
  • Bayiler 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:

     

  • BaÅŸarı için sadece bilgi yeterli deÄŸildir, bilgiyi kullanacak tekniklerin de firma çalışanları tarafından bilinmesi gerekir.
  • Kaliteli yazılım firması, geliÅŸtirdiÄŸi ürünü destekleyebilen ve onu zamana uydurandır.
  • Uygulama yazılımının kalitesi, satış, destek ve performans bileÅŸiminin büyüklüğü ile ölçülür.
  • Yazılacak uygulamanın kullanılacağı sektörü en iyi ÅŸekilde bilmek analizcinin ve destek biriminin görevidir.
  • GeliÅŸtirme sürecinde analiz için harcanan süre ne kadar uzun olursa olsun boÅŸa harcanmış sayılmaz.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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. Oysa ki ü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.
  • Kaynak : http://cisn.odtu.edu.tr/ozel/pamuk.php

    Post a comment