Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

BIT706 Programming III

Assessment 3

Weighting

40%

Learning outcomes

1    Analyse business requirements and select an appropriate design, based on a contemporary object-oriented programming language.

2    Design and develop a structured, modular and efficient prototype that meets the design criteria.

3    Design and construct a graphical user interface (GUI) that meets user requirements.

4    Execute debugging and testing techniques, according to a plan, and demonstrate correctness using final module testing.

5    Implement source and version control processes, exemplifying best practice. 6    Produce relevant internal and external documentation.

Instructions

Complete and submit your assessment according to the Open Polytechnic's

Assessments webpage. This includes information on academic integrity, word limits and referencing.

.    Include your name, student number and the assessment number.

.    Number your pages.

Submission

.   Submit your assessment in one file.

.   Submit your work through your iQualify course.

.    Emailed assessments will not be accepted.

.   You will receive an automated notice following submission.

By submitting your assessment, you confirm that it is your own, original work.

Task instructions

In the previous two assessments you created a hierarchy of account classes with unit tests. You also created a simple customer class managed by a controller class and accessed by

forms with a common branding. You will combine and enlarge on these two projects for this assessment.

Requirements

Along with the previous requirements for depositing and withdrawing money from different account types your project must now also enable a user to transfer money within their own  accounts (but not between customers) and incorporate the requirement that bank staff are  only charged 50% of any fees incurred (as in Assessment 1).

For this prototype the client has specified that the base fee for a failed transaction is $10 and the interest rate on all accounts is 4%. (You do not have to provide an interface for    users to change these.)

The client still has the requirement that the code must easily support different user interfaces so you should use the model view controller pattern.

There will be many ways to develop a prototype to fulfil these requirements – you already have forms to add and edit a customer. Now you will add the facility to choose a customer and then:

.    create new accounts for them

.    deposit and withdraw funds

.    transfer funds between accounts

.    calculate and add interest

.    write and read the customer and account data to and from a serialised binary file.

Below is one incomplete and unsophisticated way to design forms to do this. You may

choose to design a different user interface. The middle form has an additional button that    creates a new form for the selected customer and then has the opportunity to carry out the required account transactions.

What you are to do

Part A Analyse new requirements

You should create gherkin syntax features to represent all the different possible scenarios

for transferring money between accounts. The scenarios should cover all the possibilities for different account types, balances, overdrafts and the different fees for bank staff. You will

probably find it useful to use scenario outlines and templates.

(As your unit tests from Assessment 2 will already cover boundary conditions you do not

need to provide gherkin scenarios for transfers that are on the boundaries of the balances. Nor do you need to include scenarios for withdrawals, deposits and interest calculations as these are also covered by your unit tests.) (15 marks)

Part B Designing extensions to your existing classes

You should use the data model you prepared in Assessment 1. The relationship between

customer and accounts is one-to-many so you will need to make small additions to the

implementation of your customer and account classes to reflect that requirement. You will also need to distinguish customers who are bank staff.

Determine what additional methods the Controller class will need to meet the requirements of creating accounts and performing transactions on them.

Submit a report that shows the attributes and method signatures for the customer, account and controller classes. (15 marks)

Part C Version control

You should start with the project containing your customer forms and controller from

Assessment 2 and create a new branch. As you complete small parts of the code you should commit your code with appropriate comments. As you complete larger chunks you should    merge your branch with master and create a new branch. Your final code should all be

uploaded to your GitHub account. Make sure your repository is private and that your tutor is a collaborator. (5 marks)

Part D Complete a prototype

It will make life easier for you if you follow the plan below:

.    Import your account classes into the customer project for Assessment 2. (You may have to rename their namespace to match that of the customer project.)

.    Design and create an inherited form or forms to manage a customer’s accounts.

.    Complete the controller and form code to make a working prototype. (45 marks)

Part E Persist the data

Provide methods to write all the data to a serialised binary file and to read that data back   into the project. These methods should run automatically when the prototype starts up or closes so that the data (including the nextID) is maintained. (5 marks)

Part F Document your code

Add XML comments to your Controller class and generate a report. (5 marks)

Part G Provide a short user guide for your prototype

This should include a brief overview of the functionality, and instructions for the main

processes a user will carry out – this should not need to be more than 3 pages (including screenshots). (5 marks)

Part H Module testing

Using your gherkin feature files as a test plan, carry out manual testing of the final

prototype. Provide a table showing if each scenario has been satisfied or not. Where a

scenario is not correct (and you haven’t been able to fix the code) briefly describe what you think causes the error. (5 marks)