Wednesday, January 27, 2016

Basic Software Design Report

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:
  • 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