SOFTWARE DESIGN SPECIFICATION TEMPLATE
You should begin to develop the software design specification after
completion of the software requirements specification. The software
requirements feed the design task.
At this point, your team should decide on a programming language for the
project. If you are new to the language, take time to become familiar with it,
before you proceed.
The software design specification focuses on how the system will be
constructed. It includes four models: data design (section 2.0), architectural
design (section 3.0), interface design (section 4.0) and component-level
design (section 3.0).
Before you begin, please study chapters 9, 10, 11 and 12 in the text.
Your document should follow the template below. It is a modified version of
the Pressman's Adaptable Process Model template for a software design
document.
(Section 1.0 is repeated from the Software Requirements Specification. This
section provides background information about the SW.)
1.0 Introduction
This section provides an overview of the entire requirement document. This
document describes all data, functional and behavioral requirements for
software.
1.1 Goals and objectives
Overall goals and software objectives are described.
1.2 Statement of scope
A description of the software is presented. Major inputs, processing
functionality and outputs are described without regards to
implementation detail. Rank the major processing functionality from the
developer's point of view. Use a simple ranking system such as:
essential, desirable and future requirements. This should represent
what you think your team can accomplish in the time frame of a
semester. The essential requirements, you are sure you can complete.
The desirable requirements you hope to complete, but are not sure
about. The future requirements, you have strong doubts about. Strive to
balance the desires of your client with the reality of the time it takes to
develop a SW product.
1.3 Software context
The software is placed in a business or product line context. Strategic
issues relevant to context are discussed. The intent is for the reader to
understand the 'big picture'.
1.4 Major constraints
Any business or product line constraints that will impact the manner in
which the software is to be specified, designed, implemented or tested
are noted here.
2.0 Data design
A description of all data structures including internal, global, and temporary
data structures.
2.1 Internal software data structure
Data structures that are passed among components of the software are
described.
2.2 Global data structure
Data structured that are available to major portions of the architecture
are described.
2.3 Temporary data structure
Files created for interim use are described.
2.4 Database description
Database(s) created as part of the application is(are) described.
(Provide enough detail to create the database.)
3.0 Architectural and component-level design
A description of the program architecture is presented.
3.1 System Structure
A detailed description the system structure chosen for the application is
presented.
3.1.1 Architecture diagram
A pictorial representation, using a UML component diagram,
of the architecture is presented.
3.2 Description for Component n
A detailed description of each software component contained within the
architecture is presented. Section 3.2 is repeated for each of n
components.
3.2.1 Processing narrative (PSPEC) for component n
A processing narrative for component n is presented. It
should describe the responsibilities of the component.
3.2.2 Component n interface description.
A detailed description of the input and output interfaces for
the component is presented.
3.2.3 Component n processing detail
A detailed algorithmic description for each component is
presented.
3.2.3.1 Design Class hierarchy for
component n
3.2.3.2 Restrictions/limitations for
component n
3.2.3.3 Performance issues for component n
3.2.3.4 Design constraints for component n
3.2.3.5 Processing detail for each operation
of component n
3.2.3.5.1 Processing narrative (PSPEC)
for each operation
3.2.3.5.2 Algorithmic model (e.g., PDL)
for each operation
3.3 Dynamic Behavior for Component n
A description of the interaction of the classes is presented.
3.3.1 Interaction Diagrams
A sequence diagram, for each use case the component
realizes, is presented.
3.4 Database Modelling:
A data model identifies things of importance to an organization, properties of
that organization and how the organization is related to one another. The model
provides accurate pictures of the information needs of the organization. The
techniques used in data relational modeling are:
• Data Normalization
• Entity Relationship Model
• Database Schema
• Data Dictionary
4.0 User interface design
A description of the user interface design of the software is presented.
4.1 Description of the user interface
A detailed description of user interface including screen images or
prototype is presented.
4.1.1 Screen images
Representation of the interface form the user's point of view.
4.1.2 Objects and actions
All screen objects and actions are identified.
4.2 Interface design rules
Conventions and standards used for designing/implementing the user
interface are stated. (You could list the eight golden rules mentioned in
lecture.)
4.3 Components available
GUI components available for implementation are noted.
5.0 Restrictions, limitations, and constraints
Special design issues which impact the design or implementation of the
software are noted here.
6.0 Testing Issues
Test strategy and preliminary test case specification are presented in this
section.
6.1 Classes of tests
The types of tests to be conducted are specified, including as much
detail as is possible at this stage. Emphasis here is on black-box and
white-box testing.
6.2 Expected software response
The expected results from testing are specified.
6.3 Performance bounds
Special performance requirements are specified.
6.4 Identification of critical components
Those components that are critical and demand particular attention
during testing are identified.
References