Yazılım Kalitesi ve
Kalite Özellikleri
Yazılım Kalitesi• “Ability to satisfy requirements” Deming, 1968• “Conformance to user requirements” Crosby, 1979• “Doing right it the first time” Price, 1985 • “Fitness for intended use” Juran, 1988
Yazılım Kalitesi• Hepimizin belli süreçlerde hissettiği ama tanımlayamadğı bir kavram.
• Soyut ve yoruma açık.• Gereksinimlerin karşılanma başarısı.
Yazılım kalitesi, yazılımın çözmeye çalıştığı problemlerin başarı derecesidir.
Kalite Gereksinimleri• Fonksiyonel gereksinimler
• Yazılımın yapabildiği ya da yapabileceği belirli aksiyonlar.
• İslevsellik(Functionality)• Fonksiyonel olmayan gereksinimler
• Güvenilirlik(Reliability)• Kullanılabilirlik(Usability)• Verimlilik(Efficiency)• Bakılabilirlik(Maintainability) • Taşınabilirlik(Portability)• ......
• Bu gereksinimlerin sorunsuz olarak karşılanması «kaliteli» anlamına gelir mi?
Kalite Özellikleri• Kalite Faktörleri(Sınıfları)...[klişe]
Nasıl Tanımlarız?• «You can’t manage what you can’t measure» Tom DeMarco
• Ölçebilmeliyiz...• Modeller
• Yol haritası• Kalite süreçlerinin karakteri
• Standartlar• SPICE
• İyileşme,iyileştirme
• Capability Maturity Model [CMM(I)]• Sertifikasyon ve yetenek belirleme
• ISO• Sertifikasyon
Nasıl Tanımlarız?• Yazılımın yaşam döngüsünde bulunan her «entity» için farklı şekilde tanımlıdır.
Müşteri
Son kullanıcılar
Geliştiriciler (:
EntegreSistemler
Bakım ve destekelemanları
Kalite Nasıl Sağlanır?• Hata Ayıklama (Geleneksel)
• Verification and Validation(Doğrulama)
• Hata Önleme• Software Quality Assurance(Kalite Güvence)
• Test-Driven Development(TDD)• Kalitenin sağlanması bir süreç dahilinde sürekli kontrol edilmelidir.
Hata Önleme > Hata Ayıklama
Kalite Nasıl Sağlanır?• Süreç içerisinde sürekli kontrol edilmelidir.
• Süreç de sorgulanabilmeli
Kalite Nasıl Ölçülür?• Feedback(Geri bildirim) en basit ölçme yöntemi ve aracı.• Müşteri,geliştirici,bakım,destek....
• Kod Kalitesi• Kod metrikleri• Kod review• Unit Test
Kod metrikleri• Sınıfın Ağırlıklı Metot Sayısı - Weighted Methods per Class (WMC)
• Kalıtım Ağacının Derinliği - Depth of Inheritance Tree (DIT)
• Alt Sınıf Sayısı - Number of Children (NOC)• Nesne Sınıfları Arasındaki Bağımlılık - Coupling Between Object Classes (CBO)
• Sınıfın Tetiklediği Metot Sayısı - Response For a Class (RFC)
• Metotların Uyumluğu - Lack of Cohesion in Methods (LCOM)
• ....• ..• .
Code SmellKötü Kod Kalitesi• Uzun method içerikleri• Uzun parametre listeleri• Tekrar eden kod• Büyük sınıf• Ölü kod• Veri objesi• Küçük sınıf• ..• .
Kaliteli Yazılım• Uzun yaşar• Genişletilebilir• Sorun yaratmaz• Maliyetlidir
• Maddi• Manevi
Haydi sor sor...
?
Teşekkürler (: