Yazılım kalitesini belirlemek için Halstead karmaşıklık önlemlerinin uygulanması konusunda herhangi bir çalışma var mı?


14

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.

Halstead'in metrik çalışması daha 30-40 yıl önce yapıldığı ve SLOC ile güçlü korelasyonun hemen keşfedildiği için son 15 yılda sonuç bulmakta sorun yaşayacaksınız. (Bu hafızadan, UT Austin yaklaşık 1977'de yeni bir doktora fakültesi adayı tarafından yapılan konuşmadan alınmıştır.)
John R. Strohm

Bunun için teşekkürler. Soruyu güncelleyeceğim ve eski gazetelerdeki arama çabamı yeniden odaklayacağım.
Thomas Owens

Yanıtlar:


5

Microsoft Research bu alanda bazı çalışmalar yaptı. Bu sayfaya göz atın: http://research.microsoft.com/en-us/people/nachin/ . Özellikle Halstead'e dayanmasa da, Nachi ve ekibi, Halstead, siklomatik karmaşıklık, kod karmaşası ve kod alanlarında değişiklik yapmak için göreceli risk ve kırılganlığı değerlendirmek için bazı önlemler kullanarak bazı araştırmalar yaptılar. Organizasyonel etkinliğin de nasıl büyük bir rol oynadığına dair ilginç bir makale var, ancak bu konu dışı. :)


Bunlardan bazılarını okumak zorundayım. Kesinlikle ilgilendiğim bir şey, ama ben (en azından şu an), özellikle Halstead ile ilgileniyorum, bu yüzden oraya odaklanacağım. Siteye yer işareti koydum, böylece biraz daha zaman aldığımda okuyabilirim, ancak şu an için +1.
Thomas Owens

McCabe'nin siklomatik karmaşıklığının, gerçek kodda, hesaplanırken hiçbir artım değerinin olmadığı noktaya kadar ham SLOC ile çok güçlü bir şekilde ilişkili olduğu gösterilmiştir.
John R. Strohm

0

Bu tür birkaç çalışma var. Google Senin Arkadaşın.

Halstead'in metrikleri, hepsinin ham SLOC (kaynak kod satırları) ile güçlü bir şekilde korele olduğu gösterildiğinde gözden düştü. Bu noktada, SLOC'u ölçmek ve onunla yapılması daha kolay hale gelir.

İşte Google Kitaplar'dan bir sonuç .


1
Bu soruyu sormadan önce Google'da çalışıyorum ve henüz yayınlanan makaleler veya diğer saygın kaynaklar bulamadım. Ayrıca, SLOC ile ilgili bir metriğin nasıl zayıf olabileceğini göremiyorum. SLOC / zaman zayıf bir üretkenlik ölçüsüdür, ancak diğer SLOC tabanlı metrikler genellikle geçerli kabul edilir, bunun bir örneği kusurlar / SLOC'dir.
Thomas Owens

1
@Thomas: Halstead'in metrikleri SLOC ile "ilgili" değil, güçlü bir şekilde ilişkili oldukları. İstatistikler 102. Y ve X'in güçlü bir şekilde ilişkili olduğunu söylemek Y / X oranının tüm veri kümeleri için temelde sabit olduğu anlamına gelir. Bu durumda, X'i ölçmenin daha kolay olması durumunda Y'yi ölçmenin bir anlamı yoktur, çünkü Y size X'ten henüz bilmediğiniz hiçbir şeyi
söylemez

Mantıklı. Halstead'in metrikleri, farklı ve toplam operatörlerin ve işlenenlerin sayısına dayanmaktadır. Daha uzun bir programın daha fazla toplam işleç / işlenen olması ve daha farklı işleç / işlenen olması daha yaygındır. Hacim ve Zorluk metrikleri, operatörler / işlenenler yerine SLOC kullanılarak elde edilebilir. Ancak bu, Çaba, Zaman ve Hata metriklerinin geçerliliğini, uygulamalarını ve anlamını (veya anlam eksikliğini) ele almaz. Operatörler / işlenenler yerine SLOC ile hesaplandığında bile, bu metrikler sistem hakkında anlamlı bir şey söylüyor mu?
Thomas Owens

SLOC'un sayımı daha kolaydır ve muhtemelen daha kullanışlıdır. SLOC tahminleri, PSP ve TSP'de izlenen çeşitli maliyet tahmin teknikleri tarafından kullanılır ve kusur yoğunluğu gibi diğer metriklerde kullanılabilir. Bana göre, SLOC saymanın operatörleri / işlenenleri saymaktan daha iyi olabileceğini söylüyor. İkincisi ve şu ana kadar cevaplanmamış olan, bunları hesaplamak için hangi ölçümlerin kullanıldığına bakılmaksızın Çaba, Zaman ve Hata metriklerinin geçerliliğidir. Onları SLOC ile hesaplamanın daha iyi olabileceğini kabul ediyorum, ama yapsam bile, bir şey ifade eder mi?
Thomas Owens

@ThomasOwens: Muhtemelen hayır. Çaba, Zaman ve Hataların hepsi SLOC ile güçlü bir şekilde ilişkiliyse, belirli bir boyuttaki tüm programların yaklaşık aynı zaman ve çaba aldığını ve aynı sayıda hataya sahip olduğunu söyler. Bunlardan ilk ikisi SLOC tabanlı tahminin (örneğin COCOMO) temel aldığı ve suyun ıslak olduğunu söylemek gibidir. Üçüncüsü sana gerçekten yardım etmiyor.
John R. Strohm

0

Halstead Volume'un SLOC ile ilişkili olması ilginç ancak sınırlıdır. Temel istatistikler: doğrusal korelasyon geçişli değildir. X, Y ile ilişkilidir, Y, Z ile ilişkilidir, X, Z ile ilişkilidir.


X ve Y sadece korelasyonlu olduğunda ve Y ve Z sadece korelasyonlu olduğunda, ilk iki korelasyondaki nispeten yüksek gürültü seviyeleri nedeniyle evet ve X ve Z mutlaka korelasyonlu değildir. X ve Y güçlü bir şekilde korelasyona girdiğinde ve Y ve Z güçlü bir şekilde korelasyona girdiğinde, çok, çok az gürültü söz konusudur ve herhangi bir durumda X ve Z'nin ilişkili olduğu yüksek olasılıkla olur.
John R. Strohm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.