This project involves the implementation of a distributed bookstore. The goals of the project are to introduce students to client- and server-side remote procedure calls and multi-tier distributed systems. The students will implement both Java RMI or XML-RPC to implement their store. The store carries only a few books, since the focus of the assignment is not large-scale data-management, but instead is intended to help students understand the design challenges associated with large-scale multi-tier distributed services. In this assignment the students run their code across three separate computers.

The bookstore employed a two tier (front-end and back- end) design consisting of three total components. The front- end tier is a server that accepts customer requests for books, performs initial request processing, and interacts with the back-end components. Three key operations are supported by the front-end server: search, lookup, and buy. The back-end tier includes a catalog server and an order server. The catalog server is similar to a database. It maintains a list of all books in stock in the store, the cost of each book, and the general topic area of each book for searching purposes. The catalog server responds to search and lookup queries from the front-end server. The order server maintains a master record of all orders received, and is responsible for updating the catalog server when new shipments of books arrive. Every time a buy operation is issued from a customer, the order server is contacted by the front-end server to complete the transaction. The order server frequently interacts with the catalog server to ensure that the catalog server correctly responds to queries from customers regarding the price and quantity of books in stock. Issues related to synchronization among the servers and concurrent requests had to be considered in the design of the order server.

As part of the write-up for Project , you should also perform an evaluation of the performance of their system. They measure the average response time for customer requests under different levels of server load. The evaluation allows students to appreciate the importance of making good design decisions, especially when customer satisfaction is at stake. The students also describe the design of their system, and reflect on potential performance bottlenecks in their write-ups.

Finally in your project you will need a GUI as well. It does not have to be anything beautiful or complex. I just want to be able to control your program by using a GUI that is going to respond to the steps of your protocol and which allows the observer to control the movements.

The documentation should contain

  • why you did it
  • what Computer Science principles were involved.
  • what methodology was used
  • what are the results
  • what conclusions can one make from your work
  • A description of the tests that were performed and the data used for those tests in order to verify the correctness of what you did.
  • Use Cases
  • Requirements
  • Analysis (including class diagrams or function prototypes and sequence diagrams)
  • Design (software architecture of project including software tiers, replicas, and consistency)
  • Tests (unit tests as well as exception handling and boundary conditions)
  • Scalability Analysis
  • Program source code documentation
  • Makefile
  • User Guide including compilation and runtime instructions
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.