Assignment title: Information
Your assignment consists of two tasks: task one is to design a banking application (worth 85% of the total marks for the assignment), and task two is a critical self-reflective commentary on task one (worth 15% of the total marks for the assignment). Assignment Task 1: A banking application (85%) You have recently started as a graduate software developer at Mecachrome software Development Ltd working on a maintenance project. The team who previously maintained the software have left the organisation and you are to assume a role in the team maintaining a client's legacy banking application (Brownfield development). One problem however, the documentation has been lost. You are required to: 1. Reverse engineer the existing code to produce Class diagrams of the system in its current state. 2. Reverse engineer the existing code to produce sequence diagrams by analysing the code and identifying the interaction between the relevant classes. 3. Provide a use case model based on the functional requirements evident from the code The client has additional requirements 1. A single bank account is required where all account penalties are paid into and from where all interest is taken and paid into accounts with positive balances. 2. A roll-back facility should be created when transfers are made when the receiving account does not exist. 3. The bank also want an option to be able to grant, revoke and change the overdraft limits. 4. With current growth all interest payments must be automated and not done manually. 5. The banking application should store loan histories of clients and these should contain: a. Amount loaned b. Amount to be paid back c. History of payments d. Dates of those payments 6. The bank wants four new bank account types : a. High Interest Accounts b. Islamic Bank account (in which no interest is charged nor accrued) c. Private accounts d. Low credit rating (LCR) accounts for clients with poor credit ratings. No overdraft facilities are allowed on these accounts You should: 1. Refactor the code to make it more readable. 2. Produce updated class, sequence and use case diagrams showing the new changes. 3. Iron out any existing bugs. 4. After each change explain in a 1-2 paragraphes or more what your solution was and why you think it may be better than other approaches. 5. Show the modified Design of this Banking application based on the client's requirements. 6. Use suitable UML modelling approaches e.g. Sequence diagram, Class diagram etc. 7. Test the Accuracy and Functionality of the Banking program. Note: You must use the skeleton code provided for the Banking program as this is brownfield development. Please see existing code of the Bank program in a separate file on the portal.