- Definition of problem
- Why are you tackling this problem, where will the design be used?
- Where will the resulting software be integrated to?
- Constraints (time, memory, programming language due to platform to be integrated to etc.)
- Detailed description of inputs from outside and outputs to outside (definition, data type), i.e. API
- Explanation of non-trivial algorithms, selection reason of particular data structures, complexity analysis.
- Design principles:
- Error handling and logging
- Sequence diagram of main flow
- Class diagram showing most important classes
Wednesday, January 27, 2016
A software design report should mainly answer "why" more than "how", because you might learn the "how" by looking at the code but not the "why". It should contain as a minimum the following:
Labels: software development