Web application development Documentation
Most of us know that documentation is a fundamental part of any software project, but we’ve also learned through experience that producing too much documentation of the wrong kind can be a waste of time. The aim of rapid development is to minimize waste and achieve lean, elegant processes as well as software. The key to effective documentation is knowing how to record organisational memory without limiting the creative process during development or imposing excessive cost on the organisation.
This blog post will explore several types of documentation and their relative effectiveness for application development throughout the project life cycle: pre-development, during development, and post-development.
“The key to effective documentation is knowing how to record organizational memory without limiting the creative process.”
Pre-development documentation primarily identifies requirements and defines high-level software architecture, and may include functional specifications, user stories, or entity relationship diagrams.
Functional specifications are presented as a text-only list of requirements of the software and clients usually incorporate that list into a Request for Quotation. Often the specification include both the functional requirements and the technical ones, which can potentially limit the effectiveness of the developers, as they are better at determining the best technical solutions for clients’ needs.
User stories are an effective tool to identify and describe the functionality needed from the user’s perspective, and can be used as acceptance criteria. Developers can also use the same domain language as in user stories to develop nomenclature in the software, so taking care to name objects clearly and logically helps ensure that the code correlates with the requirements.
Entity relationship diagrams present users and objects (entities), relationships, and attributes in graphical format. They can be particularly useful for complex projects with large development teams, and help ensure that everyone understands the relationships between the different objects before development begins.