ATM - Design - PDF Atm Design
ATM - Design - PDF Atm Design
Query Account
include
Validate PIN
include
ATM Customer
Startup
Shutdown
Operator
1..*
ATM
Maintains ATM
Operator
1
ATMCustomer
1
CardReader
1
CashDispenser
1
ReceiptPrinter
1 Reads 1
ATMCard
1 Dispenses 1
ATMCash
1 Prints 1
Receipt
1..*
Inputs To Outputs To
1 1
Operator
1 1
Outputs To
1 1 1
Interacts With
1..*
Outputs To
1..*
1 1
Maintains
1..*
entity ATMInfo
Manages
Has Identifies
1..*
Owns entity Customer Provides 1..* Access to Owns
1..*
1..* 1,2
Modifies
* *
entity ATMTransaction
entity Account
entity CheckingAccount
lastDepositAmount: Real
interest: Real
entity ATMCash cashAvailable: Integer fives: Integer tens: Integer twenties: Integer
1 1
include
include Client Withdraw Funds include Add Cash Client Query Account include Client Transfer Funds Shutdown include Server Transfer Funds include Server Query Account Server Withdraw Funds
include
Startup
Operator
entity output device interface ReceiptPrinter Interface ATMTransaction user interface entity ATMCard output device interface CashDispenser Interface CustomerInterface
entity ATMCash
subsystem :BankServer
1.2: Card Inserted 2.5: Validate PIN (Customer Info) 2.6 [Valid]: Valid PIN
entity :ATMCard 2.4: PIN Entered (Customer Info) 1.3: Get PIN 2.2: Card Data 1.4: Pin Prompt 2.8: Selection Menu 2: PIN Input :ATMCustomer 2.1: Card Request 2.7: Display Menu 2.3: Customer Info 2.7a: Update Status
entity :ATMTransaction
1.1: Card Input Data 1.2 : Card Inserted 1.3: Get PIN
1.4: PIN Prompt 2: PIN Input 2.1: Card 2.2: Card Request Data 2.3: Customer Info 2.4: PIN Entered 2.5: Validate PIN 2.6[Valid]: Valid PIN 2.7: Display Menu 2.7a: Update Status 2.8: Selection Menu
Idle
Entry/ Display Welcome
Waiting for PIN 2.4: PIN Entered / 2.5: Validate PIN Validating PIN
2.6: Valid PIN / 2.7: Display Menu, 2.7a: Update Status Waiting for Customer Choice
entity : DebitCard
entity : CardAccount
3.6: Dispense Cash (Cash details) 3.7: Cash 3.8: Cash Response 3.18: Card Withdrawal I/O device Ejected Amount interface 3.10: Cash :CardReader entity Dispensed Interface :ATMCash 3.16: state dependent Eject control :ATMControl 3.3 Withdrawal Selected (Transaction details) 3.15: Receipt Printed 3.6a: Update Status (Cash Details) 3.11: Print Receipt
3.4a.1 : Wait Prompt 3.11a.1: Cash Dispensed Prompt 3.20: Card Ejected Prompt
3.4a: Display Wait 3.11a: Display Cash Dispensed 3.19: Display Ejected 3.1: Customer Selection 3.2: Transaction details
3.12:Transaction Request output device interface :ReceiptPrinter 3.13: Interface Transaction Data
entity :ATMCash
subsystem :BankServer
3.2: Transaction Details 3.3: Withdrawal Selected 3.4: Request Withdrawal 3.4a: Display Wait 3.4a.1: Wait Prompt 3.5: Withdrawal OK 3.6: Dispense Cash 3.6 a: Update Status 3.7: Cash Withdrawal Amount 3.8: Cash Response 3.9: Dispenser Output 3.10: Cash Dispensed 3.11: Print Receipt 3.11a: Display Cash Dispensed 3.11b: 3.11a.1: Cash Dispensed Prompt 3.14: Printer Output 3.17: Card Reader Output 3.16: Eject 3.15: Receipt Printed
Terminating 3.18: Card Ejected / 3.19: Display Ejected Ejecting 3.15: Receipt Printed / 3.16: Eject Waiting For Customer Choice 3.3: Withdrawal Selected / 3.4: Request Withdrawal, 3.4a: Display Wait Printing
3.10: Cash Dispensed / 3.11: Print Receipt, 3.11a: Display Cash Dispensed 3.11b: ACK Cash Dispensed Dispensing
Processing Withdrawal
business logic :WithdrawalTransaction Manager W4: Debit (Account #,Amount) W2: Check Daily Limit (Card Id,Amount)
W5: Account W6: Update Daily Total Data (Card Id, Amount) entity :Account
entity :DebitCard
entity :TransactionLog
Closed Down
Entry / Display System Down Startup 1.2: Card Inserted / 1.3: Get PIN Closedown
Idle
Entry / Display Welcome After(Elapsed Time)[Closedown not Requested]
Terminating Transaction
Transfer Selected / Request Transfer, Display Wait Query Selected / Request Query, Display Wait
Rejected / Eject, Display Apology Transfer Ok / Print Receipt, Update Status Processing Transaction Query Ok / Print Receipt, Update Status
Idle
Entry/ Display Welcome Cancel / Eject, Display Cancel
Waiting for PIN 2.4: PIN Entered / 2.5: Validate PIN Invalid PIN / Invalid PIN Prompt, Update Status
Validating PIN
2.6: Valid PIN / 2.7: Display Menu, 2.7a: Update Status Waiting for Customer Choice Transfer Selected / Request Transfer, Display Wait
Processing Transaction Transfer Selected / Request Transfer, Display Wait Processing Transfer
Transfer Ok / Print Receipt, Update Status Query Ok / Print Receipt, Update Status
Query Selected / Request Query, Display Wait 3.3: Withdrawal Selected / 3.4: Request Withdrawal, 3.4a: Display Wait
Processing Query
Processing Withdrawal
Idle
Entry / Display Welcome
Terminating Transaction Terminating Cancel / Eject, Display Cancel Third Invalid, Stolen / Confiscate Confiscating Ejecting 3.15: Receipt Printed / 3.16: Eject Printing Insufficient Cash / Eject Card Confiscated / Display Confiscated 3.18: Card Ejected / 3.19: Display Ejected
Transfer Ok / Print Receipt, Update Status Query Ok / Print Receipt, Update Status 3.5: Withdrawal Ok / 3.6: Dispense Cash, 3.6a: Update Status
3.10: Cash Dispensed / 3.11: Print Receipt, 3.11a: Display Cash Dispensed 3.11b: ACK Cash Dispensed Dispensing
Eject, Confiscate
entity :ATMCash Cash Added user interface :Operator Interface Operator Information
:Operator
Transaction Data
Transaction details
Transaction Request
Notifies
Creates
ATM Transaction
Reads
Transfer Response
Query Response
Account Data
Read
PIN Validation Response business logic :PINValidation TransactionManager Check, Update Validate Read
Account Data
Account Data
Debit, Credit, Read Daily Limit Response Card Data entity :DebitCard Account Numbers entity :CardAccount
entity :SavingsAccount
cardReader Output
ATM Transactions
display Information
:ATMCustomer
Bank Responses
operator Input
operator Information
printer Output
dispenser Output
Subsystem interfaces - high level concurrent collaboration diagram for ATM System
external I/O device :CardReader cardReader Input system :BankingSystem
cardReader Output
customerInput
ATMTransaction
display Information
:ATMCustomer
bankResponse
operator Input
operator Information
printer Output
dispenser Output
Task Architecture - initial concurrent collaboration diagram for ATM Client subsystem
subsystem :BankServer ATM Transaction Card Reader Input client subsystem :ATMClient asynchronous I/O device interface :CardReader Interface Card Input Data data abstraction :ATMCard bankResponse
Card Inserted , Card Ejected, Card Confiscated Eject, Confiscate control clustering :ATMController Customer events (Transaction details)
data abstraction :ATMCash Cash Added user interface :Operator Interface Operator Input
Card Data
Card Request Update Transaction Status (Cash Details), Update PIN Status, Transaction Request Transaction Data
Printer Output
Transaction details
Task Architecture - revised concurrent collaboration diagram for ATM Client subsystem
subsystem :BankServer ATM Transaction card Reader Input client subsystem :ATMClient asynchronous I/O device interface :CardReader Interface write (card Data) data abstraction :ATMCard bank Response
withdrawCash (in cashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense) control clustering :ATMController data abstraction :ATMCash
addCash (in fivesAdded, in tensAdded, in twentiesAdded)
customerEvent (transactionDetails)
startUp, closedown
Customer Input
update TransactionStatus (cashDetails), updatePINStatus display (status), Prompts read (out transaction Data) updateCustomerInfo (cardData, PIN) , updateCustomerSelection data (in selection, out abstraction transactionDetails) :ATM Transaction
operator Input
printer Output
ATMClient information hiding classes data abstraction ATMCard - cardNumber : String - startDate : Date - expirationDate : Date data abstraction ATMCash - cashAvailable : Integer = 0 - fives : Integer = 0 - tens : Integer = 0 - twenties : Integer = 0
+ addCash (in fivesAdded, in tensAdded, in twentiesAdded) + withdrawCash (in cashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense)
connector bankServerProxy
send (in ATMControlRequest) send (in displayPrompt) user interface : CustomerInterface receive (out displayPrompt) connector promptMessage Queue
printerOutput
dispenserOutput
Delegates to
coordinator BankTransaction Server Delegates to business logic QueryTransaction Manager Reads Delegates to
Checks, Credits, Updates Debits, Reads Credits, Debits, Validates Reads Reads Credits, Debits, Reads entity Savings Account
Queries
entity TransactionLog
coordinator :BankTransactionServer Transfer Transaction Query Transaction Transfer Response business logic :Transfer TransactionManager business logic :Query TransactionManager Read Read Check, Update Query Response Withdraw Response business logic :Withdrawal TransactionManager Withdraw, Confirm, Abort PIN Validation Request
Account Data
Account Data Log Log Log database wrapper :TransactionLog Debit, Credit, Read
Account Data
+ initialize ( ) + withdraw (in accountNumber, in amount, out w_response) + confirm (accountNumber, amount) + abort (accountNumber, amount)
database wrapper DebitCard database wrapper CardAccount + create (cardId) + validate (cardId, PIN) + updatePIN (cardId, PIN) + checkDailyLimit (cardId, amount) + updateDailyTotal (cardId, amount) + updateExpirationDate (cardId, expirationDate) + updateCardStatus (cardId, status) + updateDailyLimit (cardId, newLimit) + clearTotal (cardId) + read (in cardId, out PIN, out expirationDate, out status, out limit, out total) + delete (cardId)
+ readBalance (accountNumber): Real + credit (accountNumber, amount) + debit (accountNumber, amount) + open (accountNumber) + close (accountNumber)
subsystem :ATMClient
coordinator :BankTransaction Server transfer (in fromAccount#, in toAccount#, in amount, out t_response) query (in account#, out q_response)
withdraw (in account#, in amount, out w_response), confirm (account#, amount), abort (account#, amount)
debit (account#, amount), credit (account#, amount), readBalance log (in transaction) checkDailyLimit (cardId, amount), updateDailyTotal (cardId, amount)
log (in transaction) debit (account#, amount), credit (account#, amount), readBalance
debit (account#, amount), credit (account#, amount), database readBalance wrapper :TransactionLog
:BankServer {1 node}