Software Engineering Course Project
Restaurant Automation
The Project
A major component of CS 521 is a team centered software engineering project. The objective is
to develop a software product for a fictitious client who intends to use it in regular production to
improve their business in terms of cost, time, and functionality.
You will work with your classmates in order to complete the project before the semester ends.
During the semester, the project team will work together through the full development cycle,
from an initial feasibility study to delivering a functioning product, and will make a series of
presentations and reports of the work to the client. For the purposes of this class, I shall be your
client who has contacted you in order to help me automate my privately owned restaurant
business. This will allow me to modernize the day to day operations of my business in the hopes
of lowering its operating cost and/or improving its overall efficiency by the end of this class.
Project Description
Your goal for this project is to introduce automation into a privately-owned restaurant.
Typical problems restaurant personnel are facing include:
• Coordination of their work activities
• Anticipating and handling periods of low/high patron traffic
• Recognizing trends early enough to take advantage of bestsellers or abandon the
flops in menu options
• Lowering operating costs, and increasing efficiency/productivity and profits
There are still many privately owned small to medium sized restaurants that operate using
traditional pen and paper methods with little to no automation. Traditionally, patrons enter the
restaurant are greeted at the front by a receptionist who uses a “dry erase” diagram of tables on
top of a blackboard that details a map of the restaurant’s floor plan. The receptionist can see the
current status of the tables according to whomever last physically updated the diagram. Once the
patrons have been seated, a waiter is sent to collect their order and write it down onto a piece of
carbon paper that is physically delivered to the kitchen for proper food preparation by the chef
and the other kitchen staff. The waiter must periodically cycle back to the kitchen in order to
find out when the meal has been prepared for a given table. Once the food is ready for a given
table, the piece of carbon paper is saved for proper record keeping and analysis by the
management. This traditional system works but generates a lot of tab receipts, wastes a lot of
time, and is out of date with more modern methods that employ some form of automation or
computer technology. In traditional systems, waiters must carry notepads around to take orders
from customers and ensure that each bill is correctly organized and assigned to the correct table.
Another issue is record maintenance. In the traditional system where all record-keeping is done
by paper, the management is responsible for the ha.
1. Software Engineering Course Project
Restaurant Automation
The Project
A major component of CS 521 is a team centered software
engineering project. The objective is
to develop a software product for a fictitious client who intends
to use it in regular production to
improve their business in terms of cost, time, and functionality.
You will work with your classmates in order to complete the
project before the semester ends.
During the semester, the project team will work together
through the full development cycle,
from an initial feasibility study to delivering a functioning
product, and will make a series of
presentations and reports of the work to the client. For the
purposes of this class, I shall be your
client who has contacted you in order to help me automate my
privately owned restaurant
business. This will allow me to modernize the day to day
operations of my business in the hopes
of lowering its operating cost and/or improving its overall
efficiency by the end of this class.
Project Description
Your goal for this project is to introduce automation into a
privately-owned restaurant.
Typical problems restaurant personnel are facing include:
2. • Coordination of their work activities
• Anticipating and handling periods of low/high patron traffic
• Recognizing trends early enough to take advantage of
bestsellers or abandon the
flops in menu options
• Lowering operating costs, and increasing
efficiency/productivity and profits
There are still many privately owned small to medium sized
restaurants that operate using
traditional pen and paper methods with little to no automation.
Traditionally, patrons enter the
restaurant are greeted at the front by a receptionist who uses a
“dry erase” diagram of tables on
top of a blackboard that details a map of the restaurant’s floor
plan. The receptionist can see the
current status of the tables according to whomever last
physically updated the diagram. Once the
patrons have been seated, a waiter is sent to collect their order
and write it down onto a piece of
carbon paper that is physically delivered to the kitchen for
proper food preparation by the chef
and the other kitchen staff. The waiter must periodically cycle
back to the kitchen in order to
find out when the meal has been prepared for a given table.
Once the food is ready for a given
table, the piece of carbon paper is saved for proper record
keeping and analysis by the
management. This traditional system works but generates a lot
of tab receipts, wastes a lot of
time, and is out of date with more modern methods that employ
some form of automation or
3. computer technology. In traditional systems, waiters must carry
notepads around to take orders
from customers and ensure that each bill is correctly organized
and assigned to the correct table.
Another issue is record maintenance. In the traditional system
where all record-keeping is done
by paper, the management is responsible for the hard work of
keeping all information saved and
organized properly. Every single day generates a mountain of
receipts whose data must be
correlated, collected, and organized so employees are paid
properly and the everyday needs of
the business are promptly met by the management. Obviously,
this requires a great deal of
ongoing daily time and attention from the managers.
Your overarching goal in this project is to computerize
restaurant operations so that all
information pertaining to a patron’s orders and employee
activity will be conveniently shared
and stored over the restaurant’s intranet. Receptionists will be
able to view table status with a
click of a button. The wait staff will be able to enter the
patron’s orders quickly and efficiently
and then have it electronically delivered to the kitchen. The
kitchen staff will be able to view the
incoming orders and notify the proper waiter staff when the
food is ready. Bus boys will be able
to view real-time floor status allowing them to know which
tables are clean, dirty, or occupied.
Most importantly, all of the restaurant information is organized
and saved in the system database
for the management viewing and archival. The analysis will
4. consist of by-the-day and by-the-
hour breakdowns of:
• Revenue and revenue percentage per menu item
• Menu item popularity
• Personnel efficiency
• Average turnaround time (how long patrons spend in the
restaurant)
• Average preparation time (time from when the order is placed
to when it is ready)
At the conclusion of your project, there will no longer be any
more mountains of paperwork or
long hours of punching numbers in order to address the day to
day running of the business. All
data will be automatically collected and processed allowing
management to focus on analyzing
the data rather than calculating it themselves.
Statement of Requirements
By using a touch screen the restaurant staff can quickly and
efficiently log in and complete the
desired task. When a waiter logs in, they are greeted with a
floor status screen in which their
assigned tables are colored into the screen. Their tables are
colored according to status; green is
open, yellow is occupied, red is dirty (see Figure 2). At this
point a waiter can select a table to
view its tab. Once a table is selected, the staff can choose from
a number of options. If they
5. select to add an item to the table’s tab, they are presented with
various categories of food items
offered on the menu. Here they can select the appropriate
category and then find the desired
item. For example, if a patron ordered a Caesar salad, the
waiter would login, select the table,
and choose “Add Item.”
They would then select the “Soups/Salads” from the category
list, and subsequently select the
desired salad from the items presented in the onscreen menu.
They then return to that table’s
screen where they can choose to perform another task or logout.
This saves the waiter from
walking back and forth to the kitchen to deliver and check up on
food orders. Orders placed by
wait-staff using the computer terminals on the restaurant floor
are displayed to the kitchen staff
through a queue, i.e., on a first-in, first-out basis.
The supported employee roles are: Receptionist, Waiter, Cook,
Busboy, and Manager. Some of
the direct links between some of the staff include:
Receptionist ↔ Waiter, Waiter ↔ Cook, and Busboy ↔
Receptionist.
Every user account in the system should have its own
privileges. All the role-personalized home
screens for each employee will be refreshed automatically when
needed (e.g. when a table is
marked ready; a table’s order is prepared; a Receptionist assigns
a waiter to a table; etc.). The
Manager should have administrative power over employee
profiles: the ability to create and
6. modify profiles, track employee activities, and authorize
restricted waiter activities. If the
employee is a waiter, his/her profile also contains information
about the tables for which he/she
is responsible. From this profile, the individual tabs for those
tables can be accessed. The
manager should also have the ability to manage other aspects of
restaurant operations, such as
inventory tracking and sale analysis.
There is an important choice of the type of computer terminals
used by the waiters. All other
personnel are either stationary, e.g., kitchen staff and
Receptionists, or can access information at
stationary terminals, e.g., busboys. If the waiters are required
to use stationary terminals, they
must memorize or write down a specific table’s order and then
find an open computer, login and
enter the information into the system. At this point everything
else is done electronically.
Another option is to have the waiters be provided handheld
devices, which will be connected
wirelessly to the rest of the system, completely eliminating the
use of carbon paper.
There are certain advantages of stationary computer terminals
over handheld devices: (i) a small
number of fixed terminals can be time-shared by multiple
personnel, so this solution may be
cheaper and easier to maintain; (ii) they are fixed, so they
cannot be lost or damaged in handling.
Thus, you may assume fixed terminals for the entire staff at
your discretion.
7. Having to login frequently is annoying, particularly for cooks
working with food. If you decide
to have open access, you may assume that these restaurants are
physically secure, so electronic
security is less of a concern. If you do make this assumption,
then the only security login
controls I would want you to add is that for the waiter. The
waiter should login and for each bill
mark down the amount of gratuity
The final interface issue is specifying the floor plan of the
restaurant and the table arrangement.
Ideally, this feature should be included within the system to
allow managers to alter the floor
plan by moving, adding, and removing tables. If the
development team experiences lack of time
in the course of the semester, an acceptable workaround should
be sought. For example, a
generic restaurant floor plan can be designed specifically for
demo purposes. When a restaurant
orders our software, we will build and develop a floor plan for
that specific establishment,
making the software package unique to that establishment.
In addition to staff coordination, the system tracks everything
electronically then organizes it.
Employee hours are kept, allowing for rapid processing of the
payroll. Revenue is tracked by
day, week, or month. All this information is collected, saved,
and then entered into tabular
format for easy reading by the management. The automatically
generated statistics allow the
management to see what portion of the revenue comes from
what item, i.e., what are the most
popular items. All this is done automatically and stays up to
8. date with restaurant performance.
You may make this application using any tools that you and
your group are comfortable with and
can justify using in order to complete this project successfully
in the semester long time-limit.
Although the project description calls for a touch-screen
terminal, for the purposes of this class,
you may use any tool or library of graphics programming that
you can justify will fulfill the
needs of this project whether that comes with programming your
project using Java (AWT,
Swing, other Event-Driven Programming tool you are familiar
with) or Python 3.XX (Tkinter,
PySimple, Wax, Qt, PySlide, Libavg, etc). The ones I most
recommend are those are effectively
cross-platform with most touch screen APIs or are easily
available open-source (PySimple,
Libavg) GUI toolkits/libraries and/or freely incorporated into
the language itself (AWT, Swing,
Tkinter, etc.). The reason for this is that you may decide to
assume that your program tool is
cross-platform compatible with the devices employed at the
restaurant. You may use any design
pattern such as MVC, for example, to help with the software
development process. All of these
decisions and more should be made during the course of the
software development process that
is the primary purpose of this project and the principle
foundation of this class.
Milestone Assignments for the Team Project
Assignment 1
9. The deliverables for Assignment 1 are:
• A written Feasibility Study and Plan (group assignment)
• A PowerPoint Presentation (group assignment – presented
shortly after due-date)
• Survey 1 (individual assignment)
Feasibility Report
The exact form of the feasibility study is up to you. The length
of the report is likely to be
between five and ten pages. It should include the following
information:
• The client for whom the work will be done.
• List of team members and email addresses.
• A statement of the task to be undertaken. A preliminary
requirements analysis.
• Suggested deliverables.
• Process to be followed, e.g., modified waterfall model,
iterative refinement, incremental
development, phased development, etc.
• Outline plan, showing principal activities and milestones.
• Discussion of business considerations.
• Risk analysis. What can go wrong? What is your fallback
plan?
• Probable technical requirements
Some examples of feasibility studies have been provided on
Canvas under modules for your
review. Both differ in style and format from each other but
both are effective reports.
Assignment 2
10. The purpose of Assignment 2 is to describe to your client and
the course team the progress up to
Milestone 2. The deliverables for Assignment 2 are:
• Presentation on Milestone 2 (group assignment)
• Report on Milestone 2 (group assignment)
• Survey 2 (individual assignment)
If the team is following an iterative process Milestone 2 is
likely to include a first set of
requirements, a provisional design, and a prototype that can be
used to demonstrate the
functionality of the system. If the team is following a
sequential development process,
Milestone 2 should include completion of the requirements
phase and preliminary design work.
Assignment 3
The purpose of Assignment 3 is to describe to your client and
the course team the progress up to
Milestone 3. The deliverables for Assignment 3 are:
• Presentation on Milestone 3 (group assignment)
• Report on Milestone 3 (group assignment)
• Survey 3 (individual assignment)
If the team is following an iterative process Assignment 3
should mark a major milestone when
you can report visible progress to your client. If you are
following a sequential process, this
milestone will include the completion of the design phase and
significant progress in the
11. implementation.
Assignment 4
Assignment 4 consists of a presentation in which you will
demonstrate your system in operation
followed by the handover of the completed system and
documentation to the client. The
deliverables for Assignment 4 are:
• Presentation and demonstration of the completed system(group
assignment)
• Short report (group assignment)
• Submission of project system (group assignment)
• Survey 4 (individual assignment)
Final Handover of the Project
During the semester you will be developing a set of materials
that will be the handover package
for your project. Because every project is different, the exact
content of the package is up to
you, but it should be carefully edited and suitable for handover
to your client (me). The final
package is likely to include some or all of the following:
• A feasibility study
• Requirements analysis and specification
• System and program design
• User interface design and testing
• Test plan, test examples, and results
• Source and binary code
The ProjectProject DescriptionStatement of
RequirementsMilestone Assignments for the Team
ProjectAssignment 1Assignment 2Assignment 3Assignment
12. 4Final Handover of the Project
Literature Survey: Restaurant Automation
The second most important aspect of this course will be a
literature review of case studies
for projects centered around a software engineering topic. The
software engineering topic is
centered around Restaurant Automation. This is an individual
project and should not be
completed as a group assignment.
Given the time constraints and limitations of the Team Project
as well as difficulties arising
from face-to-face meeting due to the on-going COVID-19
pandemic, the topic of this term
paper will be centered around a literature review covering the
same subject area as your
team project. Some helpful tutorials on how to write and format
your literature review may
be found at the following links:
https://libguides.asu.edu/engineeringlitreview/whatis
http://advice.writing.utoronto.ca/types-of-writing/literature-
review/
https://www.lib.ncsu.edu/tutorials/lit-review
Your term paper should include references to at least 5
scholarly sources. These sources
should comprise published scientific books, journal articles,
conference papers, published
13. technical reports and/or summaries, or any sources posted inside
any of the respected
scholarly databases. If you have a questions as to the
legitimacy of a source, then please
ask me by e-mail anytime. Note that Wikipedia does not count
as a legitimate source of
scholarly work so please avoid using it. This literature review
is meant to briefly
summarize, analyze, evaluate, and critique your sources around
the same subject area
covered by your own team project.
The length of the literature survey should between a minimum
of 7 to a maximum of 15
pages (double-spaced, left-aligned, Times New Roman) that
includes a title page, a table of
contents, the report body of your literature survey neatly
organized into appropriately
formatted and named sections, and a References page organized
in MLA format. Please
submit your literature review to Canvas as a pdf document by
no later than December 2nd,
2020.
https://libguides.asu.edu/engineeringlitreview/whatis
http://advice.writing.utoronto.ca/types-of-writing/literature-
review/
https://www.lib.ncsu.edu/tutorials/lit-review
Customer Statement of Requirements
Problem Statement
14. The Chef:
Working in a kitchen can be strenuous and it can be difficult to
keep track of everything
that needs to be done. Orders need to be filled in a reasonable
amount of time, while
simultaneously ensuring that any special dish accommodations
are accounted for. This
needs to be done with accuracy because it can be a disaster if an
order is made incorrectly
or even worse, a person with a food allergy could get hurt as a
result of a waiter’s poor
handwriting. We want to get our orders out with accuracy and
speed to make sure we
have a happy, returning customer. When dishes are complete
and the server does not pick
it up for a few minutes, it can be a pain because the food gets
cold and it takes up space on
the counter that could be used otherwise.
It would be a great help if I had something that clearly displays
all incoming orders. This
can save me more time in the kitchen and make the cooking
process more efficient. Finally,
15. I would love a way to signal to the servers that the order is
finished and ready to be taken to
the table to reduce the time the food sits on the counter.
How do I want your application to help me? The application
should generate a queue for
the chef to follow so that they are aware of what dishes they
should be making and provide
them with a general idea of how old the order is so that they
may stay on track. The
application should also allow chefs to ping waiters when a
certain order is complete so that
they know when to come and pick the meals up so that they may
be delivered to the tables.
The Host/Hostess:
Whenever I am welcoming customers into our restaurant, I aim
to make the start of their
experience as flawless as possible. As parties of multiple
people arrive, they tend to have
different requests and requirements based on how many people
they have and where they
want to sit. Sometimes you can have a party of 8 looking for a
round table in a corner,
16. whereas other times you can get a family of 4 wanting a booth.
I love to find them their
preferred seating, but sometimes there just is not an available
spot, and we are not really
sure how long it will be for an appropriate spot to open up.
Finding an available table for guests can sometimes be a
challenge, especially when I am
unsure of which tables are ready to go. When I am welcoming
customers in, it would be
great if there was a way to easily keep track of which tables are
currently cleaned and
empty and which are occupied, without having to go through
endless reams of paper. At
the same time, it would be nice to keep track of how long each
table has already been
occupied. This will be a big help in providing guests with
accurate estimations on when a
valid seating arrangement may become available.
How will your application help me? Using a handy tablet/phone
I can keep on me, I can
mark tables as occupied, vacant, clean, etc. as the day goes on.
17. Whenever I seat new
guests, I can mark the table as occupied. Once the guests leave,
that table can be marked as
vacant, notifying a busboy that the table is ready to be cleaned.
Once the busboy is
finished, they can mark it as cleaned which lets me know that
the table is ready to be used
once again.
Server:
Working as a server is an extremely demanding job. Servers
have to run around the
restaurant taking customers’ orders, keeping track of which
table ordered what, and
returning orders. Servers have to interact with chefs/cooks and
get food to people right
away so the food does not get cold. They also have to enter
checks when a customer or
group is ready to pay. Since there are many tables in this
restaurant, it is somewhat
difficult to connect a certain order to a certain table, and also to
determine whether a table
needs to be cleaned and set up for the next customer.
Unfortunately, sometimes a server
18. may have to send a dish back if the customer does not like it or
finds something wrong.
How will your application help me? Having an application that
could help take care of
customer’s orders so that they can take their time would be
delightful. It would be
amazing if the software would be able to send the orders
directly to the kitchen and
remember which table and which person ordered each item.
Sometimes customers need
help however I am not currently in the same area as them due to
other job responsibilities.
A way for my customers to ping me whenever they need my
help would be greatly
appreciated! I would also love to be able to receive
notifications from the chef once orders
are finished getting prepared so the food is not standing out for
so long.
Managers:
Managing a restaurant and a full staff of employees is no easy
task, there are many
different things that I have to do throughout my day and it can
19. be a little overwhelming at
times. It can be difficult to keep track of which employees are
on duty, as well as figuring
out payroll for every pay period.
Another issue with employees is keeping track of them, like
whether or not they made it to
their shift on time or are in the building and calculating how
much to compensate the
employees for their time. Any way to reduce the amount of
effort that I have to put into
any of these tasks would be immensely helpful.
In addition to these issues, a restaurant application must be
easily editable and user
friendly. I should be able to update the menu with ease to
ensure that it matches the items
that we are actually serving. Floor plans are also constantly
changing, for instance when a
larger party comes in, so I must be able to edit the floorplan on
the fly to ensure that
customers and waiters are able to use a floor plan that matches
with the restaurant.
20. How will your application help me? Your application can serve
as an employee portal,
allowing employees to clock in and out, and will calculate the
proper amount to provide to
them for compensation. Having this feature will make my life
as a manager so much
easier, since I will not have to do any of the employee logging
or pay calculations -
instead, the application will do them for me. The application
will also verify the
employees location based on IP address or GPS location so that
employees can only clock
in while they are on site. This way, I will know whether an
employee is attempting to
clock-in to work before they even arrive to their shift. In
addition to this, there are very
simple interfaces that will allow you to edit your menu options
and quickly readjust the
floor plan.
Busboy:
Working as a busboy can be a very time consuming job. At
21. times it is hard to keep track of
all the tables currently being used at the restaurant and whether
or not they are vacant for
me to clean.
How will your application help me? Having an easy way to
look at the current status of
tables would be a huge advantage. Being able to see which
tables are ready to be cleaned
and prepared at any given time would be a huge help in
efficiently getting stuff ready.
Once I am done, I would love to be able to update the status of
the table to “ready” so it can
be used for incoming customers.