Chapter 4, Requirements Elicitation
Chapter 4, Requirements Elicitation
Elicitation
Chapter 4,
Requirements
Software Lifecycle Activities
Implemented
Expressed in By
Structured By Realized By
Terms Of Verified
By
class...
class...
class... ?
class.... ?
Use Case Application Implementat
Domain SubSystems Source Test
Model ion Domain
Objects Code Cases
Objects
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2
Requirements Elicitation Activities
Identify actors
Identify scenarios
Identify use cases
Identify relationships among use cases
Refine use cases
Identify nonfunctional requirements
Identify participating objects
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3
Defining the System Boundary:
What do you see?
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4
System Identification
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5
Products of Requirements Process
Requirements
Elicitation
system
specification
:Model
Analysis
analysis model
:Model
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6
System Specification vs Requirements Analysis Model
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7
Requirements Elicitation
Challenging activity
Requires collaboration of people with different backgrounds
User with application domain knowledge
Developer with implementation domain knowledge
Bridging the gap between user and developer:
Scenarios: Example of the use of the system in terms of a series of
interactions with between the user and the system
Use cases: Abstraction that describes a class of scenarios
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8
Types of Requirements
Functional requirements: Describe the interactions between the
system and its environment independent from implementation
The watch system must display the time based on its location
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9
What is usually not in the Requirements?
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10
Requirements Validation
Critical step in the development process,
Usually after requirements engineering or requirements analysis.
Also at delivery
Requirements validation criteria:
Correctness:
The requirements represent the client’s view.
Completeness:
All possible scenarios through the system are described,
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11
Requirements Validation Criteria (continued)
Realism:
Requirements can be implemented and delivered
Traceability:
Each system function can be traced to a corresponding set of
functional requirements
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12
Requirements evolution
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13
Types of Requirements Elicitation
Greenfield Engineering
Development starts from scratch, no prior system exists, the
requirements are extracted from the end users and the client
Triggered by user needs
Re-engineering
Re-design and/or re-implementation of an existing system using
newer technology
Triggered by technology enabler
Interface Engineering
Provide the services of an existing system in a new environment
Triggered by technology enabler or new market needs
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14
Scenarios
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15
Types of Scenarios
As-is scenario
Used in describing a current situation. Usually used during re-
engineering. The user describes the system.
Visionary scenario
Used to describe a future system. Usually described in greenfield
engineering or reengineering.
Can often not be done by the user or developer alone
Evaluation scenario
User tasks against which the system is to be evaluated
Training scenario
Step by step instructions designed to guide a novice user through a
system
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16
How do we find scenarios?
Don’t expect the client to be verbal if the system does not exist
(greenfield engineering)
Don’t wait for information even if the system exists
Engage in a dialectic approach (evolutionary, incremental)
You help the client to formulate the requirements
The client helps you to understand the requirements
The requirements evolve while the scenarios are being developed
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17
Heuristics for finding Scenarios
Ask yourself or the client the following questions:
What are the primary tasks that the system needs to perform?
What data will the actor create, store, change, remove or add in the
system?
What external changes does the system need to know about?
What changes or events will the actor of the system need to be
informed about?
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18
Summary
Requirements Elicitation:
Greenfield Engineering, Reengineering, Interface Engineering
Scenarios:
Great way to establish communication with client
As-Is Scenarios, Visionary scenarios, Evaluation scenarios Training
scenarios
Use cases: Abstraction of scenarios
Pure functional decomposition is bad:
Leads to unmaintainable code
Pure object identification is bad:
May lead to wrong objects, wrong attributes, wrong methods
The key to successful analysis:
Start with use cases and then find the participating objects
If somebody asks “What is this?”, do not answer right away. Return the
question or observe: “What is it used for?”
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19