Johannes Sametinger C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria
Object-oriented programming improves the reusability of software components. Extensive reuse of existing software enhances the importance of documentation. In order to increase the productivity in documenting and to make the structure of documentation better suitable for object-oriented software systems, we suggest to apply object-oriented technology to the documentation, too. This makes it possible to reuse documentation by extending and modifying it without making copies and without making any changes to the original documentation. Additionally, interests of various groups of readers (e.g., reusers, maintenance staff) can be taken into account, and easy access to relevant information can be given. In this paper we briefly describe a documentation scheme for object-oriented software systems. This scheme distinguishes among overview, external view and internal view of both static and dynamic aspects of software components. Then we apply inheritance by simply reusing and extending existing documentation where appropriate, and enforce information hiding by providing an access control mechanism. This improves the reusability and accessibility of documentation. Additionally, we present an exemplary tool and relate our experience with object-oriented documentation.
The object-oriented programming paradigm achieves a major improvement in the reusability of existing software components. However, increasing reuse intensifies the need for precise documentation to express the capabilities of reusable components and encourages the reuse of various components of existing documentation, too. Software documentation is usually divided into user documentation, system documentation and project documentation (see [ANS83, Pom86]). In this paper we concentrate on system documentation, which describes interfaces and implementation aspects to facilitate reuse and to enable maintenance. Documentation schemes for conventional software systems do not address the special needs of software reusers that arise with the widespread use of object-oriented programming. Reusing existing software will become a very important technique that will significantly
improve the productivity of programmers as well as the overall quality of software systems. To achieve this goal, we have to succeed in providing the right portion of information about which components come into question for reuse and how to reuse these components. For those readers unfamiliar with the object-oriented paradigm, we introduce the terms that are used throughout this paper in the next section. This section can be skipped by readers that are used to object-oriented terminology.
Object-Oriented Programming Terminology
Objects: A running object-oriented software system consists of objects. Each object has structure and behavior. For example, a rectangle object's structure might consist of an origin and an extent (called instance variables) and its behavior might include Draw and Rotate (called methods). Objects become active by executing one of their methods, in which they can change their state and send messages to other objects, which in turn invokes the execution of the corresponding methods of those objects. Classes, methods: The source code of an object-oriented software system consists of classes containing the variables (structure) and the methods (behavior). Objects with the same structure and behavior are described in one class. So far, from a documentor’s point of view, classes and methods seem to be equivalent to modules and procedures used in conventional programming. Inheritance: One of the main differences between modules and classes is the inheritance relationship between classes. A class may inherit the structure and behavior of...
Please join StudyMode to read the full document