CIS501 Assignment 4 (Project 1, Design)
10 points: due Friday, March 13
You will design a system that manages a database of bank accounts and ATMs at a bank.
Here is what the bank's management would like to implement:
-
A Database holding Customer records, where each record remembers the customer's name,
address, customer-number, and account numbers. (A customer can own multiple accounts.)
-
Another Database, this one holding Account records, where each record remembers an account number,
a customer-number
and balance.
-
A Teller, which is a Form that lets a bank teller (a human)
create a new customer account, create a new bank account, close a bank account,
close a customer account, add a deposit to
an account, do a withdrawal to an account, and check account balance.
-
Multiple (two or more) ATMs, where an ATM is a Form that lets a customer check an account's
balance and withdraw cash.
The Teller and ATMs are running in separate threads of execution,
so that the bank teller can work at the same time as customers use ATMs. This
will not affect your design. We will study multi-threading soon.
A real-life system would distribute the threads across multiple
hardware platforms, requiring a network protocol, but we will design
the entire system as one application, and we will implement it as one Visual Studio Solution.
Once our system works, a network expert can distribute its components.
Use cases
Here are the use cases that the management wants realized by the system:
- Interactions with the teller:
The teller is a person who uses the computerized Teller on a desktop computer.
You have some freedom in defining the appearance of the GUI:
-
A customer visits a teller and opens an new customer account by supplying
name and address. (We trust the teller to check IDs, etc.) The customer
receives a new customer-number.
-
A customer who is registered with the bank visits the teller and opens a new account
by supplying customer-number. The customer receives a new account number.
-
A customer with a bank-account number visits a teller and deposits money into the
account. The account's balance is updated and the customer gets a receipt.
-
A customer with a bank-account number visits a teller and asks for the account's
balance. The customer sees/is told the balance.
-
A customer with a bank-account number visits a teller and does a withdrawal.
The customer receives cash and the account's balance is updated.
-
A customer with a bank-account number visits a teller and closes the account.
-
A customer with a bank-account number visits a teller and closes
the customer account.
-
Interactions with an ATM:
The ATM is a Form that looks and behaves like the ones you've seen on the street: you enter your credentials using a key pad (buttons),
choose from a menu of actions, and complete the transaction:
-
A customer with a bank-account number uses an ATM to log in and obtain the account's
balance. The customer sees the balance.
-
A customer with a bank-account number uses an ATM to log in and withdraw cash.
The customer receives cash (we won't implement the cash!) and the account's balance is updated.
We will not model account PINs in the assignment, and we will not worry about database
backup, initialization, and archiving. These are important, but there is
enough to do already.
What you must do
You will apply the design techniques we have studied:
-
* For the use cases listed above,
you write use-case realizations. Then you extract the boundary (view) components,
controller components, and entity (model) components and their methods.
-
* You draw an object diagram that shows all the objects that are allocated once
the system is started and is in active use.
(If it is helpful, you may convert the object diagram(s) into communication
diagrams by labelling the arcs with the method calls from (one or more of)
the use-case realizations. This is not required.)
-
* You draw a class diagram that documents all classes, (important) fields
and methods in the classes, enumerations, interfaces, and delegates.
-
* For the controllers that implement the multi-stage use-cases,
you draw state diagrams to show what internal states each
controller requires.
Important
Note: the interaction between the ATMs and the databases
can be implemented in the Model-View-Presenter architecture (See Section 6.4.1 of Lecture 6), because an ATM uses a single, simple
GUI Form for all input and output. After you design the Teller,
you can decide which architecture works well for it. There is no single, best
answer --- designing a software system is like drawing the floor plans for
a family's house: there are lots of acceptable designs.
If you do this work properly, you will have a no-brainer job later of coding the system.
The design of a system should take about 50% of the time one spends on
the entire project.
What you must submit
Make a folder with the name, MyLastName.MyFirstName.Assn4, and copy into
it
-
at least three of the written-in-English
use-case realizations that you did of
the nine use cases listed above.
Submit these in a .txt or .doc or .pdf file.
-
an object diagram for the entire system.
Submit as a .pdf or .jpg file.
If you wish, you may also submit communication diagrams of use cases
you wrote for the previous step.
-
the class diagram of the entire system. Draw it with Nclass and submit as a .ncp file.
-
the
state diagrams for the controllers.
Submit as .pdf or .jpg files.
Note: I will accept .jpg files that are good quality photos
that you take of clear diagrams that you drew on paper. Bad quality photos/diagrams are scored
at zero points.
Zip the folder and upload on K-State Online.
Design-review meeting
The instructor will review your materials and meet with you one-on-one
for a design review. Be prepared to explain and
justify your design. Sign-ups for review meetings will happen soon.
The meetings will be held the week of March 23, just after spring break.
At the meeting,
the instructor might suggest changes to your design. The changes will
make it easier for you to code your system. (That's Part 2 of this Project --- implement your design.)
This is individual work
You must do this exercise solo. This is because I must assess the skills
you have acquired so far in your studies. If you have difficulties, we
can discuss what can be done to improve your abilities.
If I determine that you had unauthorized aid, I will award no points
for your work.