Much of the focus on developing software products draws attention to the tangible software artifacts that result. Most often, these products take the form of documents: commented source code listings, structured design diagrams, unit development folders, etc. These documents characterize what the developed system is suppose to do, how it does it, how it was developed, how it was put together and validated, and how to install, use, and maintain it. Thus a collection of software document records the passage of a developed software system through a set of life cycle stages.
It seems that there will be models of software development that focus attention to the systematic production, organization, and management of the software development documents. Further, as documents are tangible products, it is common practice when software systems are developed under contract to a private firm, that the delivery of these documents is a contractual stipulation, as well as the basis for receiving payment for development work already performed. Thus, the need to support and validate conformance of these documents to software development and quality assurance standard emerges. However, software development documents are often a primary medium for communication between developers, users, and maintainers that spans organizational space and time. Thus, each of these groups can benefit from automated mechanism that allow them to browse, query, and selectively print documents /Garg, 1989/, /Garg, 1990/. As such, we should not be surprised to see construction and deployment of software environments that provide ever increasing automated support for engineering the software documentation life cycle (e.g. /Penedo, 1985/, /Horowitz, 1985/, /Garg, 1989/, /Garg, 1990/, or how these capabilities have since become part of the commonly available computer-aided engineering (CASE) tool suites like Rational Rose, and others based on the Unified Modelling Language (UML).