ATM Dr. Abdulaziz Almulhem. Almulhem©20012 Agenda ATM Features Services Protocol ATM switching.
Atm Simulator
-
Upload
syed-jamil -
Category
Education
-
view
9.764 -
download
28
description
Transcript of Atm Simulator
ATM Simulator
Software Life Cycle
Elicit requirements describe use cases
Create a specification Design
structure (classes and their relations) behavior state
Implement Deploy Maintain & Enhance
What about testing and documentation? Why aren't they listed as steps in the life cycle?
Unified Software Process
Iterative and Incremental Perform multiple iterations Incrementally (in each iteration) add functionality
Start with most important use cases or requirements
ATM Simulator
Design and implement an ATM Simulator that simulates the functions of a real ATM.
The ATM will support PIN authentication, balance inquiry, and withdrawal. If time permits, we will add deposit and transfers.
Goals Practice software development methodology using
UML, interfaces, and inheritance. Use O-O design to limit the complexity of
implementation.
ATM user interface (sort of)
Our Simulator will have more buttons than this.
ATM main menu (sort of)
Our Simulator may have more menu options than this.
ATM Phase 1
Develop requirements for an ATM with withdrawal and balance inquiry.
Implement a simple ATM engine and console interface. Determine what public methods (interface) are needed
for an ATM U.I. Determine what services are needed from the Bank
subsystem. For this phase, we will use a dummy Bank. It approves
all requests.
ATM Use Case: withdraw (1)
Description: Customer withdraws money from account
Actors:Bank customer with ATM card
Steps:
1. ATM machine displays greeting.
2. Customer inserts card.
3. ATM reads card and prompts customer for PIN.
4. Customer enters PIN.
5. ATM contacts Bank to verify customer's PIN.
6. Bank verifies PIN.
7. ATM prompts customer for transaction type.
8. Customer chooses withdraw.
ATM Use Case: withdraw (2)
9. ATM asks customer to enter amount to withdraw.
10. Customer enters amount.
11. ATM verifies it has bills to provide this amount.
12. ATM contacts Bank to verify customer can withdraw the requested amount.
13. Bank verifies withdraw and debits customer's acct.
14. ATM dispenses amount and prompts customer to take money.
15. Customer takes money.
ATM Use Case: withdraw (3)
16. ATM prints receipt and prompts customer to take it.
17. Customer take receipt.
18. ATM asks customer if he wants another transaction.
19. Customer selects "no" option.
20. ATM returns customer's card.
21. Customer takes card.
ATM Use Case: withdraw (4)
Extensions and Alternatives:
Scenario: step 3, ATM cannot read valid acct number from ATM card.
3a. ATM prints message describing problem.
3b. execute steps 20-21 of main course.
Scenario: step 6. Bank indicates PIN is incorrect.
6a. if count of failed PIN attempts is < 3, goto step 3. Otherwise, execute steps 20-21 of main course.
Scenario: step 11, customer's entry is not a number or ATM cannot dispense the requested amount.
11a. Display message describing problem.
11b. Return to step 9.
ATM Use Case: withdraw (5)
Extensions and Alternatives:
Scenario: at any time after authentication the customer presses CANCEL button.
__a. Return customer's card and prompt him to take it.
Extension: a customer may have more than one account. Enable customer to choose account for withdrawal.
Issue: if customer presses CANCEL should ATM return card or return to option's menu?
Issue: after 3 failed PIN attempts should ATM notify Bank for security reasons? I.e., temporarily lock-out this ATM card.
ATM Use Case: balance inquiry (1)
Description: Customer inquires his account balance
Actors:Bank customer with ATM card
Steps:
1. ATM machine displays greeting.
2. Customer inserts card.
3. ATM reads card and prompts customer for PIN.
4. Customer enters PIN.
5. ATM contacts Bank to verify customer's PIN.
6. Bank verifies PIN.
7. ATM prompts customer for transaction type.
8. Customer chooses balance inquiry.
ATM Use Case: balance inquiry (2)
To be completed.
ATM Use Case: deposit (1)
Description: Customer deposits funds (cash or checks) in account using a deposit envelop
Actors: Bank customer with ATM card and funds
Steps:
1. ATM machine displays greeting.
2. Customer inserts card.
3. ATM reads card and prompts customer for PIN.
4. Customer enters PIN.
5. ATM contacts Bank to verify customer's PIN.
6. Bank verifies PIN.
7. ATM prompts customer for transaction type.
8. Customer chooses deposit.
ATM Use Case: deposit (2)
To be completed.
Use Case Factoring and Diagram
Factor out common behavior from the use cases. Steps 1 - 7 are the same in all use cases. Displaying menu and choosing an option is another
common task.
Draw a Use Case Diagram. Helpful for visually actors and components. Free UML editor: ArgoUML (argouml.tigris.org)
Specification
Use cases help you identify what a system should do. A software specification document clarifies what the
program should do. This is usually part of a software contract. Can be formal or informal, but must be written.
Specification will help identify classes and responsibilities.
Structure: identify classes
Nouns in the requirements document.
Nouns and noun phrases in the requirements document
bank money / funds account number
ATM screen PIN
user keypad bank database
customer cash dispenser balance inquiry
transaction $20 bill / cash withdrawal
account deposit slot deposit
balance deposit envelope
Source: Dietel & Dietel, Java, How to Program.
Modeling Classes
UML class diagrams Allows suppression of class attributes and
operations Called an elided diagram
Solid line that connects two classes represents an association
numbers near end of each line are multiplicity values
Class Diagram with Association
Attributes and methods are omitted ("elided") In early design phase, concentrate on identifying
classes and responsibilities first. numbers near end of each line are multiplicity
Modeling Classes
UML class diagrams Solid diamonds attached to association lines
indicate a composition relationship Hollow diamonds indicate aggregation – a
weaker form of composition
Class diagram for ATM U.I.
Association and Composition Used when one object "owns" or controls another Solid diamonds indicate composition relationship:
the ATM is composed of these parts; the parts do not exist without the whole (ATM)
Source: Dietel & Dietel, Java, How to Program
Class diagram for ATM U.I. Association and Composition
Hollow (open) diamonds indicate association relationship: the whole possesses these parts, but the parts can exist without the whole.
Examples: a Stack has a LinkedList, a Mailbox has Messages
LinkedList
addFirstaddLastaddAfterremoveFirstremoveLastdeleteisEmpty
Stack
pushpopisEmpty
Diagram for ATM with WithdrawalHowever, in our implementation we will separate UI from ATM functionality (deposit, withdraw, etc).
Source: Dietel & Dietel, Java, How to Program
ATM with Separate User Interface Separate ATM user interface from the class(es) that provide ATM
functionality. user interface is screen, keypad, card slot, money dispenser, etc.
Create a Java interface to define public methods.
<<interface>>
ATMInterface
displayMessage ATMsim
deposit( )withdraw( )balanceInquiry( )
ATM UI
atmUI: ATMInterface
ATM( atmUI )
<<ATM Logic Engine>>
ATM with Separate User Interface Benefits of using an interface:
you can change the actual user interface without changing any other parts of the system
Example:
a class implementing ATMInterface is responsible for displaying messages, accepting input from keypad, reading ATM card, returning ATM card, printing receipts, and dispensing cash
for a GUI interface, we may decide to divide these responsibilities into separate classes
one main class, called a Façade, acts as interface between ATM Engine and the various component classes.
ATM with Separate User Interface Separate ATM user interface from the class(es) that provide ATM
functionality. user interface is screen, keypad, card slot, money dispenser, etc.
Create a Java interface to define public methods.
<<interface>>
ATMInterfacedisplayMessage ATM
deposit( )withdraw( )balanceInquiry( )
ATM GUI
atmUI: ATMInterface
ATM( atmUI )
<<ATM Logic Engine>>
Keypad
Screen
Card Slot
Identify Class Responsibilities What are the main responsibilities of each class?
responsibilities are usually activities or actions if a class doesn't have any responsibilities, it can be eliminated
Example: initially write a console-based U.I.
Later we will write a GUI for ATM. multiple programmers can work on different parts of project
simultaneously helps to limit complexity and enforce good design
Identifying Class Attributes
Identifying attributes Look for descriptive nouns and phrases in the
requirements document Eliminate some nouns:
(1) redundant, (2) abstract, (3) describe instances, (4) outside the problem boundary (domain)
Create attributes and assign them to classes
Possible Attributes for ATM System
First Iteration
Ignore the Bank and Account components. No GUI interface. Design a basic ATM engine, ATM interface (Java
interface), and console-based UI. Handle only a few transactions: withdraw, fast cash.
Design: use a state chart
A state chart diagram can help understand behavior.
Wait for an ATM user
Transaction Loop
Start
error
Fail < 3 times
Verify ATM card
Verify PIN Code
Fail 3 times or Cancel
End Session /Return ATM card
[Invalid/unreadable card]
Transaction Loop
UML state chart diagram for transaction loop
Display Transactions Menu
Deposit dialog Withdraw dialogShow Balance
get deposit envelop
error
OK
Transaction Loop
END
Exit
OK
OK
verify input andavailable balance
fail
OK
OK
cancelcancel
"Deposit" action "Inquiry" action "Withdraw" action
Second Iteration (due Tues 6/9/2005)
implement the ATMInterface.java as a console interface.
write an ATM simulator that does this: read ATM card and PIN display transaction menu handle withdraw, fast cash, and balance inquiry use the ATMInterface for all I/O
Design a Transaction class to encapsulate transactions.