Technical Design Document Outline

Be sure to include all sections. Many sections may be short, but all should appear.

Remember to write in third person and with full sentences.

Chapter

Description

Preface

  • Describe expected reader
    Version History (empty at this point perhaps)

Overview

  • Give a brief written technical overview of what will be built. If you were describing the project to a newly hired programmer, what would you say to introduce the project to that person?
  • Include a context diagram (box and lines) just to illustrate the different modules you plan to code and how they relate to the entire system. This may be copied from the system spec if there were no changes.
  • If software that exists will be modified, describe the existing software briefly here.
  • List the user stories you plan to include in the first release

Architecture

  • The architecture can be the same as for the system requirements spec, or you can add some more detail. 

Key Design Decisions

  • Describe some design choices you made and mention the paths you rejected and why. 
  • List outstanding issues here

Software Development tools

  • List the languages and design tools you plan to use to create and test the project.

Module Listing

  • List all the modules and their purpose.
  • Indicate whether the module is going to be coded at all in the first release.
  • Be sure it is clearly states which operating system is being used for each module (or the system as a whole) and which language (or tool) is being used.
  • Include this section even if there is only one module. 

Interfaces

  • List all interfaces between modules or to outside systems. Briefly explain their purpose.
  • Indicate whether an interface is going to be coded at all in the first release.

User Interfaces

  • Include screen or website layouts for any screens or websites included in the first release.

Naming Conventions

  • List naming conventions such as class naming, variable naming, and file naming.

The following should be repeated for each module in your system that is being included in the first release

Class Diagram

  • One diagram of all the classes or programs planned. You can represent a program as a class with no instance variables.

Class or Program Description

  • Purpose of class (and this should be at least 3 sentences - make it robust)
  • Roles it will play and when it will be alive in those roles
  • Instance and class variables
  • Static and non-static methods, with their purpose, parameters and return value, pre-conditions and post-conditions
  • Constructor definitions

The following should be repeated for each interface in your system that is being touched by the first release

Interface and Files and Table details

  • Interfaces need special consideration because they are the end points in your system, so provide everything a programmer needs to know to code the interface without looking at another spec, or mention that specification here. Include File or Table or Structure layout.
  • Give short file / table samples with data inside the document for all tables and files the system will use (even if it is not an interface)

The following sections are not repeated:

Glossary

  • Define any terms a programmer may need to know to read this.  

Annotated Bibliography

  • Include at least one credible source that is also cited somewhere inside your document with in-line citations.
  • The annotation should include a short summary, an evaluation of the credibility of the source, and an indication of how the source supports your document.