Halstead komplexitetsmått
Halstead komplexitetsmått är mjukvarumått som introducerades av Maurice Howard Halstead 1977 som en del av hans avhandling om att etablera en empirisk vetenskap om mjukvaruutveckling. Halstead gjorde observationen att mätvärden för programvaran bör återspegla implementeringen eller uttrycket av algoritmer på olika språk, men vara oberoende av deras exekvering på en specifik plattform. Dessa mätvärden beräknas därför statiskt från koden.
Halsteads mål var att identifiera mätbara egenskaper hos programvara och relationerna mellan dem. Detta liknar identifieringen av materiens mätbara egenskaper (som volymen, massan och trycket hos en gas) och relationerna mellan dem (analogt med gasekvationen ) . Således är hans mått faktiskt inte bara komplexitetsmått.
Beräkning
För ett givet problem, låt:
- = antalet distinkta operatorer
- = antalet distinkta operander
- = det totala antalet operatorer
- = det totala antalet operander
Från dessa siffror kan flera mått beräknas:
- Programordförråd:
- Programlängd:
- Beräknad uppskattad programlängd:
- Volym:
- Svårighetsgrad :
- Ansträngning:
Svårighetsmåttet är relaterat till programmets svårighet att skriva eller förstå, t.ex. när man gör kodgranskning .
Ansträngningsmåttet översätts till faktisk kodningstid med hjälp av följande relation,
- Tid som krävs för att programmera: sekunder
Halsteads levererade buggar (B) är en uppskattning av antalet fel i implementeringen.
- Antal levererade buggar: eller, på senare tid, accepteras [ citat behövs ] .
Exempel
Tänk på följande C- program:
a
main () { int a , b , c , avg ; scanf ( "%d %d %d" , &a , & b , & c ); medel = ( a + b + c ) / 3 ; printf ( "avg = %d" , avg ); }
De distinkta operatorerna ( ) är: main
, ()
, {}
, int
, scanf
, &
, =
, +
, /
, printf
, ,
, ;
De distinkta operanderna ( ) är: a
, b
, c
, avg
, "%d %d %d"
, 3
, "avg = %d"
- , ,
- , ,
- Beräknad uppskattad programlängd:
- Volym:
- Svårighetsgrad:
- Insats:
- Tid som krävs för att programmera: sekunder
- Antal levererade buggar:
Se även
externa länkar
- The Halstead Metrics - Omfattande diskussion om beräkning och användning av Halstead Metrics i en objektorienterad miljö (med specifik hänvisning till Java).
- Beräkning av Halstead-mått - Mätning av Halstead-mått.
- Förklaring med ett exempelprogram - Exempel (på sida 6 i PDF-filen)
- Skriptberäkning av Halstead Metrics och användning av dem för kommenterad koddetektering
- IBM
- Miniräknare för att beräkna Halstead-mått