Software requirements specification


A software requirements specification is a description of a software system to be developed. It is modeled after business requirements specification, also known as a stakeholder requirements specification. 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 specification establishes the basis for an agreement between customers and contractors or suppliers on how the software product should function. 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.
The software requirements specification document lists sufficient and necessary requirements for the project development. To derive the requirements, the developer needs to have 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.
The SRS may be one of a contract's deliverable data item descriptions or have other forms of organizationally-mandated content.
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:
  1. Purpose
  2. #Definitions
  3. #Background
  4. #System overview
  5. #References
  6. Overall description
  7. #Product perspective
  8. ##System Interfaces
  9. ##User interfaces
  10. ##Hardware interfaces
  11. ##Software interfaces
  12. ##Communication Interfaces
  13. ##Memory constraints
  14. #Design constraints
  15. ##Operations
  16. ##Site adaptation requirements
  17. #Product functions
  18. #User characteristics
  19. #Constraints, assumptions and dependencies
  20. Specific requirements
  21. #External interface requirements
  22. #Functional requirements
  23. #Performance requirements
  24. #Logical database requirement
  25. #Software system attributes
  26. ##Reliability
  27. ##Availability
  28. ##Security
  29. ##Maintainability
  30. ##Portability
  31. #Functional requirements
  32. ##Functional partitioning
  33. ##Functional description
  34. ##Control description
  35. #Environment characteristics
  36. ##Hardware
  37. ##Peripherals
  38. ##Users
  39. #Other

    Goals

The software requirements specification is a communication tool between users and software designers. The specific goals of the SRS are as follows:
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.