Yazılım Kalite Güvencesi Nedir?
Yazılım Kalite Güvencesi (Software Quality Assurance, SQA) bir nihai ürünün istenilen kalitede olmasını sağlamak için yapılan bir dizi faaliyet ve süreçtir. Yazılım kalite güvencesi “istenilen kaliteyi nasıl sağlarız?” sorusuna cevap arar. Temel amacı ürün üzerindeki kusurları minimize etmektir.
IEEE sözlüğünün verdiği en yaygın tanımlardan biri olarak Yazılım Kalite Güvencesi;
- Bir birimin veya ürünün, kurulu teknik gereksinimlere uyduğuna dair yeterli güven sağlamak için gereken tüm eylemlerin planlı ve sistematik bir şekli.
- Ürünlerin geliştirildiği veya üretildiği süreci değerlendirmek için tasarlanmış bir dizi etkinlik. Kalite kontrolüyle zıtlık şeklinde tarif edilir.
“Software quality assurance – The IEEE definition:
- A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements.
- A set of activities designed to evaluate the process by which the products are developed or manufactured. Contrast with quality control.”
Kalite Güvence sadece hata ve kusurları tespit etmekle kalmaz aynı zamanda engellemeye de yoğunlaşır. Bunun için uygun bir geliştirme ortamı sağlama; izlenecek süreç ve prosedürleri tanımlama; süreç ve prosedürlerin etkinliğinin nasıl ölçüleceğini ve geliştirildiğini tanımlama gibi bir dizi aktiviteleri gerçekleştirir.
Yazılım Kalite Güvencesi Faaliyetlerinin Hedefleri
Yazılım Geliştirme – Süreç Odaklı Hedefler
- Yazılımın fonksiyonel teknik gerekliliklere uygun olacağına dair kabul edilebilir bir güven seviyesinin sağlanması.
- Yazılımın yönetimsel zamanlama ve bütçe gereksinimlerine uygun olacağına dair kabul edilebilir bir güven seviyesinin sağlanması.
- Yazılım geliştirme ve Yazılım Kalite Güvence faaliyetlerinin iyileştirilmesi ve daha fazla etkinliği için faaliyetlerin başlatılması ve yönetilmesi. Bu, yazılım geliştirme ve Yazılım Kalite Güvence faaliyetlerinin yürütülmesinin maliyetlerini düşürürken, işlevsel ve yönetsel gereksinimlerin sağlanabileceği konusunda olumlu bir yönde ilerlendiği anlamına gelmektedir.
Yazılım Bakım – Ürün Odaklı Hedefler
- Yazılım bakım faaliyetlerinin kabul edilebilir bir güven düzeyinde fonksiyonel teknik gereksinimlere uyumlu olmasını sağlamak.
- Kabul edilebilir bir güven düzeyinde yazılım bakım faaliyetlerinin yönetsel zamanlama ve bütçe gereksinimlerine uyumlu olmasını sağlamak.
- Yazılım bakım ve Yazılım Kalite Güvence faaliyetlerinin verimliliğini artırmak ve geliştirmek için faaliyetleri başlatmak ve yönetmek. Bu, maliyetleri düşürürken fonksiyonel ve yönetsel gereksinimlerin karşılanma olasılığını artırmayı içermektedir.
Kalite Güvencesi, Kalite Kontrolü ve Kalite Yönetimi
Kalite kontrolü, “geliştirilen veya imal edilen ürünün kalitesini değerlendirmek için tasarlanmış bir dizi faaliyet” olarak tanımlanır [IEEE, 1991]. Diğer bir deyişle, ana amacı, beklenen koşulları ve işlevleri sağlamayan bir ürünün geri çevrilmesi için yapılan faaliyetlerdir.
Kalite güvencesinin temel amacı ise, geliştirme ve üretim süreçleri/aşamaları boyunca gerçekleştirilen çeşitli faaliyetlerle kaliteyi garanti etme maliyetini en aza indirmektir. Bu faaliyetler hataların nedenlerini önler ve geliştirme sürecinin başlarında onları tespit eder ve düzeltir. Sonuç olarak, kalite güvencesi faaliyetleri, uygun olmayan ürün oranını önemli ölçüde düşürmekte ve çoğu durumda kaliteyi garanti altına alma maliyetlerini düşürmektedir. Bu süreçler şu şekilde özetlenebilir:
»
Kalite kontrol: Hataları tespit etme aktivitesi. (Analoji: Kontrol et hatalıysa at.)
»
Kalite güvence: Analiz etme aktivitesi. (Analoji: Analiz et ve hatalıysa engelle.)
»
Kalite yönetimi: Metrikleri kullanarak ölçme aktivitesi.
Hata (Defect) Tespit Etme Süreçleri
Yazılım Kalite Güvencesi – Software Quality Assurance bir nihai ürünün istenen kalitede olmasını sağlamak için bir dizi faaliyet ve süreçtir. Hata tespit etme süreçleri doğrulama – verification ve geçerleme – validation ( V&V) aktiviteleridir. Doğrulama – verification ve geçerleme – validation ( V&V) yazılım geliştirme sürecinin her fazında ürünün bu aşamanın veya fazın gerekliliklerini karşıladığının gösterilmesini sağlar. Yani doğrulama – verification ve geçerleme – validation yazılım kalite güvencesinin bir parçasıdır. Test ise, son üründeki hataları tespit etmek için yürütülen işlemdir ve verification & validation sürecinin bir parçasıdır. Test konusuna temel giriş yaptığımız Yazılım Testine Giriş yazısında test ve temel kavramları inceleyebilirsiniz.
Doğrulama – Verification
Doğrulama çoğunlukla gereksinimler, tasarım, kod ve test planları gibi ara ürünlerin statik incelemesidir. Doğrulama, ürünün tüm işlevleri müşteriye sunacak şekilde tasarlandığından emin olur. Doğrulama aktivitesi geliştirme sürecinin başlangıcında yapılır. Bu süreç dâhilinde dokümanları, planları, kodu, gereksinimleri ve şartnameleri değerlendirmek için incelemeler, toplantılar, muayene gibi çalışmalar yapılır. Yetenek Olgunluk Modeli’ne (CMM) göre geçerlemeyi, belirli bir gelişim evresinin ürünlerinin o evrenin başlangıcında istenen koşulları yerine getirip getirmediğini belirlemek için yazılımın değerlendirilmesi süreci olarak da tanımlayabiliriz [IEEE-STD-610].
Örneğin bir masa oluşturduğunuzu varsayalım. Burada doğrulama, masanın tüm kısımlarını, mesela dört bacağın tümünün doğru boyutta olup olmadığını kontrol etmektir. Masanın bir bacağı doğru boyutta değilse, nihai ürünü dengesiz hale getirecektir. Benzer bir davranış, yazılım ürünü veya uygulaması durumunda da fark edilir. Yazılım ürününün veya uygulamanın herhangi bir özelliği uymuyorsa veya herhangi bir sorun tespit edilirse, bu son ürünün de sorunlu olmasına neden olacaktır. Dolayısıyla doğrulama çok önemlidir.
Doğrulama Sürecinde Kullanılan Teknikler
- İnceleme (Inspection)
- Daha Az Resmi İnceleme (Review)
- Yönetsel Gözden Geçirme (Management Review)
- Teknik Gözden Geçirme (Technical Review)
- Yakın Arkadaşla Gözden Geçirme (Buddy Review)
- Masada Gözden Geçirme (Desktop Review)
- Denetleme (Audit)
- Üzerinden geçme (Walkthrough) şeklindedir.
Doğrulama – Verification Sürecinin Özellikleri
»
“Ürünü doğru inşa ediyor muyum?” sorusuna yanıt arar.
»
Çalışan kod kontrol edilmez, statik inceleme yapılır.
»
Hatalar geliştirme sürecinin öncesinde tespit edilir.
»
Düşük seviye bir etkinliktir.
»
İncelenen yerler uygulama ve yazılım mimarisi, şartname veya spesifikasyonlar, üst düzey tasarım, alt düzey tasarım, veritabanı tasarımı vb. yerlerdir.
»
Kalite Güvence ekibi doğrulamayı yapar ve yazılımın yazılım gereksinimleri (SRS) belgesindeki gereksinimlere uygunluğunun incelemesi yapılır.
Geliştirme sırasında izleme çalışmaları; incelemeler, rehberlik geri bildirimi, eğitim, kontrol listeleri ve standartlar gibi temel çıktılar üzerinde gerçekleştirilir.
»
Geliştirme yaşam döngüsünün her aşamasında tutarlılık, eksiksizlik ve doğruluğunun gösterilmesini amaçlar.
»
Geçerleme – validation’dan önce gelir.
Yazılım Doğrulamanın Avantajları
»
Gelişimin başlangıç aşamasında ürünü doğrulamak ürünün daha iyi bir şekilde anlaşılmasına yardımcı olur.
»
Üründeki başarısızlık olasılığını azaltır.
»
Ürünü müşteri spesifikasyonları ve ihtiyaçlarına göre inşa etmeye yardımcı olur.
»
Doğrulama, gelişimin sonraki aşamalarında kusur sayısını azaltmada yardımcı olur.
Geçerleme – Validation
Sistemin gereksinimlere uyup uymadığını ve bunun için tasarlanmış işlevleri yerine getirip getirmediğini belirlemekte ve kurumun hedeflerini ve kullanıcı ihtiyaçlarını karşıladığını doğrulama için yapılmaktadır. Çoğunlukla nihai ürünün dinamik değerlendirmesidir. Yetenek Olgunluk Modeli’ne (CMM) göre geçerlemeyi, belirtilen gereksinimleri karşılayıp karşılamadığını belirlemek için geliştirme sürecinde veya sonunda yazılım değerlendirilmesi süreci olarak da tanımlayabiliriz. [IEEE-STD-610].
Yazılım Geçerlemenin Özellikleri
»
“Doğru ürünü mü inşa ediyorum?” sorusuna yanıt arar.
»
Geçerleme, geliştirme sürecinin sonunda yapılır ve geçerlemeler tamamlandıktan sonra gerçekleşir.
»
Doğru verilere (gereksinimi karşılamak için gereken veriler açısından) erişilebilirliğini kontrol eder.
»
Yüksek düzeyde bir etkinliktir.
»
Değerlendirilen yer ürünün kendisidir.
»
Yazılımın müşterinin gereksinimlerini ve beklentilerini karşılayıp karşılamadığını kontrol eder.
»
Bir çalışma ürününün, ürünün çevreye doğru şekilde entegre olmasını sağlayan belirlenmiş ölçütlere göre üretildiğinde gerçekleştirilir.
»
Kullanıcı ihtiyaç ve gereksinimlerine göre nihai yazılım ürününün doğruluğunun bir geliştirme projesi çerçevesinde yürütülür.
Bir ürün, kâğıda yapıldığı ve doğruluğunu kanıtlarken çalışabilir veya işlevsel bir uygulama gerekmediğinden geçebilir. Ancak, yazılı bir şekilde doğrulanan aynı noktalar geliştirildiğinde çalışan uygulama veya ürün doğrulama sırasında başarısız olabilir. Bunun nedeni, bir ürünün veya uygulamanın tanımlı spesifikasyona göre inşa edilmesine rağmen bu spesifikasyona uymadığı, dolayısıyla kullanıcı gereksinimlerini karşılamadığı ortaya çıkabilir.
Geçerlemenin Avantajları
»
Doğrulama sırasında bazı kusurlar kaçırılırsa, geçerleme işlemi sırasında bunlar kusur / defect olarak yakalanabilir.
»
Doğrulama sırasında bazı belirtimler yanlış anlaşılmışsa ve geliştirme buna göre yapılırsa geçerleme işlemi sırasında bu işlevselliği gerçekleştirirken gerçek sonuç ile beklenen sonuç arasındaki fark anlaşılabilir.
»
Geçerleme, özellik testi, entegrasyon testi, sistem testi, yük testi, uyumluluk testi, stres testi gibi test sırasında yapılır.
»
Doğru ürünün müşterinin ihtiyacına göre oluşturulmasına yardımcı olur ve ihtiyaçlarını karşılamada yardımcı olur.
Geçerleme, test sırasında test edenler tarafından yapılır. Beklenen sonuçtan bir sapma saptanırsa hata bildirilir ve incident (olay kaydı) olarak kaydedilir. Saptanan her durum bug değildir. Ancak tüm hatalar incident kapsamına girer.
Sonuç olarak geçerleme, özelliklerin tam işlevselliğinin ortaya çıkmasına yardımcı olur ve test yapanların ürünü daha iyi anlamalarını sağlar. Ürünün daha kullanıcı dostu olmasına yardımcı olur.
Hata (Defect) Engelleme Süreçleri
Yazılım Kalite Güvencesi olarak hata, kusur (defect) engelleme çalışmaları için yapılan belli başlı faaliyetler şu şekildedir:
- Değişiklik Kontrolü – Change Control
- Süreç ve Prosedürler – Prcoess And Procedures
- Standartlar ve Şablonlar – Standards And Templates
- Eğitim ve Egzersiz – Education And Training