Almost every form of enterprise produces some form of work output that is usually document-based. This is especially true in the heavier forms of engineering such as aerospace, military, or medical in which the auditing and accounting requirements are high. No one wants to confront an ISO or federal audit and not be able to point to business procedures and work products that have been tested against a replicable quality process. In most commercial branches of software, especially web-enterprise and IT, documentation often takes the form of wikis or informal design files that are scattered around some agreed upon repository. Often if such documents exist they may even be stored in the code repository itself. In fact, in methodologies such as Agile or Extreme Programming there is sometimes the ethic that “the code is the documentation.” However, neither methodology formally shuns maintaining documentation but rather recommends keeping it spare. From these observations we can then ask what the proper balance a software firm should strike between heavy document management and none whatsoever. Documentation, especially when rapid development is employed, is especially susceptible to skew with the code and can become outdated quickly. Therefore it takes a well-designed document management system to maintain productivity. An effective way to manage modern software documentation is to break it down as follows: Pre-Development Documentation This phase is devoted to functional specifications, user stories, and relationship diagrams. The emphasis is on the high levels of what needs to be completed without locking in implementation details or sacrificing any of the flexibility needed to handle sudden requirements changes.
Documentation During Development Much of the documentation during the development phase can actually be generated by the framework or runtime with which the project is implemented. However, the products created in this phase still need storage and ease of access. Post-Development Documentation Much of this documentation will be of the customer-facing variety: end-user documentation such as user interface manuals. This documentation should be easily accessed by management and non-technical teams.When the documentation is broken down in such a manner, it becomes spare, easy to sift through, and readily suited for any number of enterprise document management systems.