Yazılım dünyasında yapılan bazı hatalar büyük mali kayıplara sebep olabilir. Bir yazılım ürününde gerek tasarım gerek kodlama kısmında hata yapılabilir. Bu hatalar düzeltilemediğinde kaliteden ödün verilmiş olunur ve sonuçları pahalıya mal olabilir. Yazılımın kalitesini önemli kılan unsur da budur.
Yazılım kalitesi, söz konusu yazılım ürününün beklenen tüm işlevlerini hatasız ve güvenli şekilde gerçekleştirmesi yeteneğini ifade eder. Satın almadan evvel bir meyvenin kalitesi, tazeliği, boyutu, şekli değeri nasıl değerlendiriliyorsa yazılım sisteminin de kalitesi “Kalite Güvencesi” (QA) aracılığıyla değerlendirilir. Bu da yazılım geliştirme aşamasında kalite güvencesinin ne kadar önemli olduğunu vurgular. QA’nın yazılım sağlayıcıları, kullanıcılar ve ürün sahipleri açısından bu kadar önemli olmasının sebeplerinden birisidir.
Yazılım Geliştirmede Yapılan Hataların Gerçek Hayattaki Örnekleri
İşletmelere milyarlarca dolar zarara mal olan insan kaynaklı yazılım hatalarına pek çok örnek verilebilir. 2012 yılında tanınmış büyük bir e-ticaret firması sadece 45 dakika içinde 440 milyon dolarlık bir zarara uğramıştır. Bu olay, Wall Street’te büyük bir kaosa yol açmıştır. Söz konusu hata, alım satım esnasında eski olan ve kullanılmayan bir sistemin yanlış şekilde yapılandırılması ve hisse senedi alım satımında yanlış fiyatların yansıtılması sonucunda gerçekleşmiştir.
Diğer bir örnek de 2015 yılında Starbucks şirketinde yaşanan kayıptır. Kanada ve ABD’deki pek çok satış noktasında bu noktaların kapatılmasını sağlayan günlük sistemsel yenilemeler esnasında oluşan bir arıza sebebiyle milyonlarca satış kaybedilmiştir. Şubeler, sistemlerin tamir edilip eski hâline gelmesi sağlanan süre içerisinde içeceklerin bedava dağıtılmasına zorlandı. Bu da büyük miktarda zarara sebep oldu.
2017 senesinde Uber’de kaynaklanan bir bildirim hatası ile bir kişiye eşinin ilişkisi hakkında bildirim gittiğinde Uber’e büyük bir dava açıldı. Bu hatada uygulama, cihazdaki hesaptan çıkış yapsa bile eşinin telefonuna Uber bildirimi atmaya devam etti. Bu hata milyonlarca zarara ve evliliğin bozulmasına mal oldu.
Kalite Güvencesinin Temeli
Temelden başlayarak kalite güvencesi süreci ve bu süreçle yakından alakalı olan kavramları ele alıp inceleyelim.
Genel olarak kalite güvencesi, yazılım ürünü kodundaki söz konusu hataları ve de bu hataları belirlemek adına yapılan testlerin süreci olarak bilinir. Ancak sadece bu yazılıma kalite güvencesi sağlamaz. Test, QA sürecinde sadece bir parçadır ve yazılım geliştirmenin döngüsünde de önemli bir yeri vardır. Ancak bu güvence aşaması sadece test ile sınırlı değildir. Esasında kalite güvencesi, test ve kalite kontrol birbiriyle ilişkili olan fakat birbirinden farklı kavramlardır.
Test, söz konusu yazılım kodunun kontrolünü sağlama ve hatalarla kusurları tespit edebilmek adına tasarım oluşturma eylemidir. Kara kutu, gri kutu, beyaz kutu gibi test prosedürleri mevcuttur. Bunlar yazılımı test eden kişiler tarafından manuel olarak gerçekleştirilebileceği gibi otomatik olarak da gerçekleştirilebilir. Test etme işlemi, yazılımın geliştirme sürecinin tamamında uygulanabilir.
Kalite kontrol, geliştirilen yazılım ürününün spesifikasyonlara ve gereksinimlere uygunluğunun doğrulanması sürecini ifade etmektedir. Bütün özelliklerin bir arada mükemmel şekilde işlemesini sağlamak için tamamlanan ya da bitmek üzere olan ürün üstünde yürütülür.
Test, tasarım ve koddaki hatalara odaklanırken; kalite kontrol, bütün olarak ürünün kalitesi hakkındaki doğrulamaya odaklanır.
Diğer bir yandan kalite güvencesi, hem kalite kontrolünü hem de testi kapsamakta olan ve genel yazılım geliştirme süreci kalitesine odaklanmakta olan geniş bir kavramdır. Daha iyi bir kalite kontrol süreci sağlamak için bu süreçlerin tutarlı olarak iyileştirilmesini ifade etmektedir.
Yazılım Geliştirmede Kalite Güvencesi Neden Önemlidir?
Kalite güvencesi, müşterilerle kurulan ilişki ve işletmelerin pazar içindeki itibarları için çok önemlidir. Zaman ve paradan tasarruf sağlamak isteniyorsa iyi bir kalite güvencesi gerekmektedir. Hataların tespit edilmesi ve bunların düzenlenmesi ilerleyen süreçte daha da pahalıya mal olabilir. Kalite standartlarını korumak yazılım geliştiricilerinin sorumluluğundadır.
Sektör içindeki rakipler arasından sıyrılıp pazarda etkili bir yer sahibi olmak için performans ve kalite standartları korunmalıdır. Kalite güvencesi ne kadar iyi olursa sonra gelecek her güncellemede rekabet gücünü o ölçüde korumuş olur.
Bir yazılım ürününün güvenlik açığı yazılım güvenilirliği ile kullanıcı verilerini tehlikeye atabilir. Aslında en önemli unsurların başında da güvenlik gelmektedir. Kalite güvencesi, güvenilir bir ürün oluşturmaya yönelik eylemlerden birisidir.