Assignment 3
CSCI 507
Due:04/23/2023
For Assignments 2 and 3, you will design and implement a very basic online store. The online store should handle the following basic events:
• Users/Administrators Login & Registration
• Browsing Items
• Updating Items
• Removing Items
• Adding Items
• Purchasing Items
Goal: The goal is to learn good object-orient software design and implementation practices centered on software design patterns and frameworks for distributed computing. We will be exploring a variety of software design patterns that will help to demonstrate how proper design and implementation can lead to increased software quality through improved reliability. Assignments 2 and 3 will be based on this mini project.
Assignment #2 (previous assignment): Your job is to build the skeleton framework for your application. Your first task is to take the requirements provided in this document, identify domain level classes and attributes, and design a Domain Model and Class Diagrams for the application. You should create only those classes (Domain model, model view controller etc.) and use cases necessary to demonstrate a working application using Java RMI. You can use dummy or skeleton code within your classes for demonstration. The purpose of this assignment is to familiarize you with translating customer requirements to a Domain Model, identify classes, class responsibilities and operations. These will be your tasks for assignment 2. In the subsequent assignment 3 we will build upon this initial work.
Assignment #3 (this assignment): For Assignment #3 your job is to build upon and improve your current
RMI based framework/skeleton for the online store from assignment 2. Here, you will be looking at Application Control Patterns that can be applied with your domain model (e.g Model-View-Control) architecture that you defined in the previous assignment. For this you will be focused on the impact that controllers have on the system specifically looking at the Front Controller pattern and then by applying the Authorization pattern you will fully implement a complete login and authorization process for administrators and customers for your online store. For this project we will consider these to be two distinct roles – meaning an administrator account cannot act like a customer account – if the same individual wants to play both roles he/she must have two separate accounts. Also you must demonstrate at least one application of using Command and Factory/Abstract Factory design patterns and Template design pattern that will work with your implementation of Front controller and Authorization process.
All of the other requirements from Assignment 2 are still valid. Any updates to your design should be reflected in an updated domain model and any updated discussion of design decisions should be made. Also this will be your final submission, so all required functionalities should be implemented.
---Internal Use---
General requirements
Your code should be properly documented and should make use of common language standards and implementation practices.
Deliverables for Assignment 2: You are expected to submit the following items as part of Assignment #2.
The following files should be submitted on Canvas in a zipped folder (e.g. StudentFirstname_StudentLastName.tar.gz), please follow the requirements outline in the announcements from Blake Troutman in canvas:
• Source Code (e.g. *.java files) without any compilation or runtime error. [ 50 points] o A README file that outlines all of the files contained in the ZIP submission.
o A MAKEFILE that can be used to compile the code o A JAR file to execute the code.
• Assignment #2 Report – an outline regarding the classes and the class diagrams, use cases you have constructed, your Domain Model, any other documentation you feel is necessary to explain your design or Java RMI, and include screenshots of sample run(s) that demonstrate your understanding of Java RMI. [ 50 points]
Requirements Description: The following is a description of the clients request for an Online Store.
The client desires an online store where they can sell goods (and possibly services) to customers geographically dispersed around the world. Think Amazon but on a smaller scale and budget. Their desire is to have a system that is constructed in a portable language (Java) and makes use of their existing network. The system itself should present a view for the customer to interact with as well as a view for the employees or administrators of the company to interface with. For the customer there is a need for them to be able to browse available products – this should present the customer with the type, description and price of the item with the options to add to their shopping cart. If the customer attempts to add a quantity of the item more than the current supply the system should prevent the customer from adding these and prompt them with a message on the availability of the item. The customer should be able to also purchase their items from the shopping cart. The administrators should be able to update an item’s description within the system, update its price, and update its quantity. The administrator should also be able to remove items from the system if so desired. Administrators should be able to add other administrators as well as add/remove customer accounts. A customer should be able to initially register for their account by themselves. The system should handle any faults or unexpected scenarios gracefully. It should be reliable and should allow for multiple customer requests during the course of execution.
Specific actions/events that should be handled as part of the system:
• Users/Administrators Login & Registration
• Browsing Items
• Updating Items
• Removing Items
• Adding Items
• Purchasing Items
---Internal Use---
GET ANSWERS / LIVE CHAT