Yazılımda Kalite Denetimi

Yazılım Kalite Denetimleri, yazılım mühendislik süreçleri ve yöntemlerinin başarıyla uygulamasını garanti altına almak için kullanılan bir izleme yöntemidir. Yöntem, dünyada kabul gören  CMMI, ISO 9000 gibi birçok standartlar ile uygulanabilir.

Yazılım Kalite Denetimleri; analiz, tasarım, kodlama, kod kontrol ve gözden geçirmeleri, değişiklik yönetimi, konfigürasyon yönetimi ve sürüm yönetimi gibi, yazılım geliştirme sürecinin bütün aşamalarını kapsamaktadır.

GİRİŞ 
Günümüzde yazılım projelerinin planlanan zaman ve parasal maliyetlerin çok üstünde bir maliyetle tamamlanması oldukça sık rastlanan bir durumdur.
 
Projelerin uygun maliyetlerle tamamlanması kadar; 

  • Yerleşik kurum kültürünün yaygınlaşması, 
  • İş yapış biçimlerinin kurumun her bölümünde belirli standartlarda olması, 
  • Kişi ve proje bağımlılığının ortadan kalkması, 
  • Kurumsal bilgi ve deneyim havuzunun oluşması, 
  • Organizasyona yeni katılan çalışanların işlerine hızla adaptasyonu da

gözönüne alınması gereken önemli hususlardır. Bu hususların gerçekleştirilmesi, organizasyonel seviyede olumlu sonuçlar verecektir.

1.YAZILIMDA KALİTE

Dünyada Bilişim projelerinin durumuna bakacak olursak. Standish grubun 2009 temmuz ayında yayınladığı raporda Bilişim Projelerinin yıllar itibariyle başarı durumları raporlanmıştır. Tablo 1. de görülen veriler incelendiğinde proje başarım oranlarının iyileşmekte olduğu gözlenmekle beraber halen katedilmesi gereken bir hayli yol olduğu görülmektedir. Başarısızlığın en önemli nedeni ise projelerin kötü yönetilmesi olarak gösterilmektedir. 

Yıllara Göre Proje Başarı Durumları*

 

1994

1996

1998

2000

2002

2004

2006

2009

Başarılı

16%

27%

26%

28%

34%

29%

35%

32%

Sorunlu

53%

33%

46%

49%

51%

53%

46%

44%

Başarısız

31%

40%

28%

23%

15%

18%

19%

24%

*Standish Group 2009 raporu

Türkiye’deki duruma bakıldığı zaman, 

  • Süreç standart/modellerinin yeterince referans alınmadığı, 
  • Uygun altyapı/araçlarla çalışma ve eğitim eksiklikleri, 
  • Kuruluşlarda yazılım mühendisliği bilgi birikimi kurumsallaştırılamadığı, 
  • Yazılım projelerinin profesyonel bir şekilde planlanıp yönetilmediği, 

gibi sorunlar gözlenmektedir. 

Tüm bu gözlemler, yazılım üreten organizasyonlarda, “süreç yönetimi temelli” düşünce ve metodoloji kullanımını öne çıkarmaktadır. Ürünün kalitesini, onu üreten sürecin kalitesi belirler. Dolayısıyla yazılım ve kalite birbirinden ayrılmaz iki unsur olarak karşımıza çıkar. Kalite uygulamalarında pek çok süreç modelleri referans alınmaktadır. Süreç modelleri, uzun yıllar uygulanan en iyi yaklaşımlar saptanarak, uluslararası kabul gören uygulamalar bütünüdür.

2.YAZILIMDA KALiTE Faktörleri

Yazılımda kalitenin kesintisiz olarak sağlanabilmesi ve değişen koşullara göre sürekli iyileştirilmesi için “Yazılım Kalite Denetimleri” mutlaka olması gereken bir süreç alanı olarak karşımıza çıkar. 

Yazılımda Kaliteden söz edilebilmesi için gerek üretim süreçlerinde vegerek se nihai olarak da bir ürün olarak yazılımda, mutlaka bulunması beklenen faktörler, temel yazılım mühendisliği disiplinlerinde belirlenmiştir. Aşağıdaki bölümlerde bu faktörler incelenecektir. 

2.1 DOĞRULUK (CORRECTNESS) 
Yazılımda “Doğruluk”, yazılımın verilen görevleri tam olarak yerine getirebilmesi ve beklenmedik sonuçların oluşmaması olarak açıklanabilir. Bir yazılım projesine başlamadan önce gereksinimler tam olarak belirlenmeli, yazılım projesinin tüm aşamalarında sınamalar ile beklenen doğruluğun  sağlandığı garanti edilmelidir. 

2.2 DAYANIKLILIK(ROBUSTNESS) 
Yazılım sisteminin kendinden beklenmeyen işler yapmaması olarak açıklanabilir. Beklenmedik durumlar dolayısıyla programın çalışmasının kesilmemesi ve beklenmedik sonuçlar üretilmemesidir. 

2.3 GENİŞLEYEBİLME (EXTENDİBİLİTY) 
Yazılım sisteminin ileri aşamalarda verilen görevlerin değiştirilmesine veya yeni görevler eklenmesine izin vermesidir. 

2.4 TEKRAR KULLANIM (REUSABİLİTY)
Yazılımın ya da yazılım parçalarının başka projelerde de farklı yazılımlar içerisinde de kullanılabilmesidir.

2.5 UYGUNLUK (COMPABİLİTY)
Endüstride kabul görmüş standartların (veri yapıları, mesaj yapıları, kullanıcı yüzü vb) yazılım içerisinde uygulanmasıdır. 
 
2.6 STANDARTLAŞTIRMA (STANDARDİZATİON)
Sistemin içerisinde kullanılacak standartların belirlenerek, tüm yazılımda buna uyulmasıdır. Standartlaştırma kaynak kodunda kullanılacak isimlendirmeden, kullanıcı ön yüzlerinin renk ve biçimlerine kadar geniş bir kapsamda uygulanmalıdır.

2.7 VERİMLİLİK (EFFICIENCY)
Bir yazılım çalıştığı ortamdaki tüm çevre birimlerini etkin bir şekilde kullanmalıdır. Kaynakları gereğinden eksik ya da fazla kullanmamalıdır.

2.8 TAŞINABİLİRLİK (PORTABİLİTY)
Bir yazılımın geliştirildiği ortamlardan farklı ortamlara da taşınarak çalışması olarak özetlenebilir. 

2.9 KONTROL EDİLEBİLİRLİK (VERIFIABILITY) 
Yazılımın kod akışının gerektiğinde izlenebilmesi, yazılımın, çalışması sırasında hatalı durumlarla karşılaşması durumunda kullanıcıya yeterli bilgi verebilmesi olarak düşünülebilir.

2.10 BÜTÜNLÜK (INTEGRITY)
İstenmeyen durumoluştuğunda yazılım, veri, doküman gibi unsurların korunmasıdır. Hata durumlarında tutarsızlıklar olmasına  izin verilmemesi gerekmektedir.,

2.11 KOLAY KULLANIM (EASY OF USE)
Kullanıcıların yazılımı kolayca kullanabilmesi için yazılımın sahip olması gereken özelliklerdir.

2.12  BERABER ÇALIŞMA (INTEROPERABILITY)
Yazılımın, farklı yazılımlarla etkileşimli olarak çalışabilme özelliğidir.

2.13 DOKÜMANTASYON (DOCUMENTATION)
Yazılım sisteminin geçerli standartlara uygun, güncel, açık ve anlaşılabilir şekilde dökümante edilmiş olmasıdır.
 
2.14 Güvenilirlik (RelIabIlIty)
Yazılımın beklenen erişilebilirlik oranlarına sahip olması gereklidir. Yazılım kullanıcıların hata yapmasına izin vermemelidir.

2.15 Ölçeklenebilirlik (ScalabIlIty)
Yazılımlar ileride olabilecek kapasite artışlarını (örneğin kullanıcı sayısının artışı) karşılayabilir ve çözümü adreslemiş olmalıdır.

2.16 Güvenlik (Securıty)
Yazılımın, yetkililendirme, verilerin korunması, sistemin güvence altında tutulması gibi özellikleri barındırmasıdır.

3. YAZILIM KALiTEsinin güvence altına alınması

İkinci bölümde sıralanan kalite faktörlerinin başarıyla gerçekleştirilmesi, yazılım süreçlerinin her alanında pek çok disiplinin uygulanabilmesi ile mümkündür. 

  • Gereksinim Analizi, 
  • Tasarım, 
  • Yazılım Geliştirme, 
  • Ürün Tümleştirme, 
  • Doğrulama, geçerleme vb. gibi, 

yukarıda sıralanan yazılımın teknik olarak ele alınmasını kapsayan süreçlerin yanı sıra, proje yönetimi, konfigüeasyon yönetimi ve diğer yazılım süreçlerinin de kabul görmüş pratiklerle ele alınması gerekmektedir.

Yazılım sisteminin kalitesinin denetlenmesi, kalite güvence sürecinin temelini oluşturmaktadır. Aşağıdaki bölümde Yazılım Kalite Denetimlerinin mekanizması incelenmiştir.

