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
... d 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 Object-Oriented Documentation Johannes Sametinger -2 -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.