Description
The summative assessment for this module will consist of ONE Java based project, and ONE written assign-ment. The aim of this coursework is to implement a distributed system for a major computer manufacturer and distributor called Banana. Banana builds smartphones, laptops and desktop computers, which are then sold in Banana owned shops around the world.
Java RMI Practical Assignment (60%)
The Java based practical aspect of this module involves building a distributed system using Java RMI. Be-low we detail the three levels of requirement:
Basic Requirements
Each Banana owned shop has its own Branch Server. The Branch Server should store information re-garding the products that shop sells and their stock levels. It should also store customer information such their name and purchase history.
Each Banana owned shop will have multiple tills (or Branch Clients) where a salesperson can access stock levels and customer information aswell as confirm product sales.
You should develop the Branch Server and Branch Client using Java RMI. Note that the information you decide to store on the Branch Server is not particularly important, you should focus on working out the architecture of the distributed system.
Intermediate Requirements
All Banana products (smartphones, laptops and desktop computers) are built and stored at Banana Head-quarters. Information regarding the number of each product in storage is kept on the Product Server at Banana HQ.
Consider when a customer wants to buy a product that is out of stock in a particular Banana shop, or wants to buy more stock than is currently available. The salesperson should be able to view all available products (even if that shop doesn’t yet stock them) and request additional stock from Banana HQ via their till (Branch Client).
You should develop the Product Server using Java RMI, and edit your Branch Server and Branch Client from the basic requirements in order to add this additional functionality.
Advanced Requirements
The number of Banana owned shops has grown rapidly, and the single Product Server at Banana HQ is now being overwhelmed with requests from shops. All traffic to Banana HQ should be passed through a Load Balancer, which should then split the requests it receives between multiple Product Servers.
You should develop the Load Balancer using Java RMI, and edit your Branch Server and Product Server from the intermediate requirements as appropriate. For simplicity I suggest that each Product Server should deal with unique products. I.e. One Product Server contains only smartphone products, another Product Server contains only laptop products. Then the Load Balancer can split requests based on product type.
Written Assignment (40%)
The written assignment should be at most 5 pages of A4, including any diagrams, and must use a minimum of 10pt font. It should contain the following sections:
i. Abstract:
A summary of the work you have achieved.
ii. Design:
Describe the system architecture that you have chosen to implement and discuss its advantages and disadvantages over other possible designs.
Discuss how this system architecture meets the various requirements.
iii. Implementation:
Provide an installation and user guide.
Identify how various components of the implementation meet the requirements.
Provide a diagram outlining the relationships and communication channels between the different components of the implementation.
iv. Analysis:
Identify the advantages and disadvantages of the system as you have implemented it. Are there any aspects that work particularly well or particularly poorly?
What problems did you encounter during the implementation. Did these force you to change the original design of the system architecture?
v. Conclusion:
If you were given additional time, what changes or additions would you make to your implementa-tion?
If you were to begin the design and implementation again, what changes would you make? This could include changes to technology, your design process and personal aspects such as time manage-ment.
vi. References:
You must cite and reference any aspects of the report that you have not written yourself. Be aware of plagiarism rules.