Final Exam - COM3205 Winter 2000

System description:

TinyBank Corp. is a new bank focussed on the neighborhood community banking market. They currently have a single branch on Huntington Ave. in Boston. But they want so have the largest network of ATM's (Automatic Teller Machines) in the Back Bay, Fenway and MFA areas of town. They need a new ATM Software system from COM3205 Inc.

The bank offers a single type of bank account - the All or Nothing Account (TM). The ATM's need to support 3 basic customer functions to access this account. Customers need:

  1. To withdraw money from their account. The amount of money that can be withdrawn is limited by the amount of money in the account and a maximum daily limit amount stored by the bank as part of the customer's bank records.
  2. To query their balance
  3. To deposit money (via envelopes provided near the machines.)

When withdrawing money, customers are to be offered the choice of fast cash - $25, $50 and $100 amounts or the choice of entering a specific dollar amount. Only after the ATM has confirmed that it has successfully dispensed the cash, will the amount be deducted from the customer's balance.

When a deposit is made, the customer is asked to enter a specific dollar amount describing the deposit. The bank records the amount, but it is not directly added to the balance until the deposit has been checked and verified by the branch teller that opens the deposit envelopes.

At any time, the customer can cancel the current transaction and then either start again from the first screen or exit altogether, retrieving their card.

Customers will be provided a bankcard and a PIN (personal identification number), which will work with the machines. A card reader in the ATM reads the card. The cards have a magnetic strip that details the customer's account number. When the card is read, the customer is challenged to enter their PIN. To support this action as well as the other functions, the ATMs also have a display, a keypad, a receipt printer, a cash dispenser and a device to accept deposits.

All a customer's bank balance data, personal data and PIN is stored in the bank's central database. The PC software in the Huntington Ave. bank branch that is used by the human tellers also accesses this database.

The ATMs are spread all over the neighborhood and are connected to the bank via a network maintained by the local Phone Company. Because of security reasons, the ATMs are not connected directly to the Banks Database. They are connected to a controller box that in turn connects (via a secure network) to a server that implements the business logic of the application.

The ATMs must delegate all the real work to the Business Logic server - this means that checking the PIN, and all the transactions (withdraw, query, deposit records) are done by the BL server.

In addition, the ATM stores a record of all transactions in a local machine database to support auditing and theft detection.

The bank is a very conservative company and demands extensive documentation during the development of the software. Each and every aspect of the system has to be reviewed by the bank's IT staff as well as technical experts employed by their insurance company.

The system development is not with out risks however, as COM3205 has very limited experience with the kind of networking complexity and distributed computing involved in this project.

Questions:

Answer as many of the following questions you can, in any order. A score of 100 marks is a perfect score for this exam.

  1. What life cycle model would you choose for this project? Explain your choice.(25)
  2. Produce a finite state machine that defines a customer's interactions with the ATM machine. (25 marks for completeness and clarity)
  3. Identify the class name, the class responsibilities and collaborators (CRC) for each class involved in a withdrawal of money from the ATM. (Up to 5 marks for each class description - max 35.)
  4. Assuming the user has entered a valid PIN number and has entered a dollar amount that they want to withdraw, diagram the interaction between the different objects involved in a withdrawal transaction using UML notation. (25)
  5. Draw the physical architecture of this system, identifying the different clients and servers that are involved. How would you describe this system in terms of the number of tiers (10).
  6. Using UML component, package and/or deployment diagrams, identify the different software modules that may be involved in this system. (25)
  7. From the requirements phase right through to the delivery of the code to the bank, describe as many of the non-programming tasks to be performed in this project as you can. (Up to 5 marks for each description).