On June 4th 1996, I’ve met and talked with Ivar Jacobson — the ‘father of Use Case’ — at the Sydney Convention & Exhibition Center… after his presentation on Unified Modeling Language (UML 0.9 and 1.0) and of course ‘Use Case’. Since then, I’ve fully embraced Use Case Engineering (UCE).
Use Case Engineering is based on three cornerstones 1) analyze the users needs 2) design to fit those needs 3) certify that the needs are fulfilled.
Analyzing the Use Cases: there are two core concepts: 1) The Actors (users) and 2) the Use Cases.
Everything that interacts with the system represents an actor (humans and machines).
By focusing on the actors, you concentrate on how the system will be used instead of how it will be built or implemented.
A Use Case is a way to use the system… a user’s need. A feature of the system, if you will.
A Use Case is a sequence of transactions offered by the system, which produces a value to meet the goal of a particular actor.
In this light, it makes sense that one of the many ways of decomposing a feature is by way of Use Case scenarios.
Use Case versus Scenarios: If Use Cases are used to represent complex interactions, then the scenarios are the interesting instances of a Use Case.
Use Case/feature: Cash Withdrawal / As a user (bank customer), I can withdraw money at an ATM with my bank card.
Scenario (happy path) / story: … I’ve inserted a valid card, entered the correct pin, got my money and card back … and receipt.
Scenario (alternative path) / story … I’ve inserted a valid card, changed my mind and cancelled out, got back my card.
Scenario (exceptional) / story … inserted my card, ATM failure encountered, transaction aborted by ATM, got back my card.
Notice the sequencing (Use Case natural construct): happy path -> alternative path -> exceptional.
You can think of more interesting instances of this ‘ATM Cash Withdrawal’ Use Case/feature. Instances that you can use for stories…short stories that can fit in one sprint… and can stand and deliver value on their own.
We’ve just started … more on Use Case — as a way of decomposing a feature — coming up!
To be continued.