1977'de Maurice Howard Halstead , program kelimeleri, program uzunluğu, hacim, zorluk, çaba ve bir modüldeki tahmini hata sayısını içeren yazılım sistemleri için karmaşıklık önlemlerini tanıttı . Wikipedia'ya göre zorluk, programı okurken veya yazarken anlamanın zorluğu ile ilgilidir ve çaba, zaman = (Çaba / 18) saniye olan bir uygulamayı kodlamak için gereken süreye çevrilebilir.
Veri ve hesaplamalar yazılım geliştirmenin bazı yönleriyle ilgili olmadığı sürece bir ölçüm işe yaramaz. Bununla birlikte, belirli bir değer veya daha yüksek bir zorluğun, hatalarda istatistiksel olarak anlamlı bir artışa veya kod okuma zorluğu ile zaman arasındaki ilişkiye meyilli olduğunu belirten herhangi bir iş bulamadım (N'nin zorluğu, ortalama M saat harcanır kod tabanını anlamak) veya kaliteyi belirlemede faydalı olmanın ardından (özellikle yazma zamanının zaten bir ölçüm olarak kaydedilmiş olması gerekir) hesaplanabilmesi için yapılan herhangi bir analiz. Özellikle Halstead'in hata tahminiyle ilgileniyorum (Wikipedia'da belirtilmeyen) - bir uygulamadaki hataların sayısı Hacim / 3000 veya Çaba ^ (2/3) / 3000 ile tahmin edilebilir.
İki şey arıyorum:
- Yazılım kalitesini değerlendirmek için gerçek bir uygulamada Halstead'in yazılım karmaşıklığı önlemlerini kullanan var mı? Öyleyse, bunları nasıl uyguladınız ve yararlı, geçerli ve / veya güvenilir bir ölçüm olduğu ortaya çıktı mı?
- Yazılım kalitesine uygulandığında Halstead karmaşıklık önlemlerinin geçerliliğini (veya geçersizliğini) tartışan anketler, analizler veya vaka çalışmaları şeklinde herhangi bir akademik araştırma var mı?
- Hacim, Zorluk, Çaba, Zaman ve Hataların Halstead metriklerine benzer bir şeyi hesaplamak için Kaynak Kod Satırlarının (SLOC) kullanımını gösteren anketler, analizler veya vaka çalışmaları şeklinde herhangi bir akademik araştırma var mı? Hacmin sadece bir SLOC sayısına karşılık gelebileceğinden ve Zorluğun siklomatik karmaşıklığa (ve muhtemelen diğer önlemlere) karşılık gelebileceğinden şüphelenirim. SLOC'daki çaba, üretkenlik veya zamanın ölçülmesinin potansiyel olarak yanıltıcı olabileceğinin de farkındayım.