Requirements Engineering

TOPIC AREA

What Is Requirements Engineering?

Requirements engineering is a discipline within software and systems engineering concerned with the systematic discovery, documentation, analysis, and management of the needs and constraints that a system must satisfy. It defines what a system should do, under what conditions, and subject to what limitations, before implementation begins. The field draws from systems engineering, software engineering, cognitive science, and organizational theory, recognizing that requirements arise from human stakeholders whose goals, priorities, and tacit knowledge must be carefully elicited before they can be formalized.

Failures in requirements engineering account for a disproportionate share of costly system development problems. Studies consistently identify incomplete, ambiguous, or conflicting requirements as leading causes of project overruns and delivered systems that miss user needs, making the discipline central to any rigorous development process.

Functional and Non-Functional Requirements

Requirements are conventionally divided into functional and non-functional categories. Functional requirements specify the behaviors a system must exhibit: the inputs it accepts, the computations it performs, and the outputs it produces. Non-functional requirements (also called quality attributes or system properties) constrain how the system achieves its functional goals, specifying characteristics such as performance, security, reliability, usability, and scalability. These two categories interact closely: a system that satisfies every functional requirement but violates a security or performance constraint is, in most contexts, unacceptable. The ISO/IEC/IEEE 29148:2018 standard on requirements engineering provides internationally agreed definitions and processes for specifying both categories.

Non-functional requirements are often the most difficult to specify precisely because they are context-dependent and frequently lack natural units. Performance requirements that specify response times, throughput thresholds, or availability percentages are measurable. Usability or maintainability requirements often require careful operationalization before they can be verified.

Technical Requirements and Use Cases

Technical requirements define constraints imposed by the implementation environment: hardware interfaces, communication protocols, operating system dependencies, or safety standards that the design must comply with. They sit at the boundary between what a system must do and how it will be built. Use cases, developed by the object-oriented modeling community and formalized by Ivar Jacobson in the early 1990s, describe the interactions between actors (users or external systems) and the system itself, capturing functional requirements in a scenario-based narrative form that is accessible to both technical and non-technical stakeholders. The Unified Modeling Language (UML) specification maintained by the Object Management Group standardizes use case diagrams and related notations as a vehicle for communicating requirements.

Requirements Traceability

Requirements traceability is the ability to track a requirement forward through design, implementation, and testing, and to trace a design decision or test case backward to the requirement that motivated it. A traceability matrix records these links, providing evidence that every requirement is addressed and that every design element serves a stated need. Traceability is mandated in many safety-critical domains, including aerospace (DO-178C), automotive (ISO 26262), and medical devices (IEC 62304), where regulators require demonstration that the system was built as intended. The NASA Systems Engineering Handbook treats traceability as a core practice for managing requirement volatility across long-duration programs.

Requirements Validation and Management

Validation confirms that documented requirements accurately capture stakeholder intentions, as distinct from verification, which confirms that the built system satisfies its specification. Validation techniques include structured walkthroughs, prototyping, formal inspections, and requirements reviews with end users. Requirements management encompasses version control, change control, and impact analysis as requirements evolve during development. Because requirements change is a normal feature of complex projects rather than an exception, disciplined change management processes and tool support are essential for maintaining a coherent and current specification baseline throughout the system lifecycle.

Applications

Requirements engineering has applications in a wide range of fields, including:

  • Safety-critical systems development, including aerospace, medical devices, and nuclear instrumentation
  • Enterprise software projects, linking business goals to system behavior
  • Defense acquisition programs, where contractual compliance depends on a rigorous requirements baseline
  • Embedded systems and IoT product design
  • Regulatory submissions, providing auditable evidence of compliance with standards

Topics in this Area