1. Problem description
Mr. Smith is the owner of a grocery store. He has a computer and a scale. He will buy a a barcode
reader. He currently manages goods in his store using Excel. Each kind of goods (e.g. bread, beef,
apple...) has the following information: name, barcode number, number of available units, price per
unit, provider name, and provider contact information. He currently checks out his customers' orders
using a hand‑held calculator and writes down the receipts manually. He inputs and updates the
information of the goods in his store directly to the Excel spreadsheet. He wants you to develop a a
software application for store management
2. Iteration 1
Here are the user stories you want to support in Iteration 1:
1. As a user, I want to check out an order in store for a customer.
2. As a user, I want to add a new product into the system.
3. As a user, I want to update information (e.g., price, available quantity) of a current product in the
system.
3. Task for Iteration 1
Task 1: Write a detailed use case for each user story. At each step, you should provide a prototyped
screen sketching how the system might look and work.
Task 2. Draw a general Data Flow Diagram and three more detailed Data Flow Diagrams (each for a
use case) of the Store Management System.
Task 3. Draw an Entity Relationship Diagram for the data of the Store Management System. You
should identify all possible attributes and a key for each entity or relationship.
Task 4. Create a sample dataset with at least five products and five orders.
4. Task for Iteration 1
This assignment is the next step of the assignment on use case and data analysis.
Task 1. Draw a class diagram for the Store Management System containing major classes.
Task 2. Write SQL code to create a database for the Store Management System and insert the
sample dataset you have prepare in the previous assignment.
Task 3. Write Java code to implement the class diagram you designed in Task 1.
Submit all your work (code, analysis and design documents...) to your team's Github account.
5. Iteration 2
More user stories:
1. As a user (cashier or manager), I want to log in the system
2. As a user, I want to change my login password
3. As a user, I want to change my display/profile photo
4. As a cashier, I want to check out an order
5. As a manager, I want to add a new product into the system's database
6. As a manager, I want to update a current product in the system's database
7. As a manager, I want to create a new user, assign role (e.g. manager or cashier), generate a
default password for a new user
8. As a manager, I want to view and sort the business report: e.g., what products are sold, how
many units, how much revenue...
6. Task for Iteration 2 ‑ Requirement
1. Revise current use‑cases
Cashier performs Checkout
Manager performs Add product and Update product information
2. Write new use cases
Login
Create a new user
Change password
Change profile photo
View and sort business report
7. Task for Iteration 2 ‑ Analysis
1. Revise the Entity‑Relationship Diagram
8. Task for Iteration 2 ‑ Design
1. Revise UI for current use cases
2. Revise DB design
Add table User
Add Cashier information in table Order (who checkouts what order)
9. Iteration 3
Redesign of systems
1. Design the system as a client‑server application
Multiple users (of different classes and different devices/locations) can log in into the
system as the same time
2. Using design‑patterns
Adapter pattern for remote data access
Proxy pattern for loading User objects (with and without photos)
Builder pattern for generating two different formats of receipts: plain text and HTML
10. Iteration 3
Changes in business model:
1. Each customer will have an account with reward points. She/he will get 1 reward point for each
dollar spent
2. [Defer to next iteration] When paying for an order, a customer can choose to pay using his/her
reward account, with the rate 1 point for 1 cent.
11. Iteration 3
Support more user stories
1. As a cashier, I want to print the reciept when checking out. The receipt can be in plain text or
HTML
2. [Defer to next iteration] As a customer, I want to checkout an order. Customer needs to log in to
check out
3. [Defer to next iteration] As a customer, I want to see my order history, i.e. the list of orders made
and the details of each order