2. 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
3. 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.
4. 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?
6. 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
7. 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 Entegre
Sistemler
Bakım ve destek
Son kullanıcılar elemanları
Geliştiriciler (:
8. 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
9. Kalite Nasıl Sağlanır?
• Süreç içerisinde sürekli kontrol
edilmelidir.
• Süreç de sorgulanabilmeli
10. 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
11. 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)
• ....
• ..
• .
12. Kötü Kod Kalitesi Code Smell
• 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
• ..
• .
13. Kaliteli Yazılım
• Uzun yaşar
• Genişletilebilir
• Sorun yaratmaz
• Maliyetlidir
• Maddi
• Manevi