A major goal of software engineering research is to developtechniques, methods and tools that may improve software quality. Thisthesis contributes to that goal.
It is possible to assume two different views on quality as it relatesto software products. In the external view, quality is determinedbased on how well a product performs in practise, i.e.,maintainability and usability. In the internal view, quality isderived from attributes inherent in the software product, e.g.,structural properties such as coupling, cohesion and size.
Much research related to software quality models has focused onestablishing relationships between structural properties and externalquality attributes. The ultimate goal of this research is to developquality prediction models, which may aid in making informed decisionsconcerning, for example, refactoring or program design.
Regardless of the structural properties considered, most qualityprediction models have so far been based on static analysis of sourcecode or designs. Such models have proven to be fairly accurate onsome occasions. However, in the context of object-oriented systems,static coupling measures may not always be accurate, thus resulting inunreliable prediction models. Due to polymorphism and dynamic binding,static coupling measures do not always reflect the actual couplingtaking place between classes, as this can only be determined atrun-time. In addition, static measurements of coupling may beinaccurate when obtained from systems containing ``dead'' code.
In an attempt to overcome these problems, twelve dynamic couplingmeasures have been proposed. They differ from static coupling measuresin that they are based on analysis of the actual messages exchangedbetween objects at run-time. The twelve measures are thereforereferred to as ``dynamic coupling measures''. To collect the dynamiccoupling measures, a tool called Jdissect was developed. Jdissectcollects data from running Java programs to calculate dynamiccoupling.
There are three objectives for the investigation of the proposedcoupling measures. The measures need to be theoretically validated,that is, one needs to assess their theoretical properties and validityas coupling measures. Furthermore, it is important to determinewhether they provide data over and above what can be collected throughstatic measures such as size and static coupling. Finally, todemonstrate practical usefulness of the dynamic coupling measures,they must be evaluated as predictors of external quality. In the casestudy presented in this thesis, the external quality attributeconsidered for the evaluation is change proneness, which is anindirect measure of software maintainability.
The results indicate that some of the dynamic coupling measures arestrong indicators of change proneness and that they complementexisting static measures. The resulting prediction models may, forexample, be useful to focus restructuring efforts on those parts ofthe software that are predicted to be the most likely to undergofuture changes.