Halstead complexity measures are software metrics introduced by Maurice Howard Halstead in 1977[1] as part of his treatise on establishing an empirical science of software development. Halstead made the observation that metrics of the software should reflect the implementation or expression of algorithms in different languages, but be independent of their execution on a specific platform. These metrics are therefore computed statically from the code.

Halstead's goal was to identify measurable properties of software, and the relations between them. This is similar to the identification of measurable properties of matter (like the volume, mass, and pressure of a gas) and the relationships between them (analogous to the gas equation). Thus his metrics are actually not just complexity metrics.

Calculation

edit

For a given problem, let:

  • = the number of distinct operators
  • = the number of distinct operands
  • = the total number of operators
  • = the total number of operands

From these numbers, several measures can be calculated:

  • Program vocabulary:
  • Program length:
  • Calculated estimated program length:
  • Volume:
  • Difficulty :
  • Effort:

The difficulty measure is related to the difficulty of the program to write or understand, e.g. when doing code review.

The effort measure translates into actual coding time using the following relation,

  • Time required to program: seconds

Halstead's delivered bugs (B) is an estimate for the number of errors in the implementation.

  • Number of delivered bugs : or, more recently, is accepted.[1]

Example

edit

Consider the following C program:

main()
{
  int a, b, c, avg;
  scanf("%d %d %d", &a, &b, &c);
  avg = (a+b+c)/3;
  printf("avg = %d", avg);
}

The distinct operators () are: main, (), {}, int, scanf, &, =, +, /, printf, ,, ;

The distinct operands () are: a, b, c, avg, "%d %d %d", 3, "avg = %d"

  • , ,
  • , ,
  • Calculated Estimated Program Length:
  • Volume:
  • Difficulty:
  • Effort:
  • Time required to program: seconds
  • Number of delivered bugs:

See also

edit

References

edit
  1. ^ a b Halstead, Maurice H. (1977). Elements of Software Science. Amsterdam: Elsevier North-Holland, Inc. ISBN 0-444-00205-7.
edit

📚 Artikel Terkait di Wikipedia

Complexity

computational complexity described above in that it is a measure of the design of the software. Halstead complexity measures, cyclomatic complexity, time complexity

Cyclomatic complexity

Decision-to-decision path Design predicates Essential complexity Halstead complexity measures Software engineering Software testing Static program analysis

ABC Software Metric

metric measures size, some believe that it measures complexity. The ability of the ABC metric to measure complexity depends on how complexity is defined

Halstead (disambiguation)

USS Halsted, sometimes spelled Halstead, the name of more than one United States Navy ship Halstead complexity measures, a software metric Halsted (disambiguation)

Software maintenance

calculated with certain formulae from lines-of-code measures, McCabe measures and Halstead complexity measures. The measurement and tracking of maintainability

Function point

intent is similar to that of the operator/operand-based Halstead complexity measures. Bang measure – Defines a function metric based on twelve primitive

Programming complexity

Some of the more commonly used metrics are McCabe's cyclomatic complexity metric Halstead's software science metrics Henry and Kafura introduced "Software

Weighted Micro Function Points

COCOMO, COSYSMO, maintainability index, cyclomatic complexity, function points, and Halstead complexity. It produces more accurate results than traditional