程序代写代做代考 Java html graph gui distributed system database algorithm CNSCC311 Distributed Systems Coursework Assignment for Assessment

CNSCC311 Distributed Systems Coursework Assignment for Assessment
(Autumn Term, 2020) Scott Piao
1. Introduction
For your assessed coursework, you will develop as a team member an online shopping system in the form of distributed system. Your assessment marks will consist of the following three parts:
1) 20% from team work code and team report.
2) 40% from your team presentation, including software demo and explanation
of your team work.
3) 40% from your individual report on your contribution to the team work.
Important points:
1) The software system must be your and your team’s own work, and you cannot share any part of your work with other teams except external software libraries.
2) If you need help with your work regarding this coursework, please seek help and collaboration among team members or the teacher, but not from other teams.
3) Each team must submit software source code and a team-work report (PDF document) via Moodle submission link as requested. Team leaders are responsible for submitting them in time.
4) In addition, everyone must submit your individual report (PDF document) in time via Moodle as requested.
Even if you cannot finish all the required work, try to finish and submit as much as possible.
2. The coursework task
Your team’s task is to develop a fully-functioning small-scale online shopping system that contains components such as database/s, web service/s, user-friendly client software. You should apply all your knowledge and skills you have gained or will gain from the lectures and beyond to finish the task with a high quality. Your work should meet the following requirements as closely as possible.

2.1 Functionality
Your system should be fully functional, providing basic online shopping functionalities for users. Each team can decide the types of goods of shopping, such as food, books etc., but the system should provide the following functionalities:
 A user can check what items are available for sale. Your system should be able to show the list of available items and their prices to the users.
 Your system should be able to help a user to complete a transaction – make payment and deliver the item (of course not using real money or items, but by exchanging appropriate messages).
 Your system updates the database to reflect the transaction, e.g. decreases the number of items available for sale.
 Your system should have a goods stock management interface (a client program) that can show current goods available for sale.
 Your system should have a basic security mechanism of username-password access control. If you can implement encryption for messaging in the network, that would be plus.
2.2 Characteristics of Distributed Systems
Your system should demonstrate as many characteristics of distributed systems as possible. For instance, components of your system can be deployed at least across two computers, more the better. In addition, your shopping system should be able to handle at least two clients’ requests. Furthermore, your system should have a good level of fault-tolerance and transparency. For example, if a database or even a computer is turned off, your system should still function (I may ask you to turn off one of your computers during the demo to demonstrate fault-tolerance).
2.3 Technical requirements on software programing
Your software code should be logically structured and clearly written, with proper comments in code. You should allow other software developers to easily understand and reuse your software code and components.
You should design some algorithms to handle failures of components of your system. For example, if one of your networked databases or services is turned off, your system should still be able to send a reasonable answer to the clients.
In addition, at least in theory, your system should be easily expandable, by simply keeping deploying your databases and web services on more computers.
Your client software can be in any form, but a reasonably user friendly interface is preferred, either web-based or desktop GUI (Graphical User Interface) application, through which the users can send their requests and buy goods.
Your whole system should be deployed locally on your computers. You are not allowed to deploy part or whole of your system on external cloud service.

2.4 Team work report
Each team should jointly produce a report on your work. The team leaders should be responsible to organise the writing of the team report, with collaboration of all team members. The report should contain the following key points:
 Outline the structure of your system.
 Justify your choice of the architecture and techniques for your system.
 Describe main technical specifications of your system, such as algorithms you
designed or re-used.
 Explain how team work was organised.
 A manual that can help users to use your system (mainly about client software).
 If applicable, provide a reference list of papers or other resources you used in
your work.
2.5 Individual report
In addition to the team report, everyone should write a report on his/her contribution to your team work. This should include:
a) Which part or aspect of the team work were you responsible?
b) How did you co-operate with other team members?
c) How did your work help to improve the quality of your team’s work?
d) Any suggestions and comments on your team’s work for future improvement.
2.6. Submission of coursework
A Moodle submission interface will be provided from 30th October 2020 until mid- night of 2nd November 2020. You must submit all your work, including software source code (by team leaders), teamwork report (by team leaders) and individual reports (by everyone) in time via the provided Moodle. Plan your time carefully with your team members to ensure you can finish your coursework assignment with a high quality in time.
3. Teamwork demo and presentation
The team work presentation will be arranged in the lab sessions on 6th November of Week 9. This is to assess the quality of your team’s work as a whole. Each team can decide who (at least two team members) or how to carry out the software demo and presentation, but you must demonstrate your collective capability and skills to effectively present your achievement in clear language and with high quality presentation materials and methods. Each team will have up to 10 minutes.
4. Resources
1) CNSCC311 lecture slides and Problem Sets in Moodle.
2) Java Servlet Technology. Website:
https://www.oracle.com/technetwork/java/index-jsp-135475.html

3) My SQL Tutorial. Website: https://dev.mysql.com/doc/mysql-tutorial- excerpt/5.7/en/.
4) Information about software documentation: https://en.wikipedia.org/wiki/Software_documentation
5) Distributed Systems: Principles and Paradigms. By Andrew S. Tanenbaum and Maarten van Steen, Pearson Prentice Hall, 2007.