Escolar Documentos
Profissional Documentos
Cultura Documentos
Query Account
include
Validate PIN
Startup
Shutdown
Bank
Figure 19.2 Conceptual static model for Banking System - Problem Domain
Bank
Has
1..*
Authenticated Customer
Site Visitor
Maintains
Bank Operator
1
Authenticated Customer
1
Acc. Balance
1
Cash Transfer
1
Acc. Update
1. Reads
Balance
1.Cash
Transferre d
1. Reads
Updated Bal.
Figure 19.4 Conceptual static model for Banking System - entity classes
entity Bank
1 1
Maintains
1..*
Manages
Has
Identifies
1..*
Owns entity Customer Provides 1..* Access to Owns
1..*
1..* 1,2
Modifies
* *
entity Online Transaction
entity Account
entity Acc. Details entity Checking Account entity Savings Account entity PINValidation Transaction
Interest:Real
entity ATMCash cashAvailable: Integer fives: Integer tens: Integer twenties: Integer
1 1 1
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
input/output device interface CardReader Interface output device interface ReceiptPrinter Interface
1 1
1 ATM Customer 1 external output device CashDispenser 1 1 output device interface CashDispenser Interface external user ATMCustomer 1 1 user interface CustomerInterface
Operator
entity output device interface ReceiptPrinter Interface ATMTransaction user interface entity ATMCard output device interface CashDispenser Interface entity ATMCash CustomerInterface
Figure 19.12 Collaboration diagram: ATM Client - Validate PIN use case
1: Card Reader Input
subsystem :BankServer
2.6 [Valid]:
entity :ATMCard
2.4: PIN Entered (Customer Info) 1.3: Get PIN 2.7: Display Menu 2.3: Customer Info 2.7a: Update Status
2.2: Card Data 1.4: Pin Prompt 2.8: Selection Menu 2: PIN Input :ATMCustomer
Copyright 2000 H.Gomaa
entity :ATMTransaction
1.1: Card Input Data 1.2 : Card Inserted 1.3: Get PIN
2.2: Card Data 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 2.3: Customer Info
Figure 19.14 Statechart for ATM Control - Validate PIN use case
1.2: Card Inserted / 1.3: Get PIN
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
Figure 19.15 Collaboration diagram ATM Server - Validate PIN use case
subsystem : ATMClient V1: PIN Validation Request (Card Id, PIN) V6: PIN Validation Response (Status)
business logic : PINValidation TransactionManager V2: Validate (Card Id, PIN) V3: Card V5: Data V4: Read Account (Card Id) Numbers entity : CardAccount
entity :DebitCard
Figure 19.16 Collaboration diagram: ATM Client - Withdraw Funds use case
subsystem :BankServer 3.4: Request Withdrawal (Transaction Details) 3.11b: ACK Cash Dispensed 3.5: Withdrawal OK (Cash Details) output device interface :CashDispenser Interface external output device :CashDispenser
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 3.3 Withdrawal Selected :ATMControl (Transaction details) 3.15: Receipt Printed 3.6a: Update Status (Cash Details)
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
Figure 19.17 Sequence diagram - ATM Client Withdraw Funds use case
I/Odi :ATM Customer :CardReaderInterface sdc user interface :ATMControl :CustomerInterface 3: Selection Input entity :ATM Transaction 3.1: Customer Selection odi :Cash Dispenser Interface entity :ATMCash odi :Receipt Printer Interface 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.16: Eject 3.17: Card Reader Output 3.18: Card Ejected 3.20: Card Ejected Prompt
pyr
Co
Figure 19.18 Statechart for ATM Control - Withdraw Funds use case
Idle Entry /
Display Welcome After (Elapsed Time) [Closedown not Requested]
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 3.5: Withdrawal Ok / 3.6: Dispense Cash, 3.6a: Update Status
Processing Withdrawal
Figure 19.19 Collaboration diagram ATM Server - Withdraw Funds use case
subsystem :ATMClient W1: Withdrawal Request (Transaction Details) W8: Withdrawal Response (Cash Details)
business logic :WithdrawalTransaction Manager W4: Debit (Account #,Amount) W2: Check Daily Limit (Card Id,Amount) W7: Log Transaction
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 3.3: Withdrawal Selected / 3.4: Request Withdrawal, 3.4a: Display Wait
Copyright 2000 H.Gomaa
Rejected / Eject, Display Apology Transfer Ok / Print Receipt, Update Status Processing Transaction Query Ok / Print Receipt, Update Status
Figure 19.21 Statechart for ATM Control Processing Customer Input superstate
1.2: Card Inserted / 1.3: Get PIN Processing Customer Input
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
Processing Transaction Transfer Selected / Request Transfer, Display Wait Query Selected / Request Query, Display Wait 3.3: Withdrawal Selected / 3.4: Request Withdrawal, 3.4a: Display Wait Processing Transfer
Transfer Ok / Print Receipt, Update Status Query Ok / Print Receipt, Update Status
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 3.10: Cash Dispensed / 3.11: Print Receipt, 3.11a: Display Cash Dispensed 3.11b: ACK Cash Dispensed 3.5: Withdrawal Ok / 3.6: Dispense Cash, Insufficient Cash / Eject Card Confiscated / Display Confiscated 3.18: Card Ejected / 3.19: Display Ejected
Rejected / Eject, Display Apology Transfer Ok / Print Receipt, Update Status Query Ok / Print Receipt, Update Status
Copyright 2000 H.Gomaa
Dispensing
Eject, Confiscate
entity :ATMCash Cash Added user interface :Operator Interface Operator Information
:Operator
Transaction Data
Transaction details
Transaction Request
Replenishes
Notifies
Controls
Creates
ATM Transaction
Reads
Transfer Response
Transfer Transaction
Query Transaction
Query Response
Account Data
Read
PIN Validation Response business logic :PINValidation TransactionManager Check, Update Validate Read
Account Data
Account Data
entity :SavingsAccount
Figure 19.27 Subsystem design - high level collaboration diagram for Banking System
external I/O device :CardReader cardReader Input system :BankingSystem customerInput display Information
:ATMCustomer
cardReader Output
operator Input
operator Information
printer Output
dispenser Output
Figure 19.28 Subsystem interfaces - high level concurrent collaboration diagram for Banking System
external I/O device :CardReader cardReader Input system :BankingSystem
cardReader Output
ATMTransaction bankResponse
operator Input
operator Information
printer Output
dispenser Output
Figure 19.29 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 Card Inserted , Card Ejected, Card Confiscated Eject, Confiscate control clustering :ATMController Customer events (Transaction details) bankResponse
Card Data
Operator Input
Card Request Update Transaction Status (Cash Details), Update PIN Status, Transaction Request Transaction Data
Printer Output
Transaction details
Figure 19.30 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 cardInserted , cardEjected, cardConfiscated eject, confiscate withdrawCash (in cashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense) control clustering :ATMController customerEvent (transactionDetails) update TransactionStatus (cashDetails), updatePINStatus display (status), Prompts read (out transaction Data) updateCustomerInfo (cardData, PIN) , updateCustomerSelection (in selection, out data transactionDetails) abstraction :A T M Transaction startUp, closedown data abstraction :ATMCash
addCash (in fivesAdded, in tensAdded, in twentiesAdded)
bank Response
operator Input
Customer Input
printer Output
Figure 19.31 ATMClient information hiding classes data abstraction ATMCard - cardNumber : String - startDate : Date - expirationDate : Date + write (in cardData) + read (out cardData) 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)
send (in ATMControlRequest) send (in displayPrompt) user interface : CustomerInterface receive (out displayPrompt) connector promptMessage Queue
printerOutput
dispenserOutput
coordinator BankTransaction Server Delegates to business logic QueryTransaction Manager Reads Delegates to
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 Debit, Credit, Read Account Data Log Log database wrapper :Checking Account
Copyright 2000 H.Gomaa
PIN Validation Response business logic :Withdrawal TransactionManager business logic :PINValidation TransactionManager
Account Data
Account Data
Account Data
Check, Update Card Data Daily Limit Response database wrapper :DebitCard Validate Read Account Numbers database wrapper :CardAccount
+ 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)
Figure 19.36c Bank Server information hiding classes database wrapper Account
+ readBalance (accountNumber): Real + credit (accountNumber, amount) + debit (accountNumber, amount) + open (accountNumber) + close (accountNumber)
subsystem :ATMClient
Figure 19.37 Concurrent collaboration diagram for Bank Server subsystem- architecture
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
:BankServer {1 node}