OO Design Patterns, Design Structure, and Program Changes: An Industrial Case Study

Author(s): James M. Bieman, Dolly Jain, Helen J. Yang
Venue: unkown
Date: unknown

Type of Experiement: Case Study


Number of Projects: 1
Number of Versions: 39
Language: C++
Size of Projects: medium (32,000 LOC, 227 classes)
Metrics: number of attributes, number of methods, # of methods overriden, depth of inheritance, number of child classes,
Independent Variables: class size, inheritance usage
Dependent Variables: number of changes performed
Pattern Identification: Manual
Design Patterns Analyzed: Singleton, Factory Method, Proxy, Iterator

Threats to validity
Construct Validity: difficulty of changes,
Content Validity: metrics for design quality and changes
Internal: pattern identification
External: one system studied, undocumented patterns

This study aims to discover if the architectural context in which classes are used affects how often they are changed or how easy they are to modify. Source code from a medium sized industrial system is studied. It has gone through 39 versions since its first stable release, and was revised with design patterns in mind. Before evaluation researchers gathered statistics such as: number of attributes and methods, inheritance depth, number of changes for each class. They also used manual evaluation to discover patterns in the source code. This paper states 3 main hypotheses: larger classes are more likely to change, pattern classes are less likely to change, and classes inherited most often are less likely to change during the 39 versions.

The first hypotheses is supported by the results. Classes with more methods have over gone more changes, and the amount of changes correlates about linearly with number of operations. Also analysis of the change statistics showed that classes that implement design patterns are more prone to changes than other classes. Thus, the second hypotheses is rejected. Finally analysis also showed that classes with the most descendants change just as much as other classes.

I take the results from this study, related directly to patterns, skeptically since variety of patterns that appeared in the software was small, and they didn't have enough instances to be significant statistical indicators.