In this section we will take a requirements document for a software system and create a system design from it. The statement for the excercise has been inspired by Dave Thomas' coding kata #1. Let's build a system for a supermarket. Here are the requirements.
The supermarket has various items for selling. Each item has a price. Sometimes an item may have a discounted price, and sometimes it may be part of a scheme. Schemes could be similar to buy two get one free, or buy a certain quantity of an item and get another item free. Items may also be priced for a certain unit. For example Apples may be Rs 40/Kg, however they can be sold in a fractional unit also 500 gms. Some items may be simple, like a can of Pepsi or complex like a crate of 10 Pepsi cans. The sytem should also maintain an audit trail of all sold items for future evaluation.
The store manager should be able to get a valuation of the current stock.
When a shopper checks out items the system should calculate the most optimum price based on schemes that the items may be part of.
Please Note: To keep the exercise simple we do not concerning ourselves with inventory. We only consider items and pricing.
Here are the use cases for this exercise.