Describing Object Oriented Software: What Maintainers Need to Know

While object-oriented programming may lead to cleaner modularity and easier component reuse, it may also provide new challenges to software maintainers. A maintainer needs to understand a program before it can be changed safely; inheritance, large class libraries and dispersal of functionality in code written in object-oriented languages may complicate understanding. This paper presents early results of research on how object-oriented software may be described to maintainers to allow them to understand it more easily. A Dependency Analysis paradigm is used to describe the software in terms of structures and the dependencies between them. The structures include both design-level abstractions such as code subsystems, interaction constraints, and clusters of cooperating object classes, as well as code-level entities such as classes, methods, and variables. Two Bellcore object-oriented systems were reviewed to identify those aspects of their design that could be represented using Dependency Analysis as well as those that did not fit the paradigm so cleanly. The conclusions will be used in developing a software toolset that should be useful in maintaining systems that contain major object-oriented components.

[1]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[2]  Elliot Soloway,et al.  Designing documentation to compensate for delocalized plans , 1988, CACM.

[3]  Elliot Soloway,et al.  Delocalized Plans and Program Comprehension , 1986, IEEE Software.

[4]  Norman Wilde,et al.  A reusable toolset for software dependency analysis , 1991, J. Syst. Softw..

[5]  N. Wilde,et al.  Identifying objects in a conventional procedural language: an example of data design recovery , 1990, Proceedings. Conference on Software Maintenance 1990.

[6]  Norman Wilde,et al.  Maintenance support for object oriented programs , 1991, Proceedings. Conference on Software Maintenance 1991.

[7]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[8]  Harold Ossher A Case Study in Structure Specification: A Grid Description of Scribe , 1989, IEEE Trans. Software Eng..

[9]  Panagiotis K. Linos,et al.  Visual support for programming-in-the-large , 1988, Proceedings. Conference on Software Maintenance, 1988..

[10]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[11]  S D Fay,et al.  Help] I have to update an undocumented program , 1986 .