• Sonuç bulunamadı

Yazılım kelimesinin anlamı, bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelendirmelerin tümü olarak ifade edilmektedir. Yazılım aynı zamanda, mevcut bir problemi çözmek amacıyla cihazların birbirleriyle haberleşmelerini sağlayan, görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan bilgisayar dili kullanılarak oluşturulmuş anlamlı ifadeler bütünü olarak da nitelendirilebilir. Yazılıma dair bu tanımlar daha çok kodlama ile ilgili iken aslında yazılım geliştirme sadece kodlardan ibaret değildir. Bu açıdan bakıldığında yazılım geliştirme, yazılımın hem üretim hem de kullanım süreci boyunca geçirdiği tüm aşamalar olarak ifade edilebilir (Özbilgin ve Özlü, 2010: 2).

Ürün geliştirme ve yenilik son yıllarda pek çok pazarda rekabetin en temel anahtarı olarak tanımlanmaktadır. Geliştirilme süresi tahmin edilebilen, maliyeti nispeten daha düşük, kaliteli ve yüksek performanslı ürünlere olan talep her geçen gün artmaktadır. Yeni ürünlerin geliştirilebilmesi içinse, ürün geliştirme süreçlerinin verimli bir şekilde yürütülmesi gerekmektedir. Fakat yeni geliştirilen ürünlerin başarısız olma ihtimali her zaman vardır (Akman ve Karakoç, 2005: 103).

Yazılım geliştirme süreçlerinin 1940’lı yıllarda başladığı ifade edilmektedir. O yıllarda geliştirilen yazılımların en büyük eksikliği zamanında tamamlanamaması ve kalitesinin istenen düzeyde olmamasıdır. Teknolojinin çok hızlı gelişmesi de birçok yazılımın devre dışı kalıp kullanılamamasına ve o projenin başka bir yazılımla yeniden başlamasına, dolayısıyla zaman kaybına sebep olmuştur. Bu sorunların tespitinden sonra yeni yazılım dilleri, yeni yöntemler ve disiplinler geliştirilmeye başlanmıştır. İlk yıllarda yazılım projelerinin belirlenen sürede belirlenen iş gücü ile tamamlanması yönünde çalışmalar yapılmıştır. İnternetin yaygınlaşmaya başlamasıyla birlikte yazılımlar güvenlik zayıflıkları nedeniyle kötü niyetli ve bilinçsiz kullanıcılar tarafından kullanılmaya başlanmış ve e-ticaret, e-devlet gibi günlük hayatımızın birer parçası olan uygulamaların güvenlik riskleri ortaya çıkmıştır (Beydağlı vd., 2009: 11).

Geliştirilen yazılımlarda çeşitli sebeplerle bazı hataların olması kaçınılmazdır. Üzerinde çalışılan uygulama alanının kritiklik seviyesine göre hatalar değişkenlik gösterebilmektedir. Bir finans kuruluşu için geliştirilen uygulamada yapılan ufak bir hata büyük miktarlarda para kaybına yol açabilecekken, askeri alanda yapılan uygulama hataları maddi kaybın yanı sıra can kaybına dahi yol açabilecek boyutta riskler taşımaktadır (Tiftik vd.,2007: 1).

Yazılımların hayatımızdaki yeri ve önemi gün geçtikçe artmakta ve bu da yazılım çalışmalarına hız vermektedir. Böylece yeni yazılım geliştirme metodları ve programlama dilleri ortaya çıkmaktadır. Her üründe olan başarısızlık ihtimali yazılımda da vardır ve tüm gelişmelere rağmen projelerde planlanan zamanın gerisinde kalma, belirlenen bütçenin üzerine çıkma, düşük kalite, sürekliliğin ve güvenilirliğin sağlanamaması ve kullanıcı taleplerinin tam anlamıyla karşılanamaması gibi sorunlar sürekli yaşanmaktadır (Özbilgin ve Özlü, 2010: 2).

Yazılım sektöründe geliştirilen ürünlerin ömürleri çok kısadır. Bu sebeple bu sektörde faaliyet gösteren firmalar için rakiplerinden daha hızlı davranmak, yani zaman çok önemlidir. Bu sebeple ürün geliştirme süreçleri çok iyi yönetilmelidir (Akman ve Karakoç, 2005:103).

Yazılım geliştirme süreçleri analiz, kodlama, test ve bakım olmak üzere beş kategoriye ayrılabilir (Özbilgin ve Özlü, 2010: 1). Karşılaşılan problemlere çözüm olarak sunulan yazılımların ne yapacağının ve nasıl yapacağının belirlendiği, yani problemin tanımlamasının yapıldığı aşama, analiz aşamasıdır. Yazılan kod, istenilen şeyi yapıyorsa yazılıma başarılı denebilir. Bu sebeple bu aşamada öncelikle yazılımdan ne istendiğine karar verilir ve doğru bir şekilde tanımlanır. Ayrıca bu aşamada, projede çalışacak personeller, ekipmanlar, donanım gereçleri belirlenir ve sistemin fizibilite raporları çıkarılır. Sistemin ne yapıp ne yapmayacağı belirlenir. Analiz aşamasının sonucunda belirlenen ihtiyaçları karşılayacak temel yapının oluşturulduğu aşama ise tasarım aşamasıdır. Yazılım; tasarım, sistemin nasıl gerçekleştirileceğini ortaya koymak için kullanılan teknikler, stratejiler ve desenlerle ilgilidir. Bu aşamada bileşenler arasındaki ara yüzler, yazılımın mimari tasarımı, kullanıcı ekranlarının tasarımı, tasarımda kullanılan araçlar ve bunların değerlendirilmesinden oluşur. Bu aşamada hem yazılım programının omurgası hem de kullanıcıya sunulacak görsel tema belirlenir. Sonraki aşama olan kodlama aşaması, tasarım aşamasında ortaya çıkan bilgiler doğrultusunda yazılımın gerçekleştirildiği aşamadır. Bu aşama, hem yazılımın geliştirilmesi, programlanması hem de kullanıcıya ulaştırılması sürecindeki bütün çalışmaları kapsar. Bu aşama aynı zamanda, veri tabanının fiziksel yapısının bilgisayar ortamında çalışan yazılım biçimine dönüştürülmesini de içine alır. Yazılımın geliştirileceği ortam, kullanılacak olan programlama dili, veri tabanı yönetim sistemi bu aşamada gerçekleştirilir. Yazılım kodlama sürecinden sonra gerçekleştirilen kontrol etme, sınama ve doğrulama aşaması, test aşamasıdır. Sonuçta ortaya çıkan yazılımın belirlenen ihtiyaçları karşılayıp karşılamadığı test edilir. Testler ve geri bildirimler, yazılım müşteriye sunulduktan sonra da devam eder. Bakım aşamasında ise yazılım testleri sonucunda ortaya çıkan bir hata var ise giderilir ve gereken yeni eklentiler yapılır. Eksiklerin giderilmesi ve gereken iyileştirmelerin yapılması aşamasını da kapsar (Özbilgin ve Özlü: 2010: 3). Yazılım testleri, üretilen yazılımlardaki hataların tespit edilip düzeltilmesi, yazılımın son halinin hata içermediğinin garanti altına alınması ve yazılım uygulamalarının doğru çalıştığının gösterilmesi amacıyla yapılan faaliyetlerdir (Tiftik vd., 2007: 1).