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.
|