Assignment2 1
Assignment2 1
CSCI 507
Due:03/31/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:
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 (this 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: 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.
---Internal Use---