Analysis/Design Document
Introduction
- Expanded and updated project statement
- Project scope (now possibly with reference to internal design issues)
- Software context
- Information objectives/requirements/constraints
- Functionality objectives/requirements/constraints
- Performance objectives/requirements/constraints
Data design
- Entity relationship diagram (ERD)
- For each proposed data object (including third party objects):
- Class-responsibility-collaborator (CRC) info (at analysis level)
- Proto-header file (at design level: private data, return types/arguments of operations)
- State transition diagrams (STD) for critical objects (const vs. non-const operations)
- Enough detail for each object to move into implementation phase next
- Reusability comments
- File and database structure
Architectural design
- Data flow diagram (DFD)
- Larger-scale STD's
- Detailed indication of module/submodule mapping
Interface design
- User-interface (UI) specifications ("what")
- User model
- Screen sketches
- Help description
- Error reporting
- Descriptions of all legal input
- User-interface design ("how")
- Interface with external data
- Interface with external devices/systems
- Internal interfaces (e.g. details on message-passing in DFD)
Procedural design
- Processing narrative for each module
- Communication with other modules
- Data structures used by each module
- Procedural details for complex functions (flowcharts/pseudocode)
Requirements cross-reference
Testing strategy
- Objects
- Modules
- Integration
Your project binder should also include in separate sections
(1) all minutes from project meetings (organized so I can find and
understand them), (2) schedule tracking form, and (3) printouts of
relevant log entries to help me track your progess.