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.