The task-dependent nature of the maintenance of object-oriented programs
In this paper we present the results of three experiments we have conducted to test the maintainability of object-oriented software products. Previous research in the field has yielded contradictory results as to whether or not object orientation promotes maintainability. Our experiments were conducted to test our hypothesis that the type of maintenance task influences whether or not the presence of an inheritance hierarchy aids maintainability. We constructed two equivalent C++ programs. One version incorporated an inheritance hierarchy; the other was flat. We used a between-subjects design in each experiment. In each experiment, the maintenance task was the same for all the subjects. Essentially the same two versions of the program were used in all three experiments but with different subjects and a different maintenance task. The results of the first experiment support the hypothesis that at least one type of maintenance task exists where an inheritance-based implementation is more maintainable than a flat version, and conversely for the second experiment. The results of the third experiment support the hypothesis that at least one type of maintenance task exists where there is no significant difference between an inheritance-based implementation and a flat version. We conclude that, when maintaining object-oriented software products, the nature of the maintenance task itself determines whether or not the presence of an inheritance hierarchy promotes maintainability.
maintenance productivity inheritance controlled experiment object-orientation