W 1977 roku Maurice Howard Halstead wprowadził miary złożoności systemów oprogramowania , które obejmowały pomiary słownictwa programu, długości programu, objętości, trudności, wysiłku oraz szacunkową liczbę błędów w module. Według Wikipedii trudność dotyczy trudności ze zrozumieniem programu podczas czytania lub pisania, a wysiłek można przełożyć na czas potrzebny do napisania aplikacji, w której czas = (wysiłek / 18) sekund.
Pomiar jest bezużyteczny, chyba że dane i obliczenia dotyczą pewnego aspektu tworzenia oprogramowania. Nie znalazłem jednak żadnej pracy, która stanowiłaby, że trudność o określonej wartości lub wyższa prowadzi do statystycznie znaczącego wzrostu defektów lub związku między trudnością a czasem czytania kodu (trudność N daje średnio M spędzonych godzin rozumienie podstawy kodu) lub jakakolwiek analiza możliwości obliczenia Czasu po fakcie, która jest przydatna w określaniu jakości (zwłaszcza, że czas na napisanie powinien już zostać zapisany jako pomiar). Szczególnie interesuje mnie ocena błędów Halsteada (o której nie wspomniano w Wikipedii) - liczbę błędów w aplikacji można oszacować na podstawie objętości / 3000 lub nakładu pracy ^ (2/3) / 3000.
Szukam dwóch rzeczy:
- Czy ktoś używał miar złożoności oprogramowania Halstead w rzeczywistej aplikacji do oceny jakości oprogramowania? Jeśli tak, to w jaki sposób je zastosowałeś i czy okazały się one użytecznym, ważnym i / lub wiarygodnym pomiarem?
- Czy są jakieś badania akademickie w formie ankiet, analiz lub studiów przypadków, które omawiają ważność (lub nieważność) miar złożoności Halsteada, gdy stosuje się je do jakości oprogramowania?
- Czy są jakieś badania akademickie w postaci ankiet, analiz lub studiów przypadków, które pokazują wykorzystanie Linii kodu źródłowego (SLOC) do obliczenia czegoś podobnego do wskaźników Halsteada dotyczących objętości, trudności, wysiłku, czasu i błędów? Podejrzewam, że Tom może po prostu odpowiadać liczbie SLOC, a trudność może odpowiadać złożoności cyklicznej (i ewentualnie innym miernikom). Wiem również, że mierzenie wysiłku, wydajności lub czasu w SLOC może wprowadzać w błąd.