Appropriately preparing, designing and evaluating software designs is part of the software quality assurance process. Quality is about reliability, maintainability, reusability and other non-functional properties of the software. Early documentation of software promotes increased quality properties before coding the design.
Templates, techniques and tools applied in the documentation process are based on standards and de-facto standard approaches.
Documents
All phases and activities in the software development process are properly documented.
Some examples of documents are:
- Requirements Specification
- Architectural Design
- Detailed Design
- Unit Test Specification
- Integration Test Specification
- Verification and Validation Test Specification
The package of documentation is project dependent and it is suited according to requests and requirements.
Techniques and Tools
Some documentation techniques and tools are:
- View-based architectural design
- Complying with IEEE 1471-2000, the ANSI/IEEE recommended best practice for architectural description of software-intensive systems.
- UML
- Detailed design typically using the UML graphical modeling language visualizing, specifying, constructing and documenting the artifacts of a software system in a way that is intuitive and easy to understand.
- Doxygen
- Doxygen is a step towards closer integration between documentation and implementation if it is used appropriately.
Some structured approaches to software design and techniques are:
- Design Patterns
- Design by Contract
- Modeling in UML
References
Selected references for documentation of software engineering activities:
- Applied Software Project Management
Andrew Stellman, Jennifer Greene. O’Reilly, 2006. - Software Cost Estimation with COCOMO II
Barry W. Boehm et al. Prentice Hall PTR, 2000. - Software Requirements
Karl E. Wiegers. Microsoft Press, 2003. - Software Architecture in Practice
Len Bass, Paul Clements, Rick Kazman. Addison-Wesley, 2003. - Documenting Software Architectures
Paul Clements et al. Addison-Wesley, 2003. - The Unified Modeling Language User Guide
Grady Booch, James Rumbaugh, Ivar Jacobson. Addison-Wesley, 2005. - Real-Time Design Patterns
Bruce Powel Douglass. Addison-Wesley, 2003. - Doing Hard Time
Bruce Powel Douglass. Addison-Wesley, 1999. - Software Testing Fundamentals
Marnie L. Hutcheson. Wiley, 2003. - Critical Testing Processes
Rex Black. Addison-Wesley, 2004. - Interaction Design
Helen Sharp, Yvonne Rogers, Jenny Preece. Wiley, 2007.
Other references covering topics in software quality:
- Software Quality Assurance
Daniel Galin. Pearson Addison-Wesley, 2004. - Metrics and Models in Software Quality Engineering
Stephen H. Kan. Addison-Wesley, 2004. - Code Complete
Steve McConnell. Microsoft Press, 2004.