A software requirements specification (SRS) is a description of a software system to be developed. It is modeled after the business requirements specification (CONOPS). The software requirements specification lays out functional and non-functional requirements, and it may include a set of use cases that describe user interactions that the software must provide to the user for perfect interaction.

Software requirements specifications establish the basis for an agreement between customers and contractors or suppliers on how the software product should function (in a market-driven project, these roles may be played by the marketing and development divisions). Software requirements specification is a rigorous assessment of requirements before the more specific system design stages, and its goal is to reduce later redesign. It should also provide a realistic basis for estimating product costs, risks, and schedules. Used appropriately, software requirements specifications can help prevent software project failure.

Software requirements specification

The software requirements specification document lists sufficient and necessary requirements for the project development. To derive the requirements, the developer needs to have a clear and thorough understanding of the products under development. This is achieved through detailed and continuous communications with the project team and customer throughout the software development process.

Software requirements specification

The SRS may be one of a contract's deliverable data item descriptions or have other forms of organizationally-mandated content.

Software requirements specification

Typically a SRS is written by a technical writer, a systems architect, or a software programmer.

Structure

An example organization of an SRS is as follows:

Purpose

Definitions

Background

System overview

References

Overall description

Product perspective

System Interfaces

User interfaces

Hardware interfaces

Software interfaces

Communication Interfaces

Memory constraints

Design constraints

Operations

Site adaptation requirements

Product functions

User characteristics

Constraints, assumptions and dependencies

Specific requirements

External interface requirements

Performance requirements

Logical database requirement

Software system attributes

Reliability

Availability

Security

Maintainability

Portability

Functional requirements

Functional partitioning

Functional description

Control description

Environment characteristics

Hardware

Peripherals

Users

Other

Requirements smell

Following the idea of code smells, the notion of requirements smell has been proposed to describe issues in requirements specification where the requirement is not necessarily wrong but could be problematic.

Examples of requirements smells are subjective language, ambiguous adverbs and adjectives, superlatives and negative statements.

See also

System requirements specification

Concept of operations

Requirements engineering

Software Engineering Body of Knowledge (SWEBOK) Design specification Specification (technical standard) Formal specification Abstract type

References

External links

("This standard replaces IEEE 830-1998, IEEE 1233-1998, IEEE 1362-1998 - http://standards.ieee.org/findstds/standard/29148-2011.html")

Software requirements

Software documentation

IEEE standards