4. Yazılım Kalite Denetimleri

Yazılım Kalite Denetimleri “süreç” bazında yapılır. Üst Yönetimin bilgisi ve desteği ile gerçekleştirilir. Yazılım Kalite denetimleri ile yazılım süreçlerinin kalitesi ölçülebilir.

Kalite denetimleri belli bir plan dahilinde gerçekleştirilir. Denetçiler kalite uzmanı olduğu gibi,  denetlenecek konuda uzman kişilerden de oluşabilir. 

Denetçiler; 

  • Sakin, güvenilir, nazik, bilgili, tarafsız, dakik, ön yargısız, yapıcı, hazırlıklı, kararlı,azimkar, sağ duyulu, analitik düşünebilen kişiler olmalıdır. 

Denetlenenler; 

  • Denetim takvimine uymalıdır, 
  • Denetim için gerekli dökümantasyona ve hazırlığa sahip olmalıdır. 
  • Denetim sonunda belirlenen uygunsuzlukların giderilmesinde yapıcı olmalıdır, 
  • Denetimler nesnel kanıtlar esas alınarak yapılmalıdır. Denetim akışında;. 
  • Denetimler planlanır; 
    • Gerek periodik denetimler, gerek se proje denetimleri öncelikle mutlaka  planlanır, plan tüm paydaşlara duyurulur. Planda belirtilen takvime uyulması esastır. 
    • Kalite denetimleri genellikle proje aşamaları sonunda yapılır. 
  • Kalite Güvence kontrol listesine göre denetim gerçekleştirirlir; 
    • Her sürece özel kontrol listelerinin hazırlanmasında, denetlenecek ürün parçasının kalite faktörlerine uygunluğu gözönüne alınmalıdır. 
  • Denetim değerlendirme kayıtları oluşturulur; 
    • Varsa uygunsuzluklar için, denetçi ve denetlenen birlikte düzeltici aktiviteleri belirler. Aktiviteler muğlak olmamalı,  gerekli kaynak ve zaman atamaları bulunmalıdır. . 
  • Düzeltici aktiviteler izlenir; 
    • Uygunsuzlukların giderilmesi için, gerekli düzeltici aktiviteler, denetimi yapan kişi tarafından izlenir. Sonuçlar üst yönetime raporlanır. 

Yazılım kalite güvencesini garanti almada Kalite Denetimlerine ilaveten kullanılan iş ürünü bazında bazı değerlendirme ve gözden geçirmeler aşağıda görülmektedir; 

  • Üretilen proje dökümanlarının gözden geçirilmesi/kontrolu; 
    • Proje planı, risk planı, tasarım dökümanları vb. 
  • Eş gözden geçirmeler; 
    • Üretilen iş ürününün, bir diğer uzman tarafından teknik gözden geçirilmesi. 
  • Kofigürasyon denetimleri. 
  • Yazılım testleri; 
    • Birim testler, 
    • Kullanıcı, 
    • Kabul testleri. 

Bahsi geçen tüm konrol ve denetimler organizasyon içinden denetçilerce yapılacağı gibi, dışardan bağımsız denetçiler tarafından da yapılabilir. Akreditasyon amaçlı yapılan denetimler de benzer mekanizma ile gerçekleşir.

SONUÇ

Yazılım organizasyonlarında gerçekleştirilen kalite denetimleri, sadece kalitenin değerlendirilmesini sağlamayıp, kesintisiz olarak uygulanması gereken bir süreç olan “Süreç İyileştirme” için çok önemli girdiler sunar. Kalite Denetim sonuçlarının iyi okunması ile organizasyonel başarının yükseltilmesi için gerekli iyileştirme fırsatları yakalanabilir. 
 

KAYNAKÇA

  1. PMBOK Guide 3rd edition, An American National Standard
  2. Organizational Project Management Maturity Model (OPM3)
  3. CMMI for Development Version 1.2
  4. http://www.projectsmart.co.uk/the-curious-case-of-the-chaos-report-2009.html
  5. Wikipedia

Bu makaleyi döküman olarak görmek için tıklayınız.

- İletişim

İlişkilerimizde ve eğitimlerimizde uzmanlık ilkemizdir. Bizimle irtibata geçerseniz, size nasıl yardım edebileceğimize ve nasıl katkı yapabileceğimize birlikte karar verebiliriz. Acil ihtiyaçlarınız veya uzun vadeli hedefleriniz için bize ulaşabilirsiniz.

Adres

Ankara / TURKEY

Sosyal Medya

- İletişim Formu