ATM Specification – State Tables

Download Report

Transcript ATM Specification – State Tables

ATM Specification
Modules
CS - central service
ID - input drawer
CR - card reader
UI - user interface (screen, keyboard,
speaker, etc.)
RP - receipt printer
WV - withdraw vault
BS - bill slot
SC - money scanner
DV - deposit vault
Insert Card / Auth. / Eject Card
pre-state
sender input message
Welcome
CR
Checking card support
(card data)
Checking card support
(card data)
Waiting for PIN (card data)
CS
receiver output message
card inserted (card
data)
response: supported
CS
UI
response: unsupported
(details)
entered pin (pin)
CS
post-state
Checking card support (card data)
UI
check card support
(card data)
enter PIN screen
UI
error details screen
Ejecting card (card data)
CS
authenticate (card
data, pin)
Authenticate (card data, pin)
Accounts list
UI
CS
Reject(details)
UI
select accounts
(account list)
enter PIN screen
Account select (card data, account
list, pin)
Waiting for PIN (card data)
CS
Confiscate
CS
<nothing>
Confiscating card (card data, "Card
revoked")
<nothing>
timeout
CR
eject card
<nothing>
card removed
<nothing>
UI
CR
Ejected card (card data)
Confiscating card (card data, "card
not taken")
Welcome
Card confiscated (card data, reason)
<nothing>
CS
welcome screen
send card to
confiscated card stack
card confiscated (card Welcome
data, reason)
CS
Waiting for PIN (card data)
Authentication
Authenticate (card data,
pin)
Authenticate (card data,
pin)
Authenticate (card data,
pin)
Ejecting card
Ejecting card (card data)
Ejected card (card data)
Ejected card (card data)
Confiscating card (card
data, reason)
Card confiscated (card
data, reason)
CR
Account Selection / Balance
pre-state
Account select (card data,
pin, account list)
Supported transactions
(card data, pin, account)
Main menu
Main menu (card data, pin,
account, transactions)
Main menu (card data, pin,
account, transactions)
Main menu (card data, pin,
account, transactions)
Main menu (card data, pin,
account, transactions)
sender input message
receiver output message
UI
selected account (account)
CS
CS
transactions
UI
UI
transaction selected
(Balance)
transaction selected
(Withdraw)
transaction selected
(Deposit)
cancel
UI
UI
UI
post-state
supported transactions
Supported transactions (card data,
(card data, pin, account)
pin, account)
main menu (transactions) Main menu (card data, pin, account,
transactions)
<nothing>
Balance (card data, pin, account)
<nothing>
Withdraw (card data, pin, account)
<nothing>
Deposit (card data, pin, account)
<nothing>
Ejecting card (card data)
Balance
Balance (card data, pin,
account)
Retrieving balance (card
data, pin, account)
Receipt screen (card data,
pin, account, amount,
currency)
Receipt screen (card data,
pin, account, amount,
currency)
<nothing>
CS
retrieve balance on account Retrieving balance (card data, pin,
(card data, pin, account)
account)
UI
UI
response: balance(amount,
currency)
Yes
display balance (amount,
currency)
<nothing>
Receipt screen (card data, pin,
account, amount, currency)
Print receipt (card data, (amount,
currency))
UI
No
<nothing>
Ejecting card (card data)
CS
Withdraw
pre-state
input message
Withdraw (card data, pin,
account)
Supply response (card data, pin,
account)
Select withdrawal currency (card
data, pin, account)
Select amount (card data, pin,
account, currency)
<nothing>
output message
WV check remaining supply
Supply response (card data, pin,
account)
select currency screen (list of Select withdrawal currency (card
currencies)
data, pin, account)
select amount screen
Select amount (card data, pin,
(currency)
account, currency)
get withdraw fee (card data, Withdraw fee result (card data, pin,
pin, account, amount,
account, currency)
currency)
<nothing>
Select custom amount(card data,
pin, account, currency)
enter amount screen
Entering amount (card data, pin,
account, currency)
get withdraw fee (card data, Withdraw fee result (card data, pin,
pin, account, amount,
account, currency, amount)
currency)
select amount screen
Select amount (card data, pin,
(currency)
account, currency)
WV list of (banknote,
amount)
UI currency
UI
UI amount
CS
Select amount (card data, pin,
account, currency)
Select custom amount(card data,
pin, account, currency)
Entering amount (card data, pin,
account, currency)
UI select custom
amount
<nothing>
UI
UI amount
CS
Entering amount (card data, pin,
account, currency)
UI invalid amount
UI
Withdraw fee result (card data,
pin, account, currency, amount)
Confirm transaction (card data,
pin, account, currency, amount)
Confirm transaction (card data,
pin, account, currency, amount)
CS fee
UI confirm transaction screen
(amount, currency, fee)
<nothing>
UI Confirm
UI Cancel
post-state
UI
<nothing>
Confirm transaction (card data, pin,
account, currency, amount)
Withdraw money (card data, pin,
account,currency, amount)
Ejecting card (card data)
Withdrawing and ejecting money
pre-state
input message
Withdraw money (card data, pin,
account,currency, amount)
<nothing>
output message
CS
Withdrawing money (card data, pin,
account,currency, amount)
CS Accepted (transaction ID)
Withdrawing money (card data, pin,
account,currency, amount)
Withdrawing money (card data, pin,
account,currency, amount)
Ejecting money (card data, pin, account,
amount, currency, transaction ID)
CS Rejected (reason)
withdraw amount from
account (card data, pin,
account, amount, currency)
WV retrieve money from
withdrawing vault (array of
bills)
UI Some error message
CS Communication failure
UI
BS bills taken
Ejecting money (card data, pin, account,
amount, currency, transaction ID)
timeout
BS
Forgotten money (card data, pin, account,
amount, currency, transaction ID)
<nothing>
CS
post-state
Withdrawing money (card data, pin,
account,currency, amount)
Some error message
Ejecting card (card data)
<nothing>
Print receipt (card data, (account,
amount, currency, transaction ID))
send money to forgotten
money vault
Ejecting money (card data, pin,
account, amount, currency, transaction
ID)
Ejecting card (card data)
Forgotten money (card data, pin,
account, amount, currency, transaction
ID)
money not taken (card data, Ejecting card (card data)
pin, account, currency,
transaction ID)
Deposit
pre-state
input message
Deposit (card data, pin, account)
<nothing>
CapacityResponse (card data, pin,
account)
Select deposit currency (card data,
pin, account)
DV list of (banknote,
amount)
UI currency
Deposit(card data, pin, account,
note+coin list, currency)
Deposit(card data, pin, account,
note+coin list, currency)
EnsureCapacity(card data, pin,
account, note+coin list, currency)
EnsureCapacity(card data, pin,
account, note+coin list, currency)
Deposit Done(card data, pin,
account, note+coin list, currency)
SC valid money inserted
(note+coin list)
UI Done
Deposit Done(card data, pin,
account, note+coin list, currency)
StoreMoney(card data, pin, account,
note+coin list, currency)
StoreMoney(card data, pin, account,
note+coin list, currency)
StoreMoney(card data, pin, account,
note+coin list, currency)
ShowReason(reason,card data)
DV OK
DV NOT-OK
UI Confirm
UI Cancel
output message
DV
post-state
check remaining capacity
CapacityResponse (card data, pin,
account)
UI select currency screen (list of Select deposit currency (card data, pin,
currencies)
account)
{SC, UI} enable and set currency at Deposit(card data, pin, account,
SC and update UI with input note+coin list = {}, currency)
money message
UI Show current valid amount Deposit(card data, pin, account,
note+coin list, currency)
DV Check space
EnsureCapacity(card data, pin, account,
note+coin list, currency)
UI Show confirmation screen
Deposit Done(card data, pin, account,
note+coin list, currency)
{SC, UI} Eject money and update UI Ejecting card (card data)
CS
deposit amount y on account StoreMoney(card date,pin,account,
(card data, pin, account,
currency)
amount, currency)
{SC, UI} Eject money and update UI Ejecting card (card data)
CS Accepted(transaction
ID)
CS Rejected(reason)
SC
send money to vault
SC
return money
Print receipt (card data, (account,
amount, currency, transaction ID))
ShowReason(reason,card data)
CS Communication failure
SC
return money
ShowReason(reason,card data)
SC Money returned
UI
Display some message
Ejecting card (card data)
Print receipt
pre-state
Print receipt (card data, data)
PR checking paper (card data,
data)
PR checking paper (card data,
data)
PR checking ink (card data,
data)
PR checking ink (card data,
data)
Print receipt confirming (card
data, data)
Print receipt confirming (card
data, data)
(card data)
checking, card data
input message
<nothing>
RP OK
RP
RP
RP NOT-OK
RP OK
UI
RP NOT-OK
UI Ok
UI Cancel
every 5 seconds
CS: jam
RP
output message
post-state
check paper status
check ink status
PR checking paper (card data, data)
PR checking ink (card data, data)
<nothing>
Ejecting card (card data)
Print receipt? screen
<nothing>
Print receipt confirming (card data,
data)
Ejecting card (card data)
print(data)
Ejecting card (card data)
<nothing>
Ejecting card (card data)
HW: check status
CS: malfunction
checking, card data
out-of-order