Attempt at writing a use case using WikiWiki technology. Version 1 is followed by commentary, which is followed by version 2.
Version 1: (author unknown)
Name: Use ATM Machine
Context of Use: The AtmCustomer wished to use the AtmMachine, for any of a number of things
Scope: AtmMachine
Level: SeaLevel? (This is actually a 'kite' level use case)
Primary Actor: AtmCustomer
Stakeholders and Interests:
Success Guarantees: Card and Receipt returned.
Minimal Guarantees: Transactions logged to failure or completion
Trigger: None
Main Success Scenario:
1. AtmCustomer executes the LogonToAtmSystem UseCase
2. The AtmMachine displays the MainMenu?
3. The AtmCustomer selects and executes one of the following UseCases:
* WithdrawCashFromAtm * DepositMoney? * TransferMoney? * AccountStatus?--Repeat Steps 2-3 until AtmCustomer selects EndSession?
4. The AtmMachine returns card and receipt to AtmCustomer
5. The AtmSystem? resets itself for next AtmCustomer.
-*The AtmMachine logs every step of this transaction.
Extensions:
1a. Extension Condition
1. step one 2. step two2a. Extension Condition
1. step one 2. step twoTechnology & Data Variations List:
Related Information:
Since the M stands for machine can this be changed to UseAtm?. OnceAndOnlyOnce applies to the English language, too. (However, ATM also is an acronym for Asynchronous Transfer Mode, a network protocol. The redundancy is clarifying.)
So call it UseAutomatedTellerMachine?.
Suggestions for improvement: How about rephrasing the MSS a bit to avoid "executes the XYZ UseCase" line; Drop the reference to the "screen"; AtmSystem? would be a typing error, since the system definition is AtmMachine (putting in the wiki links shows this); Merge the last two steps. Result, written in play style to allow wiki linking, looks like:
Version 2:
Main Success Scenario:
In the following, the AtmMachine must log every action it takes along the way, in case of abrupt failure.
1. AtmCustomer: LogonToAtmSystem
2. AtmCustomer: select and execute transactions as desired from the following until selecting to exit:
This is actually a "kite" level use case. WithdrawCashFromAtm is sea level
The guarantees are the wrong way around. The minimum is the return of the card, success is transactions complete.
The guarantees are correct... there is no guarantee that the card will be returned (e.g. stolen card, motor jamming on attempt to eject). There is no guarantee user will get money, or receipt, or pretty much anything. The mininal guarantee is only that events are logged along the way, so that people can later work out how far the transaction got before crashing.