Requirements Development

Tasks and techniques in requirements development. Source: Wiegers and Beatty 2013, table 3-1.

It's hard to build the right product without knowing why it's needed or what features are expected of it. Requirements Development provides answers to these questions. It involves many stakeholders: users, designers, developers, architects, and managers. It identifies user needs, studies technical feasibility, derives exact requirements, and validates those requirements.

Requirements are various: business vs technical, functional vs non-functional, system vs component, hardware vs software, etc. Getting the requirements right mitigates risk, avoids costly rework, and improves customer satisfaction.

Traditionally requirements were identified at the start of the project. In Agile or in any iterative process, requirements are developed continuously as features are added/updated or bugs need to be fixed. Requirements development is so important that Karl Weigers once said,

If you don't get the requirements right, it doesn't matter how well you do anything else.

Discussion

The Requirements Engineering (RE) process. Source: Westfall 2014, fig. 2.

Milestones

Brooks in his book Mythical Man-Month writes about the need to consult users when writing system specifications. Some important ideas include user feedback, iterative development, separation of specification and design, and user manual as the external specification of the product. Until then, users weren't considered as important to either identifying requirements or writing specifications.