Her yazılım geliştirme veya yazılım bakım
projesi kalite güvence aktivitesi içerir. Programcı farkında olmasa da, tek
kişilik yaızlım geliştirme projeleri bile kalite güvence aktiviteleri içerir.
Her programcının, kodun nasıl yazılması gerektiği hakkında bir düşüncesi vardır
ve bu düşünce tarzı o pprogramcı için bir kodlama standardı olarak iş görür.
1. YAZILIM KALİTE GÜVENCESİ
1.1 Giriş
Benzer olarak, herkesin bir belgenin nasıl yazılması
gerektiği hakkında fikirleri vardır. Bu, kişiserl bir standarddır. Insanlar,
sahip oldukalrı bu standardlara göre belgeleri gözden geçirirler. Aynı şekilde,
programcılar da programlarının kendi standardlarına uygun olup olmadığını anlamak
için gözden geçirirler. Bu çalışmalara KG (Kalite Güvence) incelemeleri denir.
Bir projenin resmi KG programı, her takım
üyesinin yaptığı KG aktivitewlerini içerir. Fakat bu aktiviteleri kişi bazında
değil de, proje azında KG planları olarak ele alır. KG planlarının uzunluğu, detaylılığı projeye ve
projenin risklerine göre değişir.
1.2 KG Kavramları ve Tanımları
Kalite Güvence, yazılım yordamlarının ve
ürünlerinin “gereksinimlere, standardlara” uygunluğunu belirleyen planlı ve
sistematik çalışmalardır.
Yazılım Kalite Güvencesi, ; yazılım geliştirme süresince her
adımda uygulanan bir şemsiye etkinliktir.
Gereksinimlerin düzgün olarak saptandığını
ve ürünlerin, servislerin belirli standardlarda olduğunu kanıtlayan planlı ve
sistematik bir dizi aktivitelerdir. |
Süreç, Tasarım,
geliştirme, genişletme, yazılım bakımı aktivitelerini kapsar.
Ürün, yazılımı, ilgiyi
veriyi, belgeleri ve tüm raporları kapsar. KG, yazılım geliştirme süreci yaşam döngüsü
boyunca standardların ve yordamların uygulandığını ölçen süreci de kapsar.
Standardlar, yazılım ürünlerinin karşılaştırıldığı kriterlerdir.
Yordamlar, geliştirme ve kontrol süreçlerinin karşılaştırıldığı
kriterlerdir. Gereksinimlere, standardlara, yordamlara uygunluk,
izleme, test yapma, inceleme, değerlendirme ile ölçümlenir. Yazılım geliştirme yaşam döngüsündeki üç
destekleyici aktivite yönetim, mühendislik, kalite güvencesidir.
Yazılım Yönetimi , planlama, kontrol yazılım
projesini yönlendirme aktivitelerini kapsar.
Yazılım Mühendisliği ,
gereksinimlerin analizi, tasarım geliştirme, kodlama, veritabanlarını yaratma
aktivitelerini kapsar.
, yönetim ve mühendislik
aktivitelerinin tüm gereksinimleri karşıladığını garanti eder.
1.3 Kalite Güvence Hedefleri
Yazılım geliştirme, diğer tüm karmaşık geliştirme
aktiviteleri gibi risklerle doludur. Bu riskler, teknik veya program ile ilgili
olabilir. Bu da, yazılımın beklenildiği gibi olmasını engelleyebilir.
KG’nin hedefi, bu riskleri azaltmaktır. Örneğin,
kodlama standardları yazılan kod kalitesini belirli bir seviyede tutmak için
gereklidir. Eğer herhangi bir standard yoksa, oluşan kodun, yeniden
kullanılabilirlik ile ilgili gereksinimlere uygun olmaması riski vardır ve bu
da kodun üstnde tekrar çalışma yapmayı gerektirir.
KG süreci, riskleri azaltmak ve ürünün
kalitesinin garantilenmesi için yapılması zorunlu bir süreçtir. Hiç
bir KG sürecinin olmaması, kabul edilemez bir kodun oluşma riskini arttırır.
1.4 Kalite Güvence Takımı
KG’nin, ayrı, bağımsız bir takım tarafından ele
alınması gerekir. KG fonksiyonları en iyi, mühendislik ve yönetimden ayrı bir KG
test ortamında yapılabilir. Yönetimsel olarak, KG üst müdürlere ve proje
yöneticisine raporlar verir.
Ayrı bir takım gerekmesinin nedeni, geliştirme
sürecinde standardlara uyulduğunu garantileyen, yönetimin sağ kolu
olmasındandır. Eğer KG ayrı olmazsa, gerçekçi bir sonuç elde edilemez. Ayrıca,
testlerin tasarım veya kodlama detayları tarafından etkilenmediğini,
geresinimlere göre yapıldığını garanti eder.
Sadece KG aktiviteleri ile ilgilenen takım
geliştirme takımına göre daha küçüktür ama sadece KG sorumluluğuna sahip bir
takımın bulundurulmasının çok faydası vardır.
Şekil 2 - Yazılım Kalite Güvence Takımının Yeri
1.5 Özet
KG yazılım geliştirme ve bakımının olmazsa olmaz
bir parçasıdır. Yazılım yönetimi ve mühendisliğini tamalayan üçüncü parçadır.
Yazılım projesinin başarısını direkt olarak etkiler.
2. KALİTE GÜVENCE AKTİVİTELERİ
2.1 Planlama
2.1.1 Kalite Güvencesini Projeye Uygun Hale
Getirmek
Projenin karakteristikleri ve riskleri KG
ihtiyaçlarını etkiler ve bu yüzden her KG planı projeye özgü olarak
değiştirilmelidir. Ele alınması gereken karakteristikler projenin görevlerinin
tehlikesi, zaman çizelgesi, bütçesi, büyüklüğü, karmaşıklığı ile ilgilidir.
Normal olarak, proje ne kadar kritikse, KG o
kadar önemli ve biçimsel olmalı diye düşünülür. Ayrıca bütçe ve zaman çizelgesi
ilişkisi segisel değildir. Daha sıkı bir bütçe ve zaman çizelgesi, iyi
planlanmış bir KG’nin önemini arttırır. Ama bu, kaynakları bol olan bir projede
KG gevşek olacak demek değildir. Bu, kaynakları bol olmayan bir projenin riskli
daha fazla olacağı için KG daha güçlü olmalıdır demektir.
Gerekli olan KG seviyesini projenin büyüklüğü ve
son ürün belirler. Büyük bir proje detaylı bir plan gerektirir.
Bunlara ek olarak, büyük bir proje test ve
doğrulama aşamalarında ekstra çaba gerektirir. Böyle bir proje için düşük
kaliteyi önlemek için biçimsel bir KG planı kabul edilmelidir.
Diğer yandan küçük bir projede, KG ço az çaba gerektirir. Hatta KG aktiviteleri
programcıya bırakılabilir.
2.1.2 Kalite Güvence
Planını Yaratmak
KG planı yaratmaktaki amaç, belirli bir proje
için gerekli olan tüm KG aktivitelerini belgelemek ve belirtmektir. Proje
hakkındaki bilgiye ve varolan KG kaynaklarına dayanılarak, projeye uygun bir KG
planı yapılır. Etkin bir plan, planlamayı
ve izlemeyi gerektirir.
KG planı yaratılırken şunları gözönünde
tutmalıyız:
1 |
KG, proje yönetimi ve
mühendisliği ile proje yaşam döngüsü boyunca içiçedir.
|
2 |
KG aktiviteleri düzgün
olarak ayrılmalıdr. Örneğin, tasarım standardları, tasarım bitmeden
hazırlanmalıdır.
|
3 |
Araç temini kullanılacak
araçlar gerekli olmadan temin edilmelidir. (Özellikle test araçları ve veri
kaynakları)
|
2.1.3 Test-Durumu Yaratma
Test-durumu,
bir girdi, eylem veya olay ve beklenen cevabı açıklayan bir belgedir. KG
mühendisleri uygulamanın belirli bir özelliğini test etmek için bu senaryoları
kullanırlar.
Test-durumu yaratma süreci gereksinimlerin
bulunmasına veya tasarıma yardımcı olabilir. Bu yuzden test-case’lerin
geliştirmenin erken evresinde yapılması daha iyidir.
Bir test-durumunda şunlar bulunur.
1 |
Detaylı kurulum talimatları |
2 |
Detaylı test yordamları (tüm
adımları ve eylemleri içerir)
|
3 |
Beklenen sonuçlar (kabul
edilebilirlik kriterleri)
|
2.1.4 Standardları ve Yordamları Saptama
Yazılım projesinin standardlarını ver
yordamlarını saptama çok öenmli bir iştir çünkü bu aşamada yazılımın çerçevesi
belirlenecektir. Yazılım ürünlerinin karşılaştırıldığı standardlar ve
“gelişmenin ve kontrolün” karşılaştırıldığı yordamlar, yazılım geliştirmedeki
metotların geliştirilmesini sağlar. KG’nin rolü, standardların ve yordamların
yeterliliğini ve varlığını garanti etmektir.
KG aktiviteleri olan izleme, ürün değerlendirme,
dentleme belirsiz ytanımlara dayandığı için standardların ve yordamların kağıda
dökülmesi, belgelenmesi şarttır.
Belgeleme
standardları , proje boyunca tutarlılığı sağlar. Ayrıca, paln ve ürün
raporlarının içeriğini ve formunu belirler.
Tasarım
standardları , tasarım ürününün formunu ve içeriğini belirler. Yazılım
gereksinimlerini yazılım tasarımına dönüştürecek olan kuralları ve metotları
sağlar.
Belgelenmiş yordamlar bir yordamı yürütürken uygulanacak adımları
belirler. Örneğin; konfigürasyon yönetimi, test etme, biçimsel incelemeler.
2.1.5 Tamamlanma
Ölçütlerini Saptama
Yazılımın doğası gereği, yazılım geliştirmenin ve
bakımın durumunu tam olarak söyeleyebilmek zordur. Bu yüzden, belirli bölümlerin
tamamlanması ile ilgili kriterler belirlemek gerekir. Gerçekleştirim safhasında,
en detaylı seviyenin bitirilmesi gerekir (progam elemanlarının tasarımı,
elemanları kodlama, test etme) program elemanlarının sayısı fazla olunca,
belirli bir tamamlanma ölçütü olmadan birimlerin bitirilip bitirlmediğini
anlamak zordur. Tamamlanma ölçütü saptanması bir yönetim fonksiyonudur ama
denetleme önemli bir KG aktivitesidir. Denetlemeler, raporlanan durumların
gerçekliğini ölçer.
2.1.6 Standardlar ve Yordamları Denetlemek
Denetleme, KG’nin önemli bir adımıdır. Denetleme,
ürüne veya yordama detaylı olarak bakarak saptanan yordamlar ve standardlar ile
karşılaştırır. Denetleme, yazılım ürünün kalitesini ve durmunu belirlemede
kullanılır.
KG denetlemesinin amacı, gerekli kontrol
yordamlarının izlenildiğini, gerekli belgelemenin yapıldığını ve geliştiricinin
raporunun doğruluğunu kontorl etmektir. KG denetleme raporu, geliştirmenin
standardlara uygun olarak yapılmasını sağlar.
2.1.7 Ürünleri ve Yordamları İzleme, Kontrol
Etme
Proje değerlendirme ve süreç izleme, proje yönetim planında belitilen yazılım
geliştirme ve kontrol yordamlarının projeye doğru şekilde uyulduğunu saptamak ve
standardlara, süreçlere uyulduğunu denetlemektir.
Ürünler standardlara uygunluk için kontrol edilir.
Ürün değerlendirme ve yordam izlemedeki en önemli
eylem denetleme yapmaktır.
İdeal olarak, KG tarafından izlenen ilk ürünler
projenin standardlarıdır. KG, anlaşılır ve erişilebilir standardlar olduğunu
garanti eder ve ürünlerin bu standadrlara uyumluluğunu ölçer. Bu da yazlım
ürünün gereksinimleri sağladığını gösterir.
2.1.8 Doğrulama ve Geçerlilik İzleme
KG, doğrulama ve geçerlilik süreçlerini, izleme
yaparak, ürün gözden geçirmelerine katılarak sağlar. Gözden geçirme, ürüne
genel bir bakış olarak görülür ve ürünün gereksinimlerini karşılayıp
karşılamadığını ölçer. Biçimsel gözden geçirmelerde, tamamlanan iş standardlarla
karşılaştırılır. Gözden geçirmeler yazılım geliştirme sürecnin parçasıdır ve her
bölümün sonunda, problemleri tanımlamak ve gereksinimlerin ne kadar
karşılandığını belirlemek için yapılmalıdır. Sürecin sonunda, hazır/hazır değil
şeklinde bir sonuca varılıp bu sonuca göre bir sonraki adıma geçilir/geçilmez.
Bir sonraki adıma geçip geçmemek yönetimin işi olsa da KG kararda etkili olur.
2.2 KG Testleri
Yazılım testleri ürünün tamamlandığını/tamamlanmadığını
ve dağıtıma hazır olduğunu/olmadığını belirler.
2.2.1 KG Testelerinin Hedefleri
-
Müşteriye verilecek olan
ürünün kalitesini belirlemek
-
Tam olarak bir test yaşam
döngüsünü tasarlamak, birleştirmek, çalıştırmak
-
Son ürünün tüm fonksiyonel
yeteneklerini kontrol etmek
-
Son ürünün kararlılığını ve
performansını test etmek
-
Ürünlerin müşteri
beklentilerine ve gereksinimlerine uygun olup olmadığını test etmek
-
Kodu hatalara karşı test
etmek, doğrulamak
2.2.2 KG Testi İçin
Hazırlık
KG, test planları, ıest belirtimleri, test
yordamları gibi test belgeleri hazırlar ve belgelerin standardlara uygunluğunu
kontrol eder.
KG aşağıdakileri doğrular:
-
Test planlarıyla
testcase’ler birbiriyle tutarlıdır
-
Test-case’leri
doğrulanabilirdir
-
Yazılımın son hali test
edilmektedir.
2.2.3 İyi Bir KG Testi Nasıl Yapılır?
Şunu unutmamak gerekir ki tüm testler, son ürünün
müşteri beklentileri ve gereksinimleri ile karşılaştırılarak yapılacaktır. Bu
yüzden gereksinimler, gerektiğinde değiştirilmelidir ve yazılımın tüm
fonksiyonlarını göstermelidir. Beklenti dışı her fonksiyon hata olarak
varsıyılacaktır.
2.3 Kalite Güvence Testleri
2.3.1 Birim Testi
Birim test durumları programın doğruluğunu ölçmek
için kullanılır. “Beyaz kutu testi” programın modüllerini ve süreçleri test eder.
Bu testte programın fonksiyonelliği değil de kod yapısı incelenir. Bunu
başarabilmek için, bir durum tekniği kullanılır:
1 |
Programdaki her ifade test
süresince en az bir kez doğru veya yanlış değer almalıdır.
|
2 |
Test süresince her durum
olası sonuçların hepsini göstermelidir
|
2.3.2 Yapılandırma
Yönetimi
Yapılandırma yönetimi takımı test ortamını
hazırlar.
2.3.3
Versiyon Doğrulama
Bir versiyon tamamlanma ölçütünü sağladığında
ve test edilmeye hazır olduğunda, KG takımı bu versyionu test eder.
-
Eğer versiyon test
edilemezse, KG takımı bu versiyonu reddeder
-
Eğer bazı parçaları test
edilebilirken bazı parçaları henüz hazır değilse, KG takımı, proje yöneticisi
ile birlikte yeni bir zaman çizelgesi hazırlar.
2.3.4 Tamamlanma Testi
Tamamlanma testi, sistemin tüm parçalarının
birbiriyle düzgün haberleştiğini ve veri akışının doğru yapıldığını test eder.
Son tamamlanma testi, sistem bir bütün olarak çalışabildiğini gösterir.
2.3.5 Fonksiyonel Test
Fonksiyonel test, sistemin her elemanının
gereksinimleri karşılamakta olduğunu, sistem tasraım belirtimlerine, diğer
fonskiyonel özelliklere uyumlu olduğunu gösterir.
2.3.6 Fonksiyonel Olmayan Test
Fonksiyonel olmayan test, tüm belgelenmiş
standardlara ve gereksinimlere uygunluğu gösterir. Örneğin, cevap zamanı, diğer
sistemlerle uyumluluk. Eğer sistem
donanımında sistemin belirli miktar eri tarfiğine izin verdiği belirtilmişse, bu
durumlar da test edilmelidir.
2.3.7 Hata Düzeltme Doğrulama
Eğer geliştirme esnasında hatalar bulunup
düzeltildiyse, KG bu bölümlerdei düzeltmelere ayrıca test uygular.
2.3.8 Anlık Test
Bu tip testler gerçek kullanıcı senaryolarını
canladırmada kullanılır. KG mühendisleri, kullanıcın yapacağı davranışları
yaparak sistemi test ederler. Örneğin sayfa tam yüklenmeden “ileri” tuşuna
basmak gibi.
2.3.9 Gerileme Testi
Gerileme testi, her yeni versiyon yayınlandıktan
sonra, yeni versiyonun eski versiyonlar üzerinde kötü etki bırakıp bırakmadığını
ölçmeye yarar. Gerileme testi, projede devamlı bir artmalı ilerleme olduğunu
gösterir.
2.3.10
Hata Yönetimi
KG test aşamsında, tüm hatalar hata yönetimi iş
akışı ile takıma sunulur. Takım içinde düzenli toplantılar yapılır.
2.3.11 Kalite Gğvence Raporu
Hazırlama
Bu raporlar test sonuçlarını, bilinen hataları,
önerilen çözümleri içerir.
3. YAZILIM KALİTE GÜVENCESİ VE CMM
-
KG,
CMM’de aşağıdaki aktiviteler ile gerçekleştirilir.
-
KG aktiviteleri, projenin her aşamasında uygulanır.
-
Bağımsız bir yazılım kalite güvence grubu
oluşturulur.
-
Projeyle ilgili olan herkese bu bağımsız grup
bildirilir.
-
Genel bir kurumsal KG planı yazılır.
-
KG takımı aktiviteleri YK planında anlatılır.
-
Proje deki uyumululuk doğrulamada ve sonuçların
periyodik olarak raporlandığı kontrol etmek için “denetleme ve gözde geçirme”
teknikleri uygulanır.
-
KG grubu yazılımdaki anormallikleri, çzöülemeyen
durumları uygun bir biçimde raporlar.
-
Uygunsa müşteriyle birlikte kalite güvencesi
gözden geçirilir.
-
KG aktivitelerinin bütçesi ve zaman çizelgesi
belirlenir.
KG grubunun aktiviteleri,
üst düzey yönetim, proje yönetimi ,proje müdürü ve bağımsız uzamnlar tarafından
incelenir.
4. YAZILIM KALİTE
GÜVENCE’DE KURULUŞLAR & SERTİFİKALAR
SEI –
Yazılım Mühendisliği Enstitüsü (Software Engineering Institute) web sitesi; SEI
teknik programlar ile ilgili bilgiler, yayımlar, bibliyografyalar, çevirim-içi
belgeler, SEI kursları, eğitim, diğer sitelere linkler.
IEEE Standardları - IEEE web sitesi; Yazılım mühendisliği standardları,
yazılım kalite güvence standardları
American Society
for Quality – Amerika Kalite Topluluğu (American Society for Quality) web
sitesi; kalite ile ilgili yazılar. Dünyanın bu konudaki en büyük organizasyonu.
100.000’den fazla üyesi vardır. ASQ
Yazılım Bölümü (Software Division) web sitesi ise yazılım ile ilgili kalite
güvence bölümüdür.
Yazılım Kalitesi
Topluluğu (Society for Software Quality)
QAI – Kalite
Güvence Enstitüsü (Quality Assurance Institute)
CSQE - ASQ Amerika Kalite Topluluğu (American Society for
Quality) CSQE Sertifikalı Yazılım Kalite Mühendisi (Certified Software Quality
Engineer) programı – Gereksinimler ile ilgili bilgiler var.
CSQA/CSTE - QAI Kalite Güvence Enstitüsü’nün (Quality Assurance
Institute) CSQA Sertifikalı Yazılım Kalite Analisti (Certified
Software Quality Analyst) programı ve CSTE Sertifikalı Yazılım Test Mühendisi
(Certified Software Test Engineer) sertifikası.
ISEB
Yazılım Test Sertifikaları (Software Testing Certifications) – İngiliz
Bilgisayar Topluluğu (The British Computer Society) 3 seviyeli sertifika sistemi:
- ISEB Kuruluş Sertifikası (Foundation Certificate), Pratisyen Sertifikası
(Practitioner Certificate), ve Pratisyen Diploması (Practitioner Diploma).
5. Kaynaklar:
Software QA and Testing Resource Center – FAQ
Software QA and Testing Resource Center - Other Resources
Software QA and Testing Resource Center – Tools
StickyMinds_com Article info
Quality Assurance Section for a Design Specification
Establishing & Implementing Software QA, Arati
Prabhkar, IonIdea Enterprise Solutions Pvt Ltd, Banglore
Quality Assurance Concepts, QA Concepts and
Implemetation Guidelines, August 2000, Nadeem Kayani
Makale:
Yazılım Kalite Güvencesi Yazılım Mühendisliği Tanıl Ergin
|