This short document outlines some optional features to add if:

  1. You are doing the project for MEng project credit, or
  2. You just want more of a challenge, or
  3. You really, really, need an A+ in this course, or
  4. You just are the obsessive type, with no social life, and figure it may impress a date if you can tell her or him about the really neat optional stuff you added to your project.   (Hint: don't ask... don't tell...)

Due Date and Demo:

Optional features are due as part of the final project submission (last day of classes).  Hand in your code and a short document explaining how you solved each problem, much as you did for parts I, II, III and IV of the project.  Demo your solution as part of your phase 4 demo if you are doing this for an MEng project.

Additional bank "operations" to support:

  1. MoveAccount( acnt, branch ):  moves the designated account to the indicated branch.  Obviously, this feature "breaks" the direct mapping from account numbers to branches; you'll need to deal with that.
  2. Link( acnt-a, acnt-b ): links two accounts.  Once linked, an overdraft on acnt-a will automatically trigger a transfer from acnt-b to cover the overdraft.

Additional clustering and distributed computing features to support:

  1. Partitioning: Divides the accounts within the cluster so that (for example) nodes A and B handle even-numbered accounts, nodes C and D odd number accounts, or something similar.  Designing a good partitioning mechanism is part of your task.  We won't insist that the solution be particularly "dynamic" even though, in the real world, you might ideally want this to be responsive to the pattern of loads and accounts actually seen by the bank.  After all, one bank branch may see many people named Franks, Jones and Smith, while another branch has a curiously large number of people named Dubois, LeBlanc and Brebeouf!  (The point being that the best partitioning function for a US branch might not be ideal for a Parisian one, etc).
  2. Automated disaster recovery.  Deals with the risk that a tornado will wipe a branch from the face of the earth by maintaining a backup in the form of a "log" from which some other branch can take over, if necessary
  3. System manager's console: Provides a web interface with which an operator can see which branches are operational and how the cluster at each branch is configured, and permitting some operator actions (like forcing a crash or a restart).