Software Engineering: Requirements Engineering

Overview of Requirements Engineering

  • Definition: Requirements Engineering (RE) is the process of establishing the services required from a system and the constraints under which it operates and is developed.

  • Importance: Understanding customer needs and ensuring that the system behaves as intended.

1. Types of Requirements

/

  • User Requirements:

    • Defined in natural language and diagrams.

    • Intended for customers.

  • System Requirements:

    • Structured documents detailing system functions, services, and operational constraints.

    • May form part of the contract between client and contractor.

2. Characteristics of Requirements

2.1 Functional Requirements
  • Describe what the system should do, reacting to specific inputs and defining behaviors in various situations.

2.2 Non-Functional Requirements
  • Constraints on functions or services (e.g., performance, reliability, usability).

  • Govern overall system aspects rather than individual functionalities.

3. Importance of Clarity in Requirements

  • Ambiguity: Vague requirements can lead to multiple interpretations.

  • Completeness & Consistency: Requirements should encompass all needed functionalities and have no conflicting statements.

4. Requirements Engineering Process

  • Phases:

    1. Requirements Elicitation: Interacting with stakeholders to gather information about what is needed.

    2. Requirements Analysis: Classifying and organizing requirements.

    3. Requirements Specification: Documenting requirements comprehensively.

    4. Requirements Validation: Ensuring requirements accurately represent customer needs.

5. Stakeholders and Their Roles

  • Stakeholders: Any individual or organization affected by the system.

  • Types include:

    • End-users

    • System managers

    • System owners

    • External stakeholders

6. Requirements Change Management

  • Requirements evolve over time due to:

    • Changes in the business environment

    • New stakeholder requirements

    • Technology advancements

  • A systematic process is needed to assess and manage changes in requirements.

7. Techniques for Requirements Elicitation

  • Interviews: Gather stakeholder inputs effectively.

  • Ethnography: Observe user interactions with existing systems.

  • Scenarios & User Stories: Real-life examples to facilitate discussions.

8. Documenting Requirements

  • Requirements should be documented in a clear, organized format.

  • Software Requirements Document: The official statement of what is required, detailing both user and system requirements.

9. Validating Requirements

  • Validate for:

    • Validity: Do requirements meet customer needs?

    • Consistency: Are there conflicting requirements?

    • Completeness: Are all necessary requirements included?

    • Realism: Can requirements feasibly be implemented?

    • Verifiability: Can each requirement be tested?

Key Takeaways

  • Requirements set expectations for what the system should do and function within constraints.

  • The RE process is iterative, involving continuous refinement and stakeholder engagement.

  • Clear documentation is critical for successful communication between clients and developers, ensuring all expectations are met and adaptable over time.