Below is the suggested format for the software documents. Throughout,
be sure to adhere to Einstein's advice: "Make everything as simple as
possible, but not simpler." In particular,
be sure to capture the details that you believe would be important to fellow
developers and clients.
SPMP: (audience: developers)
- Overview
- Provide overview of system that we're building, making it accessible to
someone who is not familiar with the subject matter
- Project organization
- Describe how the team is divided into groups, and how they are managed. Names
of the team leads, etc.
- Work elements
- Present the work breakdown structure (WBS), listing all the work that must be
done for the project, organized hierarchically. Each task should be assigned to
a specific person.
- Provide a detailed schedule for the work for the entire project, in the form
of a Gantt chart, a PERT chart, or simply text (table). As a guideline, each
task should be do-able by exactly one person in approximately one week.
RAD: (audience: developers and clients)
- Overview
- Provide overview of system being built, making it accessible to someone who is
not familiar with the subject matter
- Requirements
- Functional. Describe what the system is supposed to do, in terms of inputs,
behavior, and outputs.
- Non-functional. Describe how the system is supposed to be, i.e., qualities
such as usability, security, etc.
- System models
- Describe the system from the user's point of view, using scenarios, use cases,
and/or UML diagrams
SDD: (audience: developers)
- Overview
- Provide a bird's-eye view of the software architecture.
- System decomposition
- Using UML class diagrams (or similar graphical depiction), present the
subsystems of the architecture and their connections, omitting details about
their specific interfaces. Each subsystem should correspond to a C++ class. Also
list the subsystems, with a brief description of the functionality of each.
- Subsystems
- Describe each of the subsystems in detail, including
- valid range of values for data variables
- mapping of data variables to user displayed values
(e.g., zero-based or one-based indexing)
- architecture of components (UML class diagrams)
- functionality of components (UML state and sequence diagrams)