Requirement Engineering

Requirements Engineering (RE) is the systematic and repeatable process of defining, managing, and testing the requirements for a product. It's essentially the backbone for a successful software project, ensuring the final product actually meets the customer's needs.

What is Requirement Engineering?

If the software engineering team doesn't first understand the problem's requirements, the resulting software has a high probability of not meeting customer needs.

Characteristics of a Good Requirement

For software development to be a success and not a disaster, the requirements must be top-notch1. A good requirement is:

Requirement Engineering Tasks

  1. Inception: Establish a fundamental understanding of the core problem and the nature of the desired solution by asking "context-free" questions. This phase identifies the people who want a solution and the kind of solution desired.
  2. Elicitation: Draw out the requirements from various stakeholders (customers, users, and others). The goal is to find out what the product objectives are and how the product fits into business needs.
  3. Elaboration: Create a refined technical model (an analysis model) that represents the information, functional, and behavioral aspects of the requirements. This is often driven by creating and refining user scenarios describing end-user interactions.