Updated: 11/30/2009
A national pizza chain is in the process of re-vamping their order taking and home delivery process and is putting out a bid for a new software system that will be installed in all their stores. The system is responsible for managing takeout orders placed over the phone. This includes accepting the initial customer order, forwarding the order to the kitchen, scheduling order delivery and confirming the order was delivered. The system also maintains customer information including their name, address, order preferences, etc. Throughout the order and delivery process, quality data is collected to evaluate the efficiency of the store’s operation. Example of such data would include time to process an order, accuracy of delivered orders, usage of delivery drivers, etc. The system assumes all payments are made in cash and is not responsible for performing any financial transactions. As the size of stores varies, the system must be capable of being configured to match the store’s capabilities. This would include the number of order takers, number of cooks (how many pizzas can be prepared simultaneously), oven capacity (how many pizzas can be cooked simultaneously) and the number of delivery drivers.
We have gone through several requirements elicitation sessions with the customer and have exposed many detailed descriptions of the expected Pizza Delivery System (PDS) functionality. They have given us domain information regarding their process of ordering, preparing, cooking and delivering pizza store products which is captured below. They also have requested we build an order taking terminal they can use to train operators and a simple simulation that tracks an order from call-in to delivery. Since they don’t want to disrupt their current operations, they will use the simulation to fine tune the order/delivery process.
Sample menu show here, store managers may modify the menu prior to the start of each business day.
Item |
Price |
*Toppings (whole) |
Prep Time (min) |
Cook Time (min) |
Oven Space Units |
Small Pizza |
$8.00 |
$1.00 |
8 |
13 |
1 |
Medium Pizza |
$11.00 |
$1.50 |
10 |
15 |
2 |
Large Pizza |
$16.00 |
$2.00 |
15 |
20 |
4 |
Pizza Logs |
$6.00 |
None |
0 (pre-made) |
10 |
1 |
Tossed Salad |
$5.00 |
None |
5 |
0 |
0 |
*Toppings for pizza include pepperoni, sausage, onions, peppers and mushrooms and can be ordered for the whole pizza or half. A standard pizza with no toppings includes cheese and pepperoni.
For the purpose of this simulation assume the store is
located in downtown
The pizza store owners are not happy with their current delivery scheduling process. Ideally they would like to optimize each driver’s delivery so that he goes with as full a car as possible, but does not delay orders beyond a reasonable time and have some orders arrive late and over-cooked from sitting in the warming area too long. They suggest making sure the simulation can send one driver with one order to one location at a time. From that point you can begin experimenting with optimized delivery algorithms.
The operator display will be a proto-type for a touch screen order taking terminal commonly seen in restaurants. It should be designed to promote operator efficiency and order accuracy. The operator terminal must reflect the current menu options and prices which can be changed only at the start of the business day.
A display system will provide the following minimal tracking information for an order:
A report can be generated on demand by the store manager showing the following information collected from the start of the business day:
(For each of the max times above also include the order identifier)
While it may make sense to port the application to a web platform in the future, the initial proto-type will be written entirely as a standalone Java application with no dependencies to external database management systems. The final product will be evaluated by the customer on a Windows machine with the identical configuration found in the Software Engineering classrooms and labs.