USC CSD Home
 

Design Document Template - CSCI 102L, Spring 2011, Section 30349R

 

Purpose/Overview

Give a brief, high-level description of what this piece of software will do. This is pretty much you restating the problem as you understand it.

Requirements

What are the functions that this software is supposed to perform?

Try to phrase them in a clear and concise manner.

Classes

What classes do you need to create?
  • Describe the purpose of each class.
  • What member data will they have? Why?
  • What methods will they have? Why?
Make sure you describe each member variable and member function.

Global Data/Functions

What global data & functions do you have? Describe any pieces of your program that are not within a class. You don't need to describe every single variable you use, but are there any global variables or functions that are integral to how your program works?

High-level Architecture

What is the high level flow of data through your program? How will all of your objects interact? What are the algorithms that your code will use?

You will spend a lot of time describing in detail all the objects and functions that you'll use, but you need to talk a bit about how they all fit together.

User Interface

Describe how the user will interact with your software.

If you have a GUI, how will it be laid out (provide a sketch if possible)?

  • Where will buttons and other controls be located?
  • Describe how the user will interact with it.
If you don't have a GUI, what kind of interaction will the user have?
  • What data will the user enter?
  • How will they enter it?

Test Cases

  • How do you plan on testing your system?
  • What are the potential problem cases?
  • What are some nominal test cases?
  • For each function, describe some possible tests (what data would you pass in? What results do you expect?)
 
Documenting a Function
You should describe your class functions and global functions in the other sections of this document.
  • What is its name?
  • What data does it take as arguments?
  • What is its return value?
  • What exceptions (if any) might it throw?
  • Description of what the function does:
    • Preconditions: what must be true before the function runs?
    • Postconditions: what is true after the function runs?
    • Does it rely on any other functions?
 

[Last updated Sat Sep 19 2020]    [Please see copyright regarding copying.]