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.
źródło
Odpowiedzi:
Microsoft Research wykonał pewne prace w tym obszarze. Sprawdź tę stronę: http://research.microsoft.com/en-us/people/nachin/ . Chociaż nie w oparciu o Halsteada, Nachi i jego zespół przeprowadzili pewne dochodzenie przy użyciu Halsteada, cykliczności złożoności, rezygnacji z kodu i innych środków w celu oceny względnego ryzyka i niestabilności przy wprowadzaniu zmian w obszarach kodu. Jest też ciekawy artykuł na temat tego, jak efektywność organizacyjna również odgrywa dużą rolę, ale to nie jest temat. :)
źródło
Istnieje wiele takich badań. Google to twój przyjaciel.
Wskaźniki Halsteada wypadły z łask, gdy wykazano, że wszystkie były silnie skorelowane z surowym SLOC (liniami kodu źródłowego). W tym momencie łatwiej jest zmierzyć SLOC i zrobić to z nim.
Oto wynik z Google Books .
źródło
To, że Halstead Volume jest skorelowane z SLOC, jest interesujące, ale ograniczone. Podstawowe statystyki: korelacja liniowa nie jest przechodnia. X skorelowany z Y, Y skorelowany z Z NIE OZNACZA, że X jest skorelowany z Z.
źródło