Software Requirements Document, SRS Standards, and Requirements Engineering
This section introduces the software requirements document, the purpose and structure of an SRS, relevant standards, and the broader discipline of requirements engineering, supported by a real-time system case study.
Learning Goals
- Describe the purpose and key components of a Software Requirements Specification (SRS) document.
- Explain the role of SRS standards in improving consistency, completeness, and quality of requirements documentation.
- Apply basic requirements engineering principles to organize and validate system requirements.
- Examine a case study of an SRS for a real-time system and identify its major requirement categories.
- Assess an SRS excerpt for clarity, traceability, completeness, and testability.
Requirements Engineering acts as the foundation of any successful software system. The primary goal of this discipline is to bridge the cognitive gap between what stakeholders need and what developers build. The ultimate output of this process is the Software Requirements Specification (SRS), which serves as the official contract between the development team and the client, a blueprint for system design, and the validation baseline for testing.
The requirements engineering lifecycle is not a single linear phase but rather a highly iterative process of continuous refinement, validation, and change management.
The Requirements Engineering Process
The requirements engineering discipline operates as a continuous lifecycle loop, transforming high-level business goals into precise, testable software components.

This lifecycle comprises several interrelated activities:
- Elicitation: Actively discovering stakeholder requirements through interviews, workshops, and observation.
- Analysis & Negotiation: Organizing the gathered requirements, identifying conflicts, and negotiating trade-offs with stakeholders.
- Specification: Creating the formal SRS document using standardized templates.
- Validation & Verification: Reviewing the document to ensure it is complete, consistent, and testable.
- Requirements Management: Managing changes to the baseline using a change control process and tracking requirements using a traceability matrix.
Footnotes
-
ISO/IEC/IEEE 29148:2018 - Systems and software engineering - Modern standard regulating requirements engineering processes and document templates. ↩
-
Karl Wiegers - Software Requirements (Microsoft Press) - Textbook defining requirements engineering phases, SRS design, and V&V checklist techniques. ↩
Software Requirement Specification (SRS) Tutorial and EXAMPLE
The Requirements Engineering Lifecycle Roadmap
- 1Step 1
Discover system boundaries, user roles, and primary business goals. Use structured interviews, prototypes, and workshops to gather explicit needs, while using ethnography to reveal tacit knowledge that stakeholders fail to verbalize.
- 2Step 2
Analyze requirements for conflict, ambiguity, and technical feasibility. Construct visual models, such as UML use cases, data flow diagrams, and statecharts. Mediate conflicts between stakeholder groups to establish a mutually agreed set of features.
- 3Step 3
Translate requirements into a formal, structured document according to international standards (e.g., ISO/IEC/IEEE 29148). Document both functional behaviors and non-functional quality constraints, separating hardware boundaries from software layers.
- 4Step 4
Conduct formal technical reviews and inspections to ensure the SRS is clear, consistent, complete, and testable. Verify that all requirements align with the high-level business goals and validate that they accurately represent what the customer actually wants.
- 5Step 5
Establish a formal baseline for the requirements document. Implement bidirectional traceability using a Requirements Traceability Matrix (RTM) to map requirements to architectural components and test cases. Manage subsequent change requests through a structured Change Control Board (CCB).
IEEE 830-1998 (IEEE Recommended Practice for Software Requirements Specifications) is a classic software engineering standard that outlines flat guidelines for organizing an SRS. It categorizes requirements primarily into Functional Requirements, External Interface Requirements, Performance Requirements, Design Constraints, and Software System Quality Attributes. However, it lacks systemic separation between stakeholder needs and software requirements, leading to flat, monolithic structures that struggle to scale in modern multi-layered systems.
Footnotes
-
IEEE 830-1998 Standard - Practice for SRS - Historic standard that introduced the structural format of software requirements specifications. ↩
Subjective Traps in SRS Writing
Avoid subjective adjectives such as 'fast', 'graceful', 'robust', or 'user-friendly' in requirements. These words are untestable. A requirement is only valid if it can be verified through a concrete testing procedure. Replace 'The system shall respond fast' with 'The system shall respond to user requests within under a peak load of concurrent connections.'
Real-Time Case Study: Automotive Anti-Lock Braking System (ABS)
In safety-critical systems, requirements engineering demands extreme precision. Let us examine the Software Requirements Specification for an Automotive Anti-lock Braking System (ABS), which is a classic hard Real-Time System.
In an ABS, a failure to meet timing constraints can lead to catastrophic hardware failure and loss of life. Its requirements are organized into three primary categories:
- Functional Requirements (FR):
- Wheel Speed Monitoring: The system shall read telemetry from the wheel speed sensors via the CAN bus.
- Brake Pressure Modulation: The system shall modulate hydraulic valve pressure when wheel slip is detected.
- Non-Functional Requirements (NFR):
- Performance/Timing: The main control loop shall execute every and calculate the slip ratio where: where is the vehicle speed, is the wheel angular velocity, and is the wheel radius.
- Safety: The software shall comply with the ISO 26262 standard for road vehicles, meeting Automotive Safety Integrity Level D () compliance.
- System Constraints:
- The ABS software must execute within a microcontroller containing less than of RAM.
The Role of the Traceability Matrix
Bidirectional traceability is mandatory under ISO 26262. Using a Requirements Traceability Matrix (RTM) ensures that every single requirement is traced forward to test cases (completeness) and traced backward to a business goal (preventing gold plating).
SRS Excerpt Quality Assessment & Refactoring
In many industrial projects, initial requirements drafts contain critical flaws in clarity, traceability, and testability. The table below presents three flawed excerpts from an initial ABS requirements document, assesses their issues, and provides standard-compliant, fully testable refactored requirements.
| Flawed Excerpt | Quality Assessment | Specific Flaws | Standard-Compliant Refactored Requirement |
|---|---|---|---|
| REQ-001: "The system should detect skid situations quickly and apply the brakes safely." | Untestable & Ambiguous | Uses vague words like "quickly" and "safely." Use of non-mandatory "should" instead of mandatory "shall." Lacks formal trace markers. | REQ-ABS-FR-102: "The system shall calculate the wheel slip ratio every . If , the system shall trigger the hydraulic modulator to reduce brake pressure within ." [Traces to: StRS-Lending-43] |
| REQ-002: "We need to ensure that the system is highly reliable and doesn't crash during operation." | Non-Traceable & Subjective | "Highly reliable" and "doesn't crash" are untestable. Lacks quantitative engineering metrics and standard compliance. | REQ-ABS-NFR-304: "The system shall maintain an operational availability of and have a Mean Time Between Failures () of no less than operating hours." [Traces to: StRS-Safety-09] |
| REQ-003: "The software must display wheel speed diagnostics on a screen." | Incomplete & Loose | Fails to specify the update frequency, formatting, target interface hardware, or error boundaries. | REQ-ABS-EIF-201: "The system shall output the real-time calculated wheel speed for all four wheels to the Dashboard Display Interface via CAN bus message ID 0x0F2 at a frequency of with an accuracy of . Encompasses error state code 0x99 for sensor failures." [Traces to: SyRS-Hardware-21] |
NFR Allocation in Safety-Critical Real-Time Systems
Relative weight of quality attribute focus in systems engineering
SRS Verification & Validation FAQ
Knowledge Check
Under the modern ISO/IEC/IEEE 29148 standard, which document represents the high-level needs and expectations of the clients, sponsors, and operators?