A Software Design Specification Template
by Brad Appleton<brad@bradapp> www.bradapp
Copyright © 1994-1997 by Bradford D. Appleton
Permission is hereby granted to make and distribute verbatim copies of this document
provided the copyright notice and this permission notice are preserved on all copies. Table of Contents
●Introduction
●Document Outline
●Document Description
r Introduction
r System Overview
r Design Considerations
■Assumptions and Dependencies
■General Constraints
■Goals and Guidelines
■Development Methods
r Architectural Strategies
r System Architecture
■Subsystem Architecture
r Policies and Tactics
r Detailed System Design
■Detailed Subsystem Design
r Glossary
r Bibliography
Introduction
The following is an attempt to put together a complete, yet reasonably flexible template for
the specification of software designs. Wherever possible, I have tried to provide guidelines (instead of prescribing requirements) for the contents of various sections and subsections of the document. Some may prefer to require more detailed subsections of a particular section, choosing one or more of the subsection topics from the list of guidelines provided. In this sense, this document is really a template for a template.
In devising this template, I have gleaned information from many sources, including various texts on Software Engineering (Pressman, Sommerville, and Van Vliet), Object-Oriented Development (Booch, Rumbaugh, Berard, and Wirfs-Brock), various SEI reports, DoD-Std and Mil-Std documentation requirements (2167/2167A), and IEEE documentation standards (particularly IEEE-1016 for software designs, and IEEE-830 for software requirements). I have made every effort not to assume or impose a particular software development methodology or paradigm, and to place more emphasis on content than on format.
It is my desire that a completed software design specification meet the following criteria:
●It should be able to adequately serve as training material for new project members,
imparting to them enough information and understanding about the project
implementation, so that they are able to understand what is being said in design
meetings, and won't feel as if they are drowning when they are first asked to create or modify source code.
●It should serve as "objective evidence" that the designers and/or implementors are
following through on their commitment to implement the functionality described in the requirements specification.
●It needs to be as detailed as possible, while at the same time not imposing too much of
a burden on the designers and/or implementors that it becomes overly difficult to create
or maintain.
Please note that there are no sections in this document for describing administrative or business duties, or for proposing plans or schedules for testing or development. The sections in this document are concerned solely with the design of the software. While there are places in this document where it is appropriate to discuss the effects of such plans on the software design, it is this author's opinion that most of the details concerning such plans belong in one or more separate documents.
Document Outline手机app设计模板
Here is the outline of the proposed template for software design specifications. Please note that many parts of the document may be extracted automatically from other sources and/or may be contained in other, smaller documents. What follows is just one suggested outline format to use when attempting to present the architecture and design of the entire system as one single document. This by no means implies that it literally is a single document (that would not be my personal preference):
●Introduction
●System Overview
●Design Considerations
r Assumptions and Dependencies
r General Constraints
r Goals and Guidelines
r Development Methods
●Architectural Strategies
r strategy-1 name or
description
r strategy-2 name or
description
<
●System Architecture
r component-1 name or
description
r component-2 name or
description
<
●Policies and Tactics
r policy/tactic-1 name
or description
r policy/tactic-2 name
or description
<
●Detailed System Design
r module-1 name or
description
r module-2 name or
description
<
●Glossary
●Bibliography
The above outline is by no means exclusive. A particular numbering scheme is not necessarily required and you are more than welcome to add your own sections or subsections
where you feel they are appropriate. In particular you may wish to move the bibliography and glossary to the beginning of the document instead of placing them at the end.
The same template is intended to be used for both high-level design and low-level design. The design document used for high-level design is a "living document" in that it gradually evolves to include low-level design details (although perhaps the "Detailed Design" section may not yet be appropriate at the high-level design phase).
The ordering of the sections in this document attempts to correspond to the order in which issues are addressed and in which decisions are made during the actual design process. Of course it is understood that software designs frequently (and often fortunately) don't always proceed in this order (or in any linear, or even predictable order). However, it is useful for the purpose of comprehending the design of the system to present them as if they did. Frequently, one of the best ways to document a project's design is to keep a detailed project journal, log, or diary of issues as they are mulled over and bandied about and to record the decisions made (and the reasons why) in the journal. Unfortunately, the journal format is not usually organized the way most people would like it for a formal review. In such cases, for the purpose of review, the journal can be condensed and/or portions of it extracted and reorganized according to this outline. However, if this is done then you need to choose whether to update and maintain the design document in the journal format, or the formal review format. It is not advisable to try and maintain the design document in both formats. (If y
ou have an automated method of converting the journal into a formal document, then this problem is solved.)
Document Description
Here is the description of the contents (by section and subsection) of the proposed template for software design specifications:
Introduction
Provide an overview of the entire document:
●Describe the purpose of this document
●Describe the scope of this document
●Describe this document's intended audience
●Identify the system/product using any applicable names and/or version numbers.
●Provide references for any other pertinent documents such as:
r Related and/or companion documents
r Prerequisite documents
r Documents which provide background and/or context for this document
r Documents that result from this document (e.g. a test plan or a development
plan)
●Define any important terms, acronyms, or abbreviations
●Summarize (or give an abstract for) the contents of this document.
Note:
For the remaining sections of this document, it is conceivable (and perhaps even
desirable) that one or more of the section topics are discussed in a separate design
document within the project. For each section where such a document exists, a
reference to the appropriate design document is all that is necessary. All such external (or fragmented) design documents should probably be provided with this document at any design reviews.
System Overview
Provide a general description of the software system including its functionality and matters related to the overall system and its design (perhaps including a discussion of the basic design approach or organization). Feel free to split this discussion up into subsections (and subsubsections, etc ...).
Design Considerations
This section describes many of the issues which need to be addressed or resolved before attempting to devise a complete design solution.
Assumptions and Dependencies
Describe any assumptions or dependencies regarding the software and its use. These may concern such issues as:
●Related software or hardware
●Operating systems
●End-user characteristics

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。