Check out the new USENIX Web site.



next up previous
Next: Axiomatic Properties Up: Theoretical Validation Previous: Theoretical Validation

Object-Oriented Features

Object-oriented designs have certain features that have been found to reduce the complexity of the software. Below we present these features and explain the response of the measure in those situations.

  1. Inheritance: Whenever a class has to be developed we may have a choice of inheriting from an existing class or creating one from scratch. The measure increase the complexity of the class indicating that testing is always involved proposition when there is a lot of reuse.

  2. Information hiding: By encapsulating its attributes or properties, a class restricts access to its information. This is often leads to loss of information which results in a greater complexity measure for the class. As the measure is inversly proportional to the loss component, it is very sensitive to feature of object-orientation. It is also necessary to note that the measure of the metric is dependent on the design of the class. If the methods in the class have a high visibility component then the measure decreases.

  3. Weak Coupling: Classes should be as independent of each other as the domain they represent permits. Unnecessary interaction with other classes is considered bad design. Coupling is indicated by objects used as attributes within a class and as parameters to methods. The metric rewards weak coupling since it produces a lower value for classes that have fewer input and output parameters.

  4. Composition: When the internal mechanism of a class uses the services of an already existing class through instantiation, the complexity of the containing class is reduced. This is the second form of reuse typical in object-oriented programs (the first being reuse through inheritance.) Composition is an example of coupling which has already been addressed above.


John McGregor
Sun May 5 14:43:24 EDT 1996