15-612 Distributed Systems
Spring 1998
Carnegie Mellon University
Pittsburgh, PA 15213
Revision History:
Version 0.91, 02/18/98, Security Issues section added by Nelson Montalvo
Version 0.90, 02/17/98, Integrated by Vincent Mak and Nelson Montalvo
Preface:
A high level description of the features of the NYEV Banking System.
Target Audience:
Client, Developers
NYEV Members:
Nelson Montalvo, Yenni Kwek, Eric Farng, Vincent Mak
The primary goal of the NYEV Banking System is to create a distributed banking system that is readily customizable to any bank. This system should allow a bank customer (user) to view account balances and histories, transfer between accounts, pay bills, etc. On the administration side, accounts should be properly created and managed.
The NYEV Banking System will be built on a distributed architecture that is extensible, scalable, relatively platform independent, highly available, and secure. With these attributes, a side-goal is to create an architecture that will be flexible enough to adapt for other business uses.
Most large banks have already allowed their customers to access similar systems over the World Wide Web. One US demo may be found on the Citibank web site. The following are some sample screen shots from the Citibank online banking system:

Figure 2.1 Sample screen shot of Citibank's Direct Access banking system

Figure 2.2 Sample shot of the accounts balance screen
Since our goal is to create a system that can be used by any bank, many common features will be integrated into the system and many customized features will be added later. As far as our research tells us, most banking systems are built from the ground up. While this may be more secure and affordable by the bigger banks, many smaller banks may not be able to readily afford such custom systems.
The NYEV Banking System is a highly available and reliable online banking system designed to provide several services to increase the efficiency and convenience of all of its users. It uses Java, CORBA and Internet-based technologies to provide a platform independent, distributed computing environment based on the client-server model. The client is a Java-applet that runs on any standard browser and PC that is connected to the Internet and supports Java and CORBA. The client connects to a server that acts as a transaction manager. The servers are connected to databases where all of the account profiles and information is stored.
There are four different types of client applets, each for a different user-type and with different capabilities. (See section 3.5.1) There will be multiple transaction-manager servers for load balancing and high availability. If any server goes down, there are several other servers that can take over for it. The system will also have at least two databases, one primary and the other for back up. The information between the two databases are kept synchronized whenever possible. All data is first sent to the primary database and then to the backup database. If the primary database ever goes down, the backup will take over and become the primary. Once the primary is back up, it will have to resynchronize with the data on the backup database. This all allows the NYEV Banking System to be highly available and reliable while remaining transparent to the users.
There are four different user types for the NYEV Banking System: bank Customer, company Biller, bank Teller and bank Administrator. Each user-type has different uses and feature requirements from the system. (See section 3.5.1) Therefore the features will be divided up between general features and those that are specifically needed by each user-type. Of course, it is possible for these features to overlap.
General features of the NYEV Banking System:
Customer features:
Biller features:
Teller features:
Administrator features:
This system will be used by two main groups of people: First it can be used by people work at banks, such as tellers and customer service representatives. Second, bank customers who can be connected to the Internet or can dial to the bank can use it. The complete user definitions are described in section 3.5.2.1 User Model.
Since the system can be used by novice computer users, the front end of the system is very user friendly (WYSIWYG) and should required minimal formal training. Online documentation will be provided to help users with the system. Customers, however, will have to have previous knowledge about having modem connection or connecting to the WWW. Although the system required no training, we recommend bank workers be trained to use the system, since mistakes that are made by bank workers, could affect multiple accounts.
The system will try to protect users from making errors by double checking every transfer and electronic payment made by the account. The system will also keep log of transaction, so that mistake can be traced whenever needed.
The devices needed for input/output for human interface are keyboard, mouse (recommended), computer monitor, speaker (optional), and sound card (optional).
The following documentation pieces are to be created as part of the NYEV Banking System.
Document |
Target Audience |
| Software Project Management Plan | developer, project management (internal) |
| Requirements Analysis Document | developers, project management, clients |
| System Design Document | developer (internal) |
| Object Design Document | developer |
| User's Guide | clients |
A developer and project manager is a member of the NYEV project team and the clients are professors and users.
There will be a different User's Guide for each of the different user-types since the interface, capabilities and uses of the system would vary. The User's Guide should include a few scenarios that cover some common uses of the banking application to give new owners an idea of why they would want to use the NYEV Banking System and what they can do with it. There will be sections covering the user interface and how it is to be utilized in conjunction with the rest of the banking application. Instructions will be available on how view your account history, transfer money between accounts and pay off bills online.
All three clients side programs will have to access the system through a web browser. The applets are not going to be very large, so any machine that can run the Java Virtual Machine through any web browser should be sufficient.
The transaction servers are probably going to be run on an NT machine because of the lack of CORBA development tools. The machines won't have to be too large. Memory requirements will be little because most of the information for each client will be cached on the client side. No information about a customer will be stored on the transaction server. All we are going to store would be log files.
The database servers are also going to run on NT's for the same reason. These machines will require lots of disk space as they will store all the information for the clients. Memory requirements might also be high as we will probably leave information for currently running clients in memory and then save after the client logs out
The bottleneck of the system will be the bandwidth of the network reaching different parts of the system. If all the servers are in one location and connected through Ethernet, then our first consideration is the bandwidth in reaching the client. If we decide to let the servers to be located far apart, then we'll have to worry about bandwidth between servers to the transaction servers.
The speed of the servers will not be a problem because of the network. The speed of the client machine also should not be a problem because the applet will be relatively small.
Obviously, the data for each customer will have to be as compact as possible. Ideally, the data sent could fit within one packet or close to the size of two or 3 packets.
Obvious input errors, such as letters where numbers are expected, will be handled at the client side. Other problems such as withdrawing too much money or other typo's and improper clicks could be handled by rechecking the input.
Lost, garbled, and/or out of order packets should all be handled by the development packages that we will be using.
When a transaction server goes down, each client should have a list of other servers to go to if the primary server goes down. If the server comes back up, the client will not need to reconnect to it. Each session is temporary and the next time the client connects to the server, they can go back to the primary server.
Each database will have a backup server to recover in case the primary database dies.
The network connection from a transaction server to a backup database should not have to go through the primary database server so we can tolerate that cable dying. Connections between the databases and transactions servers should be as close to fully interconnected as possible so we can tolerate as many network crashes as possible.
Should we lose actual information (disk getting corrupted) and both the backup and primary databases die, we can run through the logs and recreate all the events again. If the logs are corrupt, we can possibly restore an old state of the system from tape backups
Because transferring and making electronic payment may require connection to other bank systems, there would be input and output that come from and to the proposed system.
The systems will communicate using standard Java and CORBA. CORBA was decided over RMI because it allows the system to talk to outside systems that are not necessarily written in Java.
For this system to be reliable, multiple transaction servers will be used such that each client can connect. Each database will have a backup. Because we're dealing with money, any failure of the system may cause major havoc. Performance can suffer if it will compromise reliability.
If any transaction server crashes, it is not critical to get it back running quickly because there are other servers that provide the same services. If any database server dies, there is only one backup and so we'd want to get the primary back and running ASAP. But more importantly is to get the server running correctly and in the correct state. So bringing the server back up is less important then keeping the information correct.
The system at the very least should be up and running during normal business hours when it will be used the most.
The clients will have to be as portable as possible. We're going to develop with Java to keep it portable. The servers need not be portable.
System modifications will be made primarily on the client side, through added functionality. This could include adding features such as stock portfolio management. On the distributed backend, most modifications will be made to the security features, so as to assure that the system remains as secure as possible.
So as to allow for customized business applications in different areas, modifications will occur through customized client applications and backend.
The final clients should run at home/office from any machine and a Java enabled web browser. Most PC's bought today have this installed already or are capable of running it. Though there are some households with older computers that will have a hard time running a JVM, we feel that using a Java applet is the best way to reach the wide set audience, though maybe not all.
The servers will probably run on NT servers either in one location or in separate locations depending on the requirements of the users of the system. Our intent is to have the capability for our system to run in different locations though of course then bandwidth becomes a consideration and performance issue.
The room itself shouldn't require anything special. Though if there are a lot of servers, you might want to turn the temperature lower to compensate for the heat generated from many machines.
Physically, the machines serving as the backend must be securely placed such that no unauthorized persons has any access to the machines. Hence, accesss to the system itself must be controlled so as to assure the transactions that the machine is carrying out are in no way altered.
The standard security issues must be resolved, in terms of authorization and authentication. Given the nature of the NYEV banking system, there will be several levels of security. This includes, but is not limited to, customer, teller, and administrator level access.
Assuring that the transactions cannot be intersepted easily, and so as to secure such things as account numbers and passwords, a level of encryption must be used between machines. Currently ssh and ssl are being looked at as possible methods of securing communication from web based clients to the servers. Other methods will be looked into for server to server communication, if necessary.
Ideally the database system should be backed up continuously. At least once every two hours at the central level should be considered a bare minimum in case of catastrophic failure, to minimize data loss.
System administrator should maintain the system and its databases to ensure their integrity and availability.
The system will be developed with Java (JDK 1.1.5) with CORBA using VisiBroker. Object and case models will be constructed using the CASE tool Rational Rose 4.0. Source control will be handled using CVS.
The major constraint to using CORBA is that it requires the client and servers to run a CORBA ORB. This should not be a problem for the server since the bank administers it but it may be a problem to require all the clients to have ORB on their machine. It would be possible though for the bank to distribute a copy of an ORB along with any software and manuals that they would normally provide one of their customers when they sign up for the service.
The NYEV system is designed with four different types of users in mind: a regular bank Customer, an accounts Biller, a bank Teller and a bank Administrator, all generically called a User. (see section 3.5.2.1 Actors) Each user type has different requirements and uses in mind for the system, and therefore different levels of access rights and privileges. Of course, it is possible for a person to have more than one user type. I.e., a bank Administrator could also be a regular Customer of the bank. In such a case, the person would have more than one account, one for every user type he has.
The system is designed to aid both bankers and the banks themselves in handling their finances. Some possible situations where the system would be useful are described in the scenarios under section 3.5.1. UML notation is also displayed (section 3.5.2) to show more comprehensive use case models that describes the functionality to be provided by the system. The dynamic models (section 3.5.3) illustrate the sequence of events that occur when using the system.
The following is a top-level use case model done in UML notation. It is used to provide a more formal specification of the general uses of the NYEV Banking System.

Figure 3.1 UseBanking: High-level use case diagram
Purpose: UseBanking
This is the high-level use case for using the NYEV Banking System. To use the system for any transaction, one of the 4 different use types logs onto the client program, which connects to a transaction manager server which stores its information on a database.
Entry Conditions:
Exit Conditions:
Flow of Events:
Special Conditions:
Purpose: UseClient
Represents any interaction with the system through the client program. The client program communicates with a transaction manager server. It sends all requests to the server and waits for a response. Any results are shown to the User.
Entry Condition:
Exit Condition:
Flow of Events:
Special Conditions:
Purpose: ManageTransaction
Acts as the transaction manager server. It receives requests from a client program, processes the command, gets and sets whatever data it needs from the database and sends the results back to the client.
Entry Condition:
Exit Conditions:
Flow of Events:
Special Conditions:
The following is a top-level view of the sequence diagram in UML notation for the NYEV Banking System.

Figure 3.2 UseBanking: High-level sequence diagram