CNSCC311 Distributed Systems Coursework Assignment: Online shopping system, Online food delivery system, Online library, Online travel booking system
CNSCC311 Distributed Systems Coursework Assignment for Assessment
1. Introduction
This is a team-based software development coursework for assessing your knowledge and skills of developing distributed systems. Your task is, by collaborating with your team members, to develop a type of distributed system. Each team will draw a number from (1, 2, ..., 8) to decide their DS type according to the mapping table below.
Types of DS
Online shopping system Online food delivery system Online library
Online travel booking system
Table: Types of DS and corresponding numbers Your assessment marks will consist of the following three parts:
1) 20% from team work code and team report.
2) 40% from your team’s software demo and work presentation (with slides).
3) 40% from your individual report on your contribution to the team work.
Important points:
1) The software system must be your team’s own work, and you cannot share your code with other teams except external public software libraries.
2) Each team must submit software source code and a team-work report. In addition, every team member must submit your individual report.
3) You should fully apply your theoretical knowledge and techniques learned during the course and beyond to develop a high-quality distributed system.
2. Task of coursework
Your team’s task is to develop a distributed system of the type you select. Your system will be a small-scale but fully functioning system that provides typical functionalities of real-world similar systems. Typically your system will consist of a distributed database management system, a cluster of web services, and client application/s (web-based application, desktop application, or mobile phone app). Your work should meet the following requirements as closely as possible.
2.1 Functionality of your system
Your system should be fully functional, capable of providing basic online operations needed to provide general services for users, such as checking available items (hotels), ordering/booking, making payment, returning items (e.g. broken items, books of library etc.). Each team can decide what exact services you want to provide, but your software system should provide the following functionalities:
- A user can check what items are available for sale or to borrow (books). Your system should be able to show users the available items and related information, such as prices of clothes or book publication years.
- Your system should be able to help a user to complete a transaction – make payment (of course not with real bank accounts) and deliver the item (again not real items, but by sending appropriate messages or pictures of items).
- Your system should be able to update the database in real-time to reflect the transaction, e.g. decreasing the number of items available for sale or removing a book that was borrowed.
- Your system should have a security mechanism, including a username- password based control (basic), symmetric key encryption (good), and public- private keys system (excellent).
2.2 Characteristics of Distributed Systems
Your system should demonstrate as many characteristics of distributed systems as possible. First of all, you should be able to deploy your system at least on three computers, and the more the better. In addition, your system should be able to handle multiple users’ requests from different computers (at least two computers).
Furthermore, your system should have a good level of fault-tolerance and transparency. For example, even if a database, a web service, or even a computer is crashed or turned off, your system should still function. Your should implement some algorithms to handle failures of components of your system. For example, if one of your distributed databases or services is turned off, your system should still be able to send a reasonable response to the clients.
Finally, your system should be easily expandable, by simply deploying your database and web service on more computers.
2.3 Requirements of software implementation
Your software code should be logically structured and clearly written, with proper comments in code. Your program code should allow other software developers to easily understand and reuse your software code and components.
Your system should include at least one RESTful and one SOAP service, which should easily be deployable and accessible on multiple computers. While these are various web server software, the GlassFish is suggested as the default one, because it supports convenient and reliable SOAP deployment.
Your client software can be any one of web-based, desktop GUI, and mobile applications. They should provide user friendly interfaces, and should be easily deployable on multiple computers or mobile devices.
2.4 Team work report
Each team should jointly produce a report on your work (maximum 3 pages excluding references) The team leaders are responsible for organising the writing of the team report. The team report should contain the following key points:
- Group and Team numbers, names of team members (Pin-Yin).
- Explain how team work is organised, e.g. list team members’ tasks.
- Brief explanation of system functionality - what is it capable to do?
- Outline of architecture and structure of your system, and justify your choice
of the architecture in terms of Distributed System.
- Describe key technical specifications of your system, such as algorithms you
used for handling component failures, selecting web service, security control
etc.
- A manual that helps users to use your system (mainly about client software).
- If applicable, provide a list of reference papers or other resources you used in
your work.
2.5 Individual report
Everyone should write a one-page report on your contribution to your team work. This should include:
a) Your name (Pin-Yin), lab group number, team number.
b) Which part or aspect of the team work were you responsible for?
c) How did you co-operate with other team members?
d) How did your work help to improve the quality of your team’s work?
e) Any suggestions and comments on your team’s work for future improvement.
2.6. Submission of coursework
A Moodle submission interface will be open from 15th November 2022 (UK time). You must submit all your work, including software source code (by team leaders), teamwork reports (by team leaders) and individual reports (by everyone) via the submission site by the end of 18th November 2022 (UK Time). Every team needs to plan your work schedule carefully to ensure that everyone can finish their tasks in time with a high quality.
3. Teamwork demo and presentation
A team software demo and presentation will be arranged in Week 13 (exact dates/times for each Lab Group is to be confirmed). This is to assess the quality of your team’s work as a whole. Each team will have up to 15 minutes. Each team can
decide who (at least three team members) and how to carry out the software demo and presentation (must use ppt slides), but you must demonstrate your collective capability and skills of effectively presenting your achievement with appropriate materials in clear language (English).
3. Assessment
The three assessment components, “team work code and team report”, “team software demo and presentation” and “individual report” will be marked separately using a 100% scale. Then the marks of the components will be combined with their respective percentages (20%, 40%, 40%) into the final marks.
The marking criteria include:
- a) Quality of the submitted code and reports.
- b) Merit and contribution of individual team members to the team work.
- c) Quality of software demo and presentation.
- d) Level of English writing (of reports) and speaking (in presentation).