Requirements Engineering Notes

What is Requirements Engineering?

  • Requirements Engineering (RE) is the process of identifying, documenting, analyzing, validating, and managing software requirements.
  • Purpose: To ensure the system built matches stakeholder needs and is feasible to implement.

Why Requirements Engineering Is Important

  • FORMS THE FOUNDATION FOR ALL SDLC PHASES
  • REDUCES MISUNDERSTANDINGS AND SCOPE CREEP
  • ALIGNS TECHNICAL SOLUTIONS WITH BUSINESS GOALS
  • PREVENTS COSTLY REWORK AND PROJECT FAILURE

Requirements Engineering Process

  1. Elicitation
  2. Analysis & Negotiation
  3. Specification
  4. Validation
  5. Management

Types of Requirements

  • Functional: What the system should do
  • Non-functional: Performance, usability, etc.
  • Business: Organizational goals
  • User: Tasks and expectations
  • System: Interfaces, constraints

Requirements Elicitation Techniques

  • INTERVIEWS
  • SURVEYS / QUESTIONNAIRES
  • OBSERVATION
  • WORKSHOPS
  • DOCUMENT ANALYSIS
  • PROTOTYPING

Characteristics of Good Requirements

  • S.M.A.R.T:
    • Specific
    • Measurable
    • Achievable
    • Relevant
    • Time-bound
  • Also:
    • Complete, Consistent, Verifiable, Modifiable, Traceable

Functional vs. Non-functional Examples

  • Functional:
    • 'System shall allow users to reset passwords via email.'
  • Non-functional:
    • 'System shall respond to requests within 2 seconds.'

Conclusion

  • REQUIREMENTS ENGINEERING (RE) IS FOUNDATIONAL FOR SUCCESSFUL SOFTWARE PROJECTS.
  • IT REQUIRES DISCIPLINE, VALIDATION, AND DOCUMENTATION.
  • POOR REQUIREMENTS LEAD TO POOR OUTCOMES.
  • USE APPROPRIATE TECHNIQUES AND INVOLVE STAKEHOLDERS EARLY.

Key Requirements Engineering Activities

The RE process includes five key activities:

  • 1. Identifying
  • 2. Documenting
  • 3. Analyzing
  • 4. Validating
  • 5. Managing

1. Identifying Requirements

  • Goal: Discover what stakeholders need.
  • Activities: Stakeholder interviews, Surveys and questionnaires, Observations and shadowing, Document reviews and use case development
  • Importance: Misunderstood needs lead to incorrect systems.

2. Documenting Requirements

  • Goal: Clearly and accurately record requirements.
  • Activities:
    • Write SRS (Software Requirements Specification)
    • Use user stories, use case diagrams, or UML
    • Distinguish functional and non- functional requirements
  • Importance: Clear documentation ensures shared understanding.

3. Analyzing Requirements

  • Goal: Ensure requirements are feasible, complete, and aligned.
  • Activities:
    • Prioritize using MoSCoW method
    • Resolve conflicts and ambiguities
    • Perform technical and budget feasibility checks
  • Importance: Early analysis prevents rework.

4. Validating Requirements

  • Goal: Confirm requirements accurately reflect user needs.
  • Activities:
    • Walkthroughs and reviews with stakeholders
    • Create low-fidelity prototypes
    • Validate with test cases
    • Gain formal approval
  • Importance: Avoids building the wrong system.

5. Managing Requirements

  • Goal: Handle changes and maintain requirement consistency.
  • Activities:
    • Use version control
    • Record and analyze change requests
    • Maintain traceability (linking requirements to design and test cases)
    • Use tools like Jira, Trello, or DOORS
  • Importance: Keeps project on track amid changes.