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