Software Engineering: Requirements Engineering Overview
Understanding Requirements in Software Engineering
Presented by Roger S. Pressman
Requirements Engineering Overview
- Requirements Engineering Process
- Inception
- Establish understanding of the problem.
- Identify stakeholders (those wanting the solution).
- Define the desired nature of the solution.
- Assess preliminary communication and collaboration between customer and developer.
- Elicitation
- Gather requirements from all stakeholders.
- Conduct meetings with software engineers and customers.
- Elaboration
- Create an analysis model to define data, function, and behavioral requirements.
- Negotiation
- Agree on a feasible deliverable system for both developers and customers.
- Specification
- Can be a written document, models, formal mathematical specifications, user scenarios (use cases), or prototypes.
- Validation
- A review process to identify:
- Errors in content or interpretation.
- Areas needing clarification.
- Missing information and inconsistencies.
- Conflicting or unrealistic requirements.
- Requirements Management
- Ongoing process of managing changing requirements throughout the lifecycle of the software.
Inception Phase
- Stakeholder Identification
- Ask, "Who else should I talk to?"
- Recognize multiple perspectives and collaborate.
- Initial Questions
- Who requested the work?
- Who will use the solution?
- What are the economic benefits of a successful implementation?
- Are there alternative solutions available?
Eliciting Requirements
- Meeting Setup
- Prepare rules for participation and suggest an agenda.
- Utilize a facilitator for the meeting.
- Implement a definition mechanism (worksheets, electronic boards, etc.).
- Meeting Goals
- Identify the problem, discuss potential solutions, and agree on preliminary requirements.
Quality Function Deployment
- Function Deployment
- Assess customer value for each necessary system function.
- Information Deployment
- Identify data objects and events.
- Task Deployment
- Analyze system behavior.
- Value Analysis
- Prioritize requirements based on relative value.
Elicitation Work Products
- A statement of need and feasibility.
- A bounded statement of system scope.
- A list of stakeholders involved in the requirements process.
- Technical environment description.
- An organized list of requirements and applicable domain constraints.
- Usage scenarios to illustrate system operation under varying conditions.
- Any prototypes developed for requirement clarification.
Building the Analysis Model
- Model Elements
- Scenario-based Elements:
- Functional narratives and use-case descriptions for actor-system interactions.
- Class-based Elements:
- Derived from scenarios.
- Behavioral Elements:
- State diagrams.
- Flow-oriented Elements:
- Data flow diagrams.
Use-Cases
- Definition
- Descriptions of user scenarios outlining interaction threads with the system.
- Key Questions to Address in Use-Cases
- Who are the actors?
- What goals do they have?
- What are the preconditions for the scenario?
- What tasks will actors perform?
- What variations exist in their interactions?
- What system information will be affected?
- Will external changes need to be reported to the system?
Analyzing Requirements
- Pattern Analysis
- Pattern Name: Descriptor capturing the pattern essence.
- Intent & Motivation: Define what the pattern achieves and provide scenarios for application.
- External Forces & Solution: Explain issues affecting usage and structural/behavioral solutions.
- Consequences & Design: Discuss implications of applying the pattern and associated design patterns.
- Known Uses & Related Patterns: Include examples of implementation and structurally similar patterns.
Negotiating Requirements
- Stakeholder Identification
- Understand who is involved in negotiations.
- Win Conditions
- Determine conditions that are favorable for stakeholders.
- Negotiation Goal
- Strive for a requirements set that benefits all parties involved.
Validating Requirements
- Consistency Check
- Ensure alignment with the overall system objectives.
- Assess abstraction levels of requirements (avoid excessive technical details at this stage).
- Necessity
- Verify if each requirement is essential or just an add-on feature.
- Clarity and Attribution
- Ensure requirements are clear, unambiguous, and attributed to a specific source.
- Conflict Resolution
- Identify and resolve any inconsistencies between requirements.
- Testability and Achievability
- Review if requirements are achievable and testable in the intended technical environment.
Conclusion
- Requirements Engineering is a critical process in Software Development that ensures stakeholder needs are accurately captured and articulated. The various phases from inception to validation are vital for the success of the software project.