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:
Requirements Elicitation: Interacting with stakeholders to gather information about what is needed.
Requirements Analysis: Classifying and organizing requirements.
Requirements Specification: Documenting requirements comprehensively.
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.