System Requirements Specification
- System Requirements Specification (SRS)
- the
requirements work product
that formally specifies the system-level
requirements
of a single
system or an
application
The typical objectives of a system requirements
specification are to:
- Provide an overview of the application’s context
and capabilities.
- Formally specify the application’s system-level
requirements including its:
- Document any future planned enhancements.
- Document any open issues, major things to be completed,
and assumptions.”
- Provide a baseline for:
- Be a basis for:
- Establishing the scope, size, and complexity of the
application and its related project(s).
- Estimating the associated costs, schedule(s), and
progress.
- Future extensions and enhancements to the
application.
The typical benefits of a system requirements specification
include:
- It helps to establish a consensus among the
application’s stakeholders concerning its system-level
requirements.
- A well-specified set of requirements reduces endeavor
risks due to poorly analyzed, specified, and managed
requirements.
- The requirements specified in the system requirements
specification set the scope, size, and complexity of the
application.
- The requirements specified in the system requirements
specification drive the system architecture, design,
implementation, and testing activities.
The typical contents of a system requirements specification
include:
- System Overview:
- System Definition
- Businesss Goals
- Business Objectives
- System
Context
- Summary of System Capabilities
-
Functional Requirements:
-
Data Requirements:
- Requirements Data Model
(e.g., Business
Object Model or Logical
Data
Model)
- Required Data Type Descriptions
(e.g., data dictionary with textual definitions and
associated data expressions, XML DTDs)
-
Quality Requirements:
- Developer-Oriented Quality
Requirements:
- User-Oriented Quality Requirements:
-
Constraints:
- Appendices:
- Envisioned Future Enhancements
- Tentative Requirements
- Desirable Functional and Nonfunctional Capabilities
(“should”)
- Nice to Have Capabilities
- Permitted Capabilities (“may”, if
any)
- Rejected “Requirements” (e.g., out of
scope or inconsistent)
- Major Issues
- Major Items To Be Determined
- Assumptions
The typical stakeholders of a system requirements
specification are:
- Producer:
- Evaluator:
- Approvers:
- Maintainers:
- Users:
The System Requirements Specification is typically used
by practically every endeavor organization and team
including:
- Organizations:
- Teams:
-
Architecture Team, which uses it to drive and
validate the system architectures.
-
Hardware Development Team, which uses it to drive the
design of the hardware components.
-
Independent Test Team, which uses it to generate
system and launch test cases.
-
Maintenance Team, which uses the requirements in it
to constrain maintenance updates.
-
Metrics Team, which uses the requirements in it to
estimate the size and scope of the endeavor.
-
Project Management Team, which uses it to manage
project scope and schedule project activities.
-
Security Team, which uses it to drive the design of
the resulting security mechanisms.
-
Software Development Team, which uses it to drive the
design of the software components.
-
User Experience Team, which uses it to drive and
validate the human interface prototype.
-
User Support Team, which uses it as input to the
users manual and user support materials.
Phases
A system requirements specification is typically produced
during the following phases:
-
Business Strategy: Not Applicable
-
Business Optimization: Not Applicable
-
Initiation: Started.
During this phase, approximately 80% of the
requirements are typically specified (e.g., all use cases and
significant quality requirements are specified, but only some
of the use case paths and specified and they may not contain
all required information). During this phase, the emphasis is
on the high risk and architecturally significant
requirements.
-
Construction: Completed
-
Delivery: Maintained
-
Usage: Maintained
-
Retirement: Archived
A system requirements specification typically can be started
if the following preconditions hold:
- The
requirements team is staffed and trained in
requirements engineering.
- The following requirements engineering tasks have been
started:
- Initial versions of one or more of the input work
products and stakeholders are available.
The typical inputs to a system requirements specification
include:
- Work Products:
- Requirements:
- Diagrams:
- Models:
- Documents:
- Stakeholders:
- The requirements specification is the foundation on which
the architecture, design, and implementation are built. At
best, a poor requirements specification is a shaky foundation
on which to build an application. An incorrect requirements
specification is like a foundation built in the wrong place,
and we can all imagine how difficult and expensive it will be
to move a large shoddy structure that was built in the wrong
location. Thus, the requirements specification is one of the
most critical documents of an endeavor.
- As described above, the contents of this document are
very complete and intended for use for large, complex,
business-critical or safety-critical applications.
Inappropriate contents (e.g., the quality requirement types
that do not apply) should be tailored out of the
specification and its associated conventions during the
process tailoring task.
- This is a living document that is developed incrementally
and iteratively in parallel with other work products (e.g.,
requirements executive summary,
domain model document, and
system architecture document).
- Different parts of this document are due at different
times (i.e., by different milestones).
- Some parts of this document should be mandatory and some
parts should be optional.
- Not all requirements are contained in this document;
specifically, required APIs to external applications are
specified in the
external API specification.
- Note that there is typically no need for a separate
“software requirements specification” or
“hardware requirements specification” on most
projects although such documents can be produced if
appropriate (e.g., for subcontractors).
- Do not concentrate solely on the use cases of the
functional requirements. For example, many quality
requirements may have a larger impact on the architecture,
cost, and schedule than most functional requirements.
- Note that the quality requirements are too critical to be
specified in a separate “Supplementary Requirements
Specification”.
- Reuse use cases by using a combination of:
- The major functions listed in the
application vision statement.
- The standard mapping from functions to use cases.
- Reusable requirements based on functional areas (e.g.,
Content Management).
A system requirements specification is typically constrained
by the following conventions: