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:''' * ''AtmCustomer'' -- Wants card and receipt. Wants all transactions to be successful. * ''BankManager'' -- Wants all transactions to be successful. * ''BankRegulator'' -- Wants all banking regulations to be followed '''Precondition:''' None '''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 two 2a. Extension Condition 1. step one 2. step two '''Technology & 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: * WithdrawCashFromAtm * DepositMoney * TransferMoney * AccountStatus 3. AtmMachine: return card and receipt, reset for next AtmCustomer. ------ 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.''