Software Measurement: A Necessary Scientific Basis



  • Briefly define the term measurement. Why is measurement theory an important part of software development and software testing?

Software measurement is a technique used to apply numbers or figures to software qualities in order to assess the software in a mathematical manner. It is important because it provides a basis with which to evaluate the techniques we practice in software development and testing. bps

Measurement is a process where numbers or symbols are assigned to attributes or certain properties of entities, such as an object or a software specification. Joe Zumpella

Measurement is a procedure that uses defined rules to assign symbols or numbers to a certain characteristic of a real world item. In regards to software testing, measurement is important because it provides a method through which one can determine the more prominent features of a software system, and thus highlights the areas must be tested the most thoroughly to ensure correctness.

Matt Rummel

  • Distinguish between direct measurement and indirect measurement.

Direct measurement involves assessing one attribute only, where indirect measurement assesses an attribute that is derived (in part) from other attribute. While we can measure some attributes directly, we can often garner more accurate or meaningful measurement from indirect measurements. bps

Direct measurement is measuring an attribute that does not depend on anything else. Indirect measurement is measuring an attribute that does depend on other attributes. We usually get more sophisticated measurements out of indirect measurements. Joe Zumpella

The direct measurement of an attribute is the evaluation of that attribute independent of any other measured characteristics. An indirect measurement is an evaluation that depends on one or more other aspects of the software.

Matt Rummel

  • What is an empirical relation system? How is this type of system useful during the testing and analysis of software systems?

For any attribute, an empirical relation system is a pairing of entities and empirical relations. An empirical relation system provides us with a method we can use to compare measurements. During testing and analysis, we can determine, empirically, whether changes in the software have improved the quality of the system or detracted from it. Using an empirical method is much easier to evaluate these sorts of changes: after defining the system, it tells us very clearly how the quality is evaluated. bps

An empirical relation system is a is a measurement that we can use to compare a set of entities along with a set of empirical relations to the particular attribute that is in question. It can help us determine whether the system has improved with new changes by comparing it to the old system. It basically can provide us with a way of justifying that the system did improve by giving us something to compare it to, instead of just inferring and hoping that it did improve. Joe Zumpella


An empirical relation system is one in which the direct measurement of a particular attribute is preceded by an intuitive understanding of the attribute. In other words, it is a relationship that can be clearly understood and verified by inspection. The usefulness of this type is system is due primarily to the fact that one can easily evaluate the changes made to the system against its original state or to another piece of software. The ease with which these easily decipherable comparisons can be made provides one with a basis upon which they can make decisions concerning improvements that must be made to that system or changes required in another piece of software to which the measured software is being compared.

Matt Rummel

  • Fenton asserts that "the definition of a numerical mapping does not in itself constitue measurement." Why is this the case?

The numerical mapping needs to be grounded in attributes that make sense. Fenton contends that we have yet to determine what attributes we can use to provide meaningful measurements. bps

Fenton says that every measure is a metric but every metric is not a measurement. This means that although we use a metric to measure, the metric might be faulty and not actually measure anything. These metrics must measure the correct attributes in the correct way.
Joe Zumpella

Just because one is using a defined numerical mapping does not ensure that that mappings accurately reflect any relevant information about the model. One must consider whether a metric is meaningful – its truth or falsity remains unchanged under any allowable trasformation of the involved metrics.
Matt Rummel


  • After reading this article, do you feel that it is feasible to construct a general complexity measure for software?

I don't think it is feasible. To measure software complexity, we need to focus on some attributes of software that have been traditionally linked with complexity: length of source code, comprehensibility of the source code, etc. Fenton points out that these attributes cannot be measured empirically, that is, they cannot be assessed in a way which can unambiguously determine software quality. As Fenton also observed, we still haven't defined sufficient axioms with which to determine attributes that allow us to construct a general complexity measure. bps

I do not think that it is feasible due to the complexity of actually measuring this complexity of software. We need to factor in each specific attribute that needs to be measured and how to actually measure it. Some of these attributes can not be measured empirically and others still are just too difficult to be measured.
Joe Zumpella


As Fenton mentions, a general complexity measure for software would provide a scientific basis that would go a long way towards advancing software engineering as a discipline. This is, however, a lofty goal that I do not believe will ever be realized. This is due primarily to the fact that software is an abstract entity where as metric measurements are used to relate physical properties. I don't believe it will ever be possible to effictively measure something abstract with systems designed for comparing physical relations. Additionally, consider the word "complexity" itself. This word is can be interpreted in many different ways. What makes one algorithm or data structure more complex than another is really nothing more than a matter of opinion.
Matt Rummel



Link to this Page