BIT706 Programming III Assessment 3
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)
2023-10-30