Kod tabanlı bir metriği yazılım kusurlarıyla ilişkilendirme girişimlerini her duyduğumda, ilk düşündüğüm McCabe'nin siklomatik karmaşıklığı . Çeşitli çalışmalar, yüksek siklomatik karmaşıklık ile hata sayısı arasında bir korelasyon olduğunu bulmuştur. Bununla birlikte, benzer büyüklükteki modüllere (kod satırları açısından) bakan diğer çalışmalar, bir korelasyon olmayabilir.
Bana göre, bir modüldeki hem satır sayısı hem de siklomatik karmaşıklık olası hataların iyi bir göstergesi olabilir veya belki de bir modülde değişiklikler yapılırsa hataların enjekte edilmesi olasılığı daha yüksektir. Kodda çok sayıda bağımsız yol olduğu için yüksek siklomatik karmaşıklığa sahip bir modülün (özellikle sınıf veya yöntem düzeyinde) anlaşılması daha zordur. Çok sayıda çizgiye sahip bir modülü (yine, özellikle sınıf veya yöntem düzeyinde) anlamak da zordur, çünkü çizgilerin artması daha fazla şey olduğu anlamına gelir. Her iki kaynak kod satırını belirtilen kurallara ve siklomatik karmaşıklığa karşı hesaplamayı destekleyen birçok statik analiz aracı vardır, bunları yakalamak düşük asılı meyveyi yakalar gibi görünüyor.
Halstead karmaşıklık ölçütleri de ilginç olabilir. Ne yazık ki, geçerlilikleri biraz tartışılmış gibi görünüyor, bu yüzden onlara güvenmem gerekmiyordu. Halstead'in önlemlerinden biri, çaba veya hacime (toplam operatörler ve işlenenler açısından program uzunluğu ile farklı operatörler ve operatörler açısından program kelime dağarcığı arasındaki ilişki) dayalı bir tahminlerdir.
CK Metrikleri olarak bilinen bir grup metrik de vardır. Bu metrik paketinin ilk tanımı Chidamber ve Kemerer tarafından Nesneye Yönelik Tasarım İçin Bir Metrikler Paketi adlı bir makalede yer alıyor. Sınıf Başına Ağırlıklı Yöntemler, Kalıtım Derinliği, Çocuk Sayısı, Nesne Sınıfları Arasındaki Bağlanma, Bir Sınıf İçin Yanıt ve Yöntemlerde Uyum Eksikliğini tanımlar. Makaleleri, hesaplama yöntemlerinin yanı sıra her birinin nasıl analiz edileceğinin açıklamasını da sağlar.
Bu metrikleri analiz eden akademik literatür açısından, Nesne Odaklı Tasarım Karmaşıklığı için CK Metriklerinin Ampirik Analizi: Ramanath Subramanyam ve MS Krishna tarafından yazılan Yazılım Hataları için Çıkarımlar ilginizi çekebilir. Altı CK metriğinden üçünü analiz ettiler (sınıf başına ağırlıklı yöntemler, sınıflandırılan nesne arasındaki bağlantı ve kalıtım ağacının derinliği). Belgeye bakıldığında, bunların potansiyel olarak geçerli metrikler olduğunu gördükleri, ancak "iyileştirme" olarak daha fazla hata olasılığına yol açabilecek diğer değişikliklere yol açabileceği için dikkatle yorumlanması gerektiği anlaşılmaktadır.
Yuming Zhou ve Hareton Leung tarafından yazılan Yüksek ve Düşük Şiddetli Hataların Öngörülmesi için Nesneye Dayalı Tasarım Metriklerinin Ampirik Analizi de CK metriklerini inceler. Yaklaşımları, bu metriklere dayalı hataları tahmin edip edemeyeceklerini belirlemekti. Kalıtım ağacının derinliği ve çocuk sayısı hariç olmak üzere CK metriklerinin çoğunun, kusurların bulunabileceği alanların öngörülmesinde bir miktar istatistiksel anlamlılığa sahip olduğunu bulmuşlardır.
IEEE üyeliğiniz varsa, daha akademik yayınlar için IEEE Yazılım Mühendisliği İşlemlerini ve daha gerçek dünya ve uygulamalı raporlar için IEEE Yazılımını aramanızı tavsiye ederim . ACM'nin dijital kütüphanelerinde de ilgili yayınlar olabilir .