Requirements Engineering

The Process

while(!done) {
   capture requirements
   analyze requirements
   document requirements
   validate requirements
}

Capturing requirements

interviews
prototypes
scenarios
mock-ups
political & social factors
consensus building

Analyzing requirements

Classifying requirements

functional (capabilities) vs. non-functional (constraints)
high-level or derived
emergent
priority: manditory, highly desirable, desirable, optional
scope: global, subsystem, component
volatility/stability

Domain modeling

data & control flow
classes & objects
event traces
state models
analysis patterns

Architectural design

identifying high-level components
assigning requirements to components
architecture patterns

Documenting requirements

Requirements Definition Document (RDD)

readership: all stakeholders (customers, users, developers ...)
RAD
ConOps

System Requirements Spesification (SRS)

readership: developers
contract/basis for agreement
basis for estimating costs, risks, & schedule
SyRS
RAD

Requirements validation techniques & concepts

Reviews/Inspection
Prototyping
Model validation
Acceptance tests

Requirements management

trace DAGs

Requirements Analysis Document