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:

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:
  1. 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:

  2. 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:
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 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.