Developing Optimal Object-Oriented Design and Programming Techniques

Principal Investigator: H. E. Dunsmore

In this project we are continuing our development of practical guidelines for object-oriented design and programming. We are also beginning to determine empirically the benefits in terms of better process and product for object-oriented design and programming.

There are four tasks that comprise this research:
1. Continue the development of guidelines for object-oriented design. The plan is to work on better guidelines for analyzing a problem, breaking it into classes, determining the operations (methods) for each class, and determining the best class/subclass/superclass relationships.
2. Empirically determine the benefits of object-oriented design as compared to traditional design activities. A series of experiments will be run in which subjects are randomly assigned to either the treatment group (in which they learn object-oriented design guidelines) or the control group (in which they learn non-object-oriented design techniques). Subjects in each group will then develop software designs for the same assigned problems. Their software design process and product will be measured throughout in terms of time and errors.
3. Continue the development of techniques to facilitate object-oriented programming. The plan is to work on better guidelines concerning the reuse of existing classes, subclassing to create a new class from an existing one, implementing multiple inheritance, implementing polymorphism, and debugging object-oriented software.
4. Empirically determine the benefits of object-oriented programming as compared to traditional non-object-oriented programming techniques. Subjects in each group will develop software (most likely from the designs they developed in 2 above) for the same assigned problems. Their programming process and product will be measured throughout in terms of time, errors, ease of modifications, and amount of reusability.

If successful, this research will be significant in advancing knowledge about how best to do object-oriented design and programming. It will also provide information for those attempting to perform a cost-benefit analysis of what these new techniques really have to offer in practical terms.