Software Engineering basics - Requirement Elicitation and Analysis

Requirement Elicitation and Analysis is a critical part of software engineering, focusing on understanding what the users and stakeholders need from a system and translating that into clear, actionable requirements. It is usually the first phase of the requirements engineering process.


1. Requirement Elicitation

Requirement elicitation is the process of gathering information from stakeholders about what the software system should do.

Goals:

  • Understand user needs and expectations.

  • Identify system constraints.

  • Capture functional and non-functional requirements.

Techniques:

  1. Interviews: Direct discussions with stakeholders to gather detailed requirements.

  2. Questionnaires/Surveys: Useful for gathering information from a large user base.

  3. Workshops/Joint Application Development (JAD): Collaborative sessions with multiple stakeholders.

  4. Observation/Shadowing: Studying users as they perform tasks to understand real requirements.

  5. Document Analysis: Reviewing existing system documentation, manuals, and reports.

  6. Prototyping: Building preliminary models to refine user requirements through feedback.


2. Requirement Analysis

Requirement analysis is the process of examining, refining, and validating the gathered requirements to ensure they are clear, complete, consistent, and feasible.

Goals:

  • Identify conflicts or ambiguities in requirements.

  • Prioritize requirements based on importance, risk, and feasibility.

  • Model and represent requirements in a structured way.

Activities:

  1. Classification: Separate requirements into functional (what the system should do) and non-functional (quality attributes like performance, security).

  2. Prioritization: Determine which requirements are essential, nice-to-have, or optional.

  3. Conflict Resolution: Address contradictory requirements from different stakeholders.

  4. Modeling Requirements: Use diagrams like use case diagrams, data flow diagrams (DFD), or entity-relationship diagrams (ERD).

  5. Validation: Ensure the requirements accurately reflect stakeholder needs and are technically feasible.


3. Importance

  • Ensures the system meets real user needs.

  • Reduces the risk of project failure due to misunderstood or missing requirements.

  • Provides a baseline for design, development, and testing.


4. Summary

Requirement Elicitation and Analysis is the process of collecting and refining user needs to create a clear, complete, and actionable set of requirements that guide software development.

  • Elicitation: Gathering requirements from stakeholders.

  • Analysis: Understanding, organizing, and validating those requirements.