Software Requirements Specification Document Template
This document
contains a template structure for a software requirements specification (SRS)
document. The easiest way to use this template is to simply make a copy of this
file and edit it, replacing the contents of each section with the correct
material. For more information on how to obtain the contents, consult the
Requirements Elicitation Process Guide which is available in the ICS SE Journal,
Volume 4.
Document
Title
Author(s)
Affiliation
Address
Date
Document
Version Control Information
1. Introduction
- 1.1 Purpose of this document
Describes the purpose of the
document, and the intended audience.
- 1.2 Scope of this document
Describes the scope of this
requirements definition effort. Introduces the requirements elicitation team,
including users, customers, system engineers, and developers.
This section also details any constraints that were placed upon the
requirements elicitation process, such as schedules, costs, or the software
engineering environment used to develop requirements.
- 1.3 Overview
Provides a brief overview of the product defined as
a result of the requirements elicitation process.
- 1.4 Business Context
Provides an overview of the business
organization sponsoring the development of this product. This overview should
include the business's mission statement and its organizational objectives or
goals.
2. General Description
- 2.1 Product Functions
Describes the general functionality of the
product, which will be discussed in more detail below.
- 2.2 Similar System Information
Describes the relationship of
this product with any other products. Specifies if this product is intended to
be stand-alone, or else used as a component of a larger product. If the
latter, this section discusses the relationship of this product to the larger
product.
- 2.3 User Characteristics
Describes the features of the user
community, including their expected expertise with software systems and the
application domain.
- 2.4 User Problem Statement
This section describes the essential
problem(s) currently confronted by the user community.
- 2.5 User Objectives
This section describes the set of objectives
and requirements for the system from the user's perspective. It may include a
"wish list" of desirable characteristics, along with more feasible solutions
that are in line with the business objectives.
- 2.6 General Constraints
Lists general constraints placed upon
the design team, including speed requirements, industry protocols, hardware
platforms, and so forth.
3. Functional Requirements
This section lists the functional
requirements in ranked order. Functional requirements describes the possible
effects of a software system, in other words, what the system must
accomplish. Other kinds of requirements (such as interface requirements,
performance requirements, or reliability requirements) describe how the
system accomplishes its functional requirements. Each functional requirement
should be specified in a format similar to the following:
- Short, imperative sentence stating highest ranked functional
requirement.
- Description
A full description of the requirement.
- Criticality
Describes how essential this requirement is to the
overall system.
- Technical issues
Describes any design or implementation issues
involved in satisfying this requirement.
- Cost and schedule
Describes the relative or absolute costs
associated with this issue.
- Risks
Describes the circumstances under which this requirement
might not able to be satisfied, and what actions can be taken to reduce the
probability of this occurrence.
- Dependencies with other requirements
Describes interactions
with other requirements.
- ... others as appropriate
- <Name of second highest ranked requirement>
And so
forth...
4. Interface Requirements
This section describes how the software
interfaces with other software products or users for input or output. Examples
of such interfaces include library routines, token streams, shared memory, data
streams, and so forth.
- 4.1 User Interfaces
Describes how this product interfaces with
the user.
- 4.2 Hardware Interfaces
Describes interfaces to hardware
devices.
- 4.3 Communications Interfaces
Describes network interfaces.
- 4.4 Software Interfaces
Describes any remaining software
interfaces not included above.
5. Performance Requirements
Specifies speed and memory requirements.
6. Design Constraints
Specifies any constraints for the design team
using this document.
- 6.1 Standards Compliance
- 6.2 Hardware Limitations
- ... others as appropriate
7. Other non-functional attributes
Specifies any other particular
non-functional attributes required by the system. Examples are provided below.
- 7.1 Security
- 7.2 Binary Compatibility
- 7.3 Reliability
- 7.4 Maintainability
- 7.5 Portability
- 7.6 Extensibility
- 7.7 Reusability
- 7.8 Application Affinity/Compatibility
- 7.9 Resource Utilization
- 7.10 Serviceability
- ... others as appropriate
8. Preliminary Object-Oriented Domain Analysis
This section presents a
list of the fundamental objects that must be modelled within the system to
satisfy its requirements. The purpose is to provide an alternative, "structural"
view on the requirements stated above and how they might be satisfied in the
system.
9. Operational Scenarios
This section should describe a set of scenarios
that illustrate, from the user's perspective, what will be experienced when
utilizing the system under various situations.
In the article Inquiry-Based Requirements Analysis (IEEE Software, March
1994), scenarios are defined as follows:
In the broad sense, a scenario is simply a proposed specific use
of the system. More specifically, a scenario is a description of one or more
end-to-end transactions involving the required system and its environment.
Scenarios can be documented in different ways, depending up on the level of
detail needed. The simplest form is a use case, which consists merely of a
short description with a number attached. More detailed forms are called
scripts. These are usually represented as tables or diagrams and involved
identifying an action and the agent (doer) of the action. FOr this reason, a
script can also be called an action table.
Although scenarios are useful in acquiring and validating requirements,
they are not themselves requirements, because the describe the system's
behavior only in specific situations; a specification, on the other hand,
describes what the system should do in general.
10. Preliminary Schedule
This section provides an initial version of the
project plan, including the major tasks to be accomplished, their
interdependencies, and their tentative start/stop dates. The plan also includes
information on hardware, software, and wetware resource requirements.
The project plan should be accompanied by one or more PERT or GANTT charts.
11. Preliminary Budget
This section provides an initial budget for the
project, itemized by cost factor.
12. Appendices
Specifies other useful information for understanding the
requirements. All SRS documents should include at least the following two
appendices:
- 12.1 Definitions, Acronyms, Abbreviations
Provides definitions
of unfamiliar definitions, terms, and acronyms.
- 12.2 References
Provides complete citations to all documents and
meetings referenced or used in the preparation of this document.