Software requirements have two perspectives. One expresses the needs and constraints on a software product or project that contribute to solving a real-world problem. The other is the set of activities that develop and maintain the requirements for the product and for the project that builds it. Missing, misinterpreted, or incorrect requirements that are not found early cascade into rework through design, code, and test decisions. The Guide names two common problems: stakeholder requirements and necessary detail are not communicated to the software engineers, and a requirement is worded so that more than one interpretation is possible when only one is correct.[1]
The Guide organizes requirements activities as elicitation, analysis, specification, validation, and management. Forms of specification include unstructured natural language, structured natural language, acceptance-criteria-based specification, and model-based specification.[1]
The Guide's top-level topics for this knowledge area are:
- Software Requirements Fundamentals
- Requirements Elicitation
- Requirements Analysis
- Requirements Specification
- Requirements Validation
- Requirements Management Activities
- Practical Considerations
- Software Requirements Tools
Standards listed in the Guide's appendix include ISO/IEC/IEEE 29148:2018 for requirements engineering and ISO/IEC/IEEE 15289:2019 for life-cycle information items.[1]