restaurant automation analysis&designdoc_v3.1

62
Analysis and Design Document Version 3.1 12/13/2013 Restaurant Management System Object Oriented Software Engineering SE 6301 Ajit Gogul Balakrishnan Kannan Harika Jammula Narla Sandeep Narla Saibaba Prabhakar Ganesamurthy Page 1

Upload: prabhakar-ganesamurthy

Post on 03-Nov-2014

301 views

Category:

Technology


0 download

DESCRIPTION

Analysis and design document of Restaurant Automation project for Object Oriented Software Engineering. Engineered requirements, created use case, sequence, class and system architecture diagram using Rational Rhapsody Applied various design patterns such as Creator, Controller, Low coupling & High cohesion, Information Expert in design phase Implemented using Java in compliance with design specifications using OOP concepts such as inheritance, abstraction, function and operator overloading etc.

TRANSCRIPT

Page 1: Restaurant automation analysis&designdoc_v3.1

Analysis and Design DocumentVersion 3.112/13/2013

Restaurant Management SystemObject Oriented Software EngineeringSE 6301

Ajit Gogul Balakrishnan Kannan

Harika Jammula

Narla Sandeep Narla Saibaba

Prabhakar Ganesamurthy

Sai Madhu Saranya Kachireddy

Page 1

Page 2: Restaurant automation analysis&designdoc_v3.1

Revision History

Page 2

Version Date Description AuthorInception draft 11/4/2013 First draft. To be refined

primarily during elaboration.…

Elaboration 1 Draft 1 11/16/2013 First draft. To be refined primarily later

Elaboration 1 Draft 2 12/3/2013 Second draft. To be refined primarily later

Elaboration 1 Draft 3 12/13/2013 Revised draft.

Page 3: Restaurant automation analysis&designdoc_v3.1

Table of Contents

1. Use Case Diagram …42. Use Case Descriptions ...83. Domain Model ...174. System Sequence Diagram ...205. Operation Contracts ...246. Subsystem Diagram ...357. Use case Realization …388. Design Class Diagram …429. Glossary of terms …4410. Screenshots …46

Page 3

Page 4: Restaurant automation analysis&designdoc_v3.1

1. Use Case DiagramsVersion 2.1

12/3/2013

Restaurant Management System

Page 4

Page 5: Restaurant automation analysis&designdoc_v3.1

Revision History

Page 5

Version Date Description AuthorInception draft 11/16/2013 Inception draft. To be refined

primarily later…

Elaboration 1 Draft 1 11/16/2013 First draft. To be refined primarily later

Elaboration 2 Draft 1 12/3/2013 Second draft. To be refined primarily later

Page 6: Restaurant automation analysis&designdoc_v3.1

Use Case Diagram - Restaurant Management System

Restaurant Management System

Manage order

Process order

Assign waiter to table

Manage Restaurant InformationLogin

«include»

«include»

«include»

«include»

Manage table status

«include»

Handle Payment

«include»

Updatetable status

View tablestatus

WaiterWaiter

ManagerManager

Kitchen StaffKitchen Staff

HostHost

BusboyBusboy

TimeTime

Page 6

Page 7: Restaurant automation analysis&designdoc_v3.1

Use Case Prioritization:

1. Manage order

2. Process order

3. Manage table status

4. Handle payment

5. Assign waiter to table

6. Manage restaurant information

Fully Dressed Casual Brief

1.Manage order 3.Process order 7.Manage restaurant information

2.Login 4.Manage table status

5.Handle payment

6.Assign waiter to table

Page 7

Page 8: Restaurant automation analysis&designdoc_v3.1

2. Use Case DescriptionsVersion 2.0

11/16/2013

Restaurant Management System

Page 8

Page 9: Restaurant automation analysis&designdoc_v3.1

Revision History

Version Date Description Author

1.0 Inception draft

11/16/2013 Refined

2.0 Elaboration 1 draft 1

11/16/2013 First draft. To be refined primarily later

3.0 Elaboration 2 draft 1

12/13/2013 Refined draft.

Page 9

Page 10: Restaurant automation analysis&designdoc_v3.1

Brief Use case descriptions:

1.Manage order:

The waiter selects the table from the floor status screen and adds the item ordered by the user to the tables tab which gets added to the order queue which is viewed by the kitchen staff.

The waiter can cancel/modify the order. The waiter can check the status of the order whether it is ready or not. If the order status is ready waiter serves the order.

2.Login:

The user enters his/her credentials and they are welcomed by a welcome page which is user-role specific.

The welcome page is for:

Waiter : Floor status screen

Kitchen staff: Order queue

Busboy : Floor status screen

Host : Floor status screen

Manager : Restaurant management screen

3.Process order:

Kitchen staff selects order from the order queue in a first-come-first-serve basis and updates order status as 'Processing' when the order is being prepared.

Once the order is ready to be served, the kitchen staff updates the status of the order as ready.

4.Manage table status:

The host views table status screen and identifies available tables to which customers are assigned.

After the customer sits in an available table ,the waiter selects that table and updates its status as occupied(yellow).

Page 10

Page 11: Restaurant automation analysis&designdoc_v3.1

After the order in a table is closed, the waiter assigned to that table, selects that table and updates its status as dirty(red).

The busboy identifies dirty tables from the table status screen.

After cleaning the table marked as dirty(red), Busboy selects that table and updates its status as available(green).

5.Handle Payment:

The waiter selects the mode of payment for the order. If the mode of payment is by credit card, then the waiter swipes the card in the card reader, the card is validated and payment is processed. if the customer pays by cash, the waiter registers the payment as 'by cash ' in the system and completes the payment.

6.Assign waiter to a table:

The host assigns a waiter to a set of tables. The waiter is responsible for this set of tables.

7. Manage Restaurant Information

Time triggers the system to store data in the database about employees, menu items, customers and their orders in day-by-day and hourly intervals. This data is used by the manager for analysis.

The manager can track the status of the various inventories available in the restaurant, analyze the sales of items such as identifying the most popular item, revenue generated by each item etc., tracks employee’s activities such as number of hours worked, performance by accessing the database.

The manager can also authorizes the activities which are restricted to the waiter by the selecting that waiter by ID and authorizing him/her.

The manager alters the floor plan by adding, removing and moving tables in the system. The manager can create/ modify employee profile in the system.

Fully-dressed format:

Use Case: Manage order

Page 11

Page 12: Restaurant automation analysis&designdoc_v3.1

ID: UC-1

Brief description: The waiter selects the table from the floor status screen and adds the item ordered by the user to the order which gets added to the order queue when order is placed. Waiter can cancel/modify/close order. Waiter can also know when order is ready by checking the order status for 'Ready'.

Primary actors: Wait Staff

Secondary actors: Kitchen staff

Preconditions: Update table status to occupied

Main flow:

1. Include : Login.

2. Select table from the floor status screen.

3. System provides waiter with an electronic menu

4. For each item ordered by the user

4.1 The waiter selects the item from electronic menu and adds it to the order

5. After all ordered items have been added, the waiter places the order.

6. The order gets added to the order queue

7. System notifies the kitchen staff that a new order has been placed in the order queue.

8.If order needs to be modified

8.1 Select order

8.2 if order status != 'Processing'

8.2.1 Add/Remove items in the order

8.2.2 Update order

else

8.2.1 Display 'Order cannot be modified'

9.If order needs to be cancelled

Page 12

Page 13: Restaurant automation analysis&designdoc_v3.1

9.1 Select order

9.2 if order status != 'Processing'

9.2.1 Cancel order

9.2.2 Update order status as 'Cancelled'.

9.2.3 Order is removed from the queue.

else

9.2.1 Display order cannot be cancelled.

Post conditions:

If order is placed/modified:

1. The order is closed when order is served, payment for the order is complete and customer leaves the table.

If order is cancelled:

1.Order is removed from the order queue if it is not processed.

Non-Functional requirements:

The waiter needs to place the order in minimal time, so the electronic menu should be organized and quick to use

The order placed must be placed in the order queue within 1 second.

Order modifications/cancellation should be reflected in the order queue within 1 second.

Technology and Data Variation List: None

Open Issues: None

Page 13

Page 14: Restaurant automation analysis&designdoc_v3.1

Use case: Login

ID: UC-2

Brief description: The user enters the login credentials to access their profile.

Primary actors: Kitchen staff, Waiter, Bus-boy, Manager, Host

Secondary actors: None

Preconditions: Access to a terminal which has access to the system network

Main flow:

1. User selects the login button on the screen

2. System prompts for username and password

3. The user enters the required information

4. The system validates the input of the user and the appropriate user interface is displayed. Waiter : Floor status screen

Kitchen staff: Order queue

Busboy : Floor status screen

Host : Floor status screen

Manager : Restaurant management screen

Post conditions: The user is successfully logged into the system and is greeted by a welcome screen.

Non-Functional requirements: Login authentication should take not more than 3 seconds.

Technology and Data Variation List: None

Open Issues: None

Page 14

Page 15: Restaurant automation analysis&designdoc_v3.1

3.Domain ModelVersion 2.1

12/10/2013

Page 15

Page 16: Restaurant automation analysis&designdoc_v3.1

Revision history:

Version Date Description AuthorElaboration 1 Draft 1 11/16/2013 First draft. To be refined

primarily later…

Elaboration 2 Draft 1 12/10/2013 Refined draft …

Page 16

Page 17: Restaurant automation analysis&designdoc_v3.1

Restaurant Management System:

Employee

FirstName:String

EmpType:String

LastName:String

Salary:int

EmpI D:int

Busboy

BusboyID:int

Waiter

WaiterID: int

TableList:int

Host

HostID:intassigns

1*

Kitchen_Staff

KitchenStaffID:int

OrderList:int

Manager

ManagerID:int

Order

orderID:int

orderItem:int

OrderStatus:String

Manages

1

*

processes

1

*Customer

PartCount:int

CustomerID:int

QueueNum:int

attends

1

*

Menu

Category:String

FoodItem:FoodItems

made_from

*

1

Employee_DB

Designation:String

EmpHours:int

EmpID:int

EmpName:String

accesses

1

1Order_DB

KitchenStaffID:int

OrderID: int

WaiterID:int

OrderItemID:int

accesses

1

1Inventory_DB

ItemCount:int

ItemID:int

ItemName:String

Price: int

accesses

1

1Table

TableID:int

TableStatus:String

assignedTo 1

*

cleans

1

*

Bill

Amount: int

BillID: int

PaymentMode:String

Status:String

Has

1

1

pays

1

1

generates

1

1

FloorPlan

TablePositionID:int

Table:Table

PlanID:int

Alters

1

1

Views1

1

Views1

1

Views1

1

OrderQueue

OrderID: int

OrderStatus:String

added_to

*

1

CustomerQueue

CustomerID: int

CustomerPosition:int

added_to

*

1

Page 17

Page 18: Restaurant automation analysis&designdoc_v3.1

4.System Sequence DiagramVersion 2.0

12/3/2013

Page 18

Page 19: Restaurant automation analysis&designdoc_v3.1

Revision history:

Version Date Description AuthorElaboration 1 Draft 1 11/16/2013 First draft. To be refined

primarily later…

Elaboration 2 Draft 1 12/3/2013 Refined draft …

Elaboration 3 Draft 1 12/13/2013 Revised draft

Page 19

Page 20: Restaurant automation analysis&designdoc_v3.1

ManageOrder:

Page 20

Page 21: Restaurant automation analysis&designdoc_v3.1

[for each items ordered]loop [for each items ordered]loop

[else]

[For each item to be added]loop

[For each item to be removed]loop

[If order_status!=processing||ready]alt

[If modify_order==true]opt

[else]

[For each item to be added]loop

[For each item to be removed]loop

[If order_status!=processing||ready]alt

[If modify_order==true]opt

[else]

[If order_status!=processing||ready]alt

[If Cancel_order==true]opt

[else]

[If order_status!=processing||ready]alt

[If Cancel_order==true]opt

System

Notify()

Update()order in database

Place() order in order queue

Notify()

Update() order in database

Remove() order from order queue

Notify() Kitchen staff

Remove() order from Database

Place() order in order queue

:Waiter

Select()

Table selected

Menu

select() category

Category items list

Select() item

Item added to order

Place() order

Order placed

Select()

order details

Add()

Item added

Remove()

Item removed

Update()

Order updated

order cannot be modified

Select() order

order details

Cancel() order

Order cancelled

Order cannot be cancelled

Logout()

Login

Ref

Page 21

Page 22: Restaurant automation analysis&designdoc_v3.1

Login:

[I f Authentication==Failure]

[I f Employee==Waiter| |Busbo||Host]opt

[I f Employee==Manager]opt

[I f Employee==KitchenStaff]opt

[I f Authentication== Successful]alt

[I f Authentication==Failure]

[I f Employee==Waiter| |Busbo||Host]opt

[I f Employee==Manager]opt

[I f Employee==KitchenStaff]opt

[I f Authentication== Successful]alt

[I f Authentication==Failure]

[I f Employee==Waiter| |Busbo||Host]opt

[I f Employee==Manager]opt

[I f Employee==KitchenStaff]opt

[I f Authentication== Successful]alt

System

Authenticate()

:Employee

EnterCredentials()

FloorStatusScreen

RestaurantManagementScreen

OrderQueueScreen

Authentication Failed

Page 22

Page 23: Restaurant automation analysis&designdoc_v3.1

5.Operation ContractsVersion 1

11/16/2013

Page 23

Page 24: Restaurant automation analysis&designdoc_v3.1

Revision history:

Version Date Description AuthorElaboration 1 Draft 1 11/16/2013 First draft. To be refined

primarily later…

Elaboration 2 Draft 1 12/3/2013 Refined draft …

Page 24

Page 25: Restaurant automation analysis&designdoc_v3.1

Contract CO1:Enter credentials

Operation: Enter Credentials()

Cross references:login

Pre conditions:The user should be an employee of the restaurant

Post Condition:The user credentials should be received by the system

Contract CO2: Authenticate

Operation:Authenticate()

Cross references: login

Pre conditions: The user should enter the credentials

Post Condition: The authentication is acknowledged

Contract CO3:Floor Status Screen

Operation: Floor Status Screen()

Cross references: login

Pre conditions: The employee should be a waiter or Busboy or Host and authenticated

Post Condition: Floor status screen is returned to the employee

Page 25

Page 26: Restaurant automation analysis&designdoc_v3.1

Contract CO4:Restaurant Management Screen

Operation: Restaurant Management Screen()

Cross references: login

Pre conditions: Employee should be a manager and authenticated

Post condition:Restaurant management screen is returned to the employee

Contract CO5:Order Queue Screen

Operation: Order Queue Screen()

Cross references:login

Pre conditions: The employee should be a kitchen staff and authenticated

Post condition:Order queue screen should be returned

Contract CO6: Authentication failed

Operation: Authentication failed()

Cross references:login

Pre conditions: Employee credentials should be incorrect

Post condition: Authentication failure is acknowledged

Page 26

Page 27: Restaurant automation analysis&designdoc_v3.1

Contract CO7: Select table

Operation: Select table()

Cross references: Manage order, Update table status, View table status, Assign waiter to table

Pre conditions: User must be logged in

Post Condition: The desired table object has been selected

Contract CO8: Table selected

Operation: Display table status()

Cross references: View table status

Pre conditions: The desired table object has been selected

Post condition: The status attribute of the selected table object is displayed

Contract CO9: Menu

Operation: Display menu()

Cross references: Manage order

Pre conditions: The status attribute of the selected table object is changed to ‘occupied’.

Page 27

Page 28: Restaurant automation analysis&designdoc_v3.1

Post conditions: The menu object is invoked.

Contract CO10: Select category

Operation: Select category ()

Cross reference: Manage order

Pre-condition: The menu object is invoked.

Post-condition: The desired category attribute of the menu object is selected.

Contract CO11: Category items list

Operation: Display category ()

Cross reference: Manage order

Pre-condition: The desired category attribute of the menu object is selected.

Post-condition: The list of items belonging to the selected category attribute is displayed

Contract CO12: Select item

Operation: Select item()

Cross reference: Manage order

Pre-condition: The list of items belonging to the selected category attribute is displayed

Page 28

Page 29: Restaurant automation analysis&designdoc_v3.1

Post-condition: The desired item object is invoked.

Contract CO13: Item added to order

Operation: Update order()

Cross reference: Manage order

Pre-condition: The desired item object is invoked

Post-condition: A order instance o is created. Attributes of o are initialized.

Contract CO14: Place order

Operation: Place order()

Cross reference: Manage order

Pre-condition: A order instance o is created.

Attributes of o are initialized.

Post-condition: o is associated with kitchen staff

The attributes of order object are initialized.

Contract CO15: Notify

Operation: Notify()

Cross reference: Manage order

Page 29

Page 30: Restaurant automation analysis&designdoc_v3.1

Pre-condition: o is associated with kitchen staff

The attributes of order object are initialized.

Post-condition: The pending order attribute is set to true.

Contract CO16: Update order in database

Operation: Update order DB()

Cross reference: Process order

Pre-condition: The pending order attribute is set to false

Post-condition: A order_DB instance odb is created

Attributes of odb are initialized

odb is associated with kitchen staff

Contract CO17: Order placed

Operation: Order placed()

Cross reference: Process order

Pre-condition: A order_DB instance odb is created

Attributes of odb are initialized

odb is associated with kitchen staff

Post-condition: The order status attribute of o is updated as ‘ready’

Page 30

Page 31: Restaurant automation analysis&designdoc_v3.1

Contract C018: Select order

Operation: Select order

Cross reference: Manage order

Pre-condition: The user should login

The orderID attribute of o exists

Post-condition: The desired orderID attribute is selected

Contract C019: Order details

Operation: Display order()

Cross reference: Manage order

Pre-condition: The desired orderID attribute is selected

Post-condition: The attributes of o are displayed

Contract C020: Add Item

Operation: Add item()

Page 31

Page 32: Restaurant automation analysis&designdoc_v3.1

Cross reference: Manage order

Pre-condition: The desired orderID attribute is selected

The attributes of o are displayed

Post-condition: o is associated with the kitchen staff

The attributes of order object are updated.

Contract C021: Add Item

Operation: Remove Item

Cross reference: Manage order

Pre-condition: The desired orderID attribute is selected

Post condition: The order item attribute of the selected orderID is removed

o is associated with the kitchen staff

Contract C022: Add Item

Operation: Update order

Cross reference: Manage order

Pre-condition: The desired orderID attribute is selected

The attributes of o are displayed

Post condition: The order item attributes of the selected orderID is updated

o is associated with the kitchen staff

Page 32

Page 33: Restaurant automation analysis&designdoc_v3.1

Contract C023: Cancel order

Operation: Cancel order()

Cross reference: ManageOrder

Pre-condition: The desired orderID attribute is selected and order status attribute is not processed

Post condition The order object of the selected order ID is destroyed

o is associated with the kitchen staff

Contract C024: Order cannot be modified

Operation: Order cannot be modified

Cross reference: Manage order

Pre-condition: The desired orderID is attribute is selected and order status attribute is processed

Post condition: None

Contract C025: Order cannot be cancelled

Page 33

Page 34: Restaurant automation analysis&designdoc_v3.1

Operation: Order cannot cancelled

Cross reference: Manage order

Pre-condition: The desired orderID is attribute is selected and order status attribute is processed

Post condition: None

6.Sub-system DiagramVersion 2

12/3/2013

Page 34

Page 35: Restaurant automation analysis&designdoc_v3.1

Revision history:

Version Date Description AuthorElaboration 1 Draft 1 11/16/2013 First draft. To be refined

primarily later…

Elaboration 2 Draft 1 12/3/2013 Refined draft …

Page 35

Page 36: Restaurant automation analysis&designdoc_v3.1

Login_Subsystem

Inventory_Subsystem

UserInterface_Subsystem

Waiter

Database_Subsystem

OrderManagement_Subsystem

OrderDBInventoryDB

EmployeeDB

Manager

KitchenStaff

Host

Busboy

TableStatusscreen Login Screen

OrderQueueScreen

Menu

OrderQueueSystem

OrderStatusSystem

AddEmployeeControl

RemoveEmployeeControl

PayrollControl

SelectItemControl

QueueControl

TakeOrderControl

CompleteOrderControl

ManageOrderControl

TableStatusControl

TableStatusControl

AuthenticationControl

InventoryStatisticsControl

Restaurant Automation System

Page 36

Page 37: Restaurant automation analysis&designdoc_v3.1

7.Use Case RealizationVersion 2

12/10/2013

Page 37

Page 38: Restaurant automation analysis&designdoc_v3.1

Revision history:

Version Date Description AuthorElaboration 2 Draft 1 12/3/2013 First draft. To be refined later. …

Elaboration 3 Draft 1 12/10/2013 Refined draft

Page 38

Page 39: Restaurant automation analysis&designdoc_v3.1

Manage Order:

Page 39

Page 40: Restaurant automation analysis&designdoc_v3.1

[for each item to be added]loop [for each item to be added]loop

[for each item to be removed]loop [for each item to be removed]loop

[order not confirmed]

[order is confirmed]alt

[order not confirmed]

[order is confirmed]alt

[order not confirmed]

[order is confirmed]alt

[else]

[for each item to be removed]loop

[for each item to be added]loop

[order not confirmed]

[order is confirmed]alt

[if(orderStstus!=Processing||Ready)]

opt

[if modify_order=true]loop

[else]

[for each item to be removed]loop

[for each item to be added]loop

[order not confirmed]

[order is confirmed]alt

[if(orderStstus!=Processing||Ready)]

opt

[if modify_order=true]loop

[else]

[if order_status!=processing||ready]alt

[if cancel_order=true]alt

[else]

[if order_status!=processing||ready]alt

[if cancel_order=true]alt

:KitchenStaffGUI

:OrderDB:OrderQueue:Order

getOrderQ ueue()

orderList

set_WaiterID,TableID

:ControllerOrder

get_order()

order_details

store_order(order)

create(waiterID,tableID)

update_item_list(order,ItemsList)

update_item_list(order,ItemsList)

store_order(order)

remove_item_from_list(itemID)

success

set_order_status_InQueue

remove_order(orderID)

order_created

item_added

order

orderID

success

order_details

item_removed

add_item_to_list(itemID)

item_added

order_removed

set_order_status_InQueue

:Menu:ControllerGUI

place_order_request(order)

create_order_request(WaiterID,TableID)

getCategories()

get_category_items(name)

add_items_request(order,ItemsList)

add_items_request(order,AddedItemsList)

place_order_request(order)

order_placed

remove_item_request(itemID)

orderStatus

remove_order_request(orderID)

order

categories

category_ items

order

order

order_placed

orderStatus

category_ items

get_category_items(name)

item_added

add_item_request(itemID)

item_removed

order_cancelled

:WaiterGUI

create_order_request(WaiterID, TableID)

select_category(name)

add_items_request(order,AddedItemsList)

add_items_request(order,AddedItemsList)

CheckOrderStatus(orderID)

remove_item(itemID)

order_confirmed(order)

order_placed

CheckOrderStatus(orderID)

removel_order(orderID)

order

categories

category_ items

get_menu()

order_details

update_items_list

select_category(name)

category_ items

select_item(itemID)

item added

item_removed

order_details

order_cancelled

order

order

order_confirmed(order)

order_placed

update_items_list

:Waiter

select_table()

create_order()

select_category(name)

select_list_item()

Remove()

place_order()

confirm_order()

not_confirmed()

SelectOrder()

remove_item(itemID)

modify_order()

remove_order()

select_ list_item(itemI D)

Add()

menu_categories

select_list_item()

ModifyOrder()

menu_category_items

added_ item_list

updated_item_list

confirm_order

Stored

confirm_order()

added_items_list

not_confirmed()

list_ item_selected

confirm_order

select_category(name)

category_ items

select_item(itemID)

added_item_list

categories

updated_item_list

Updated

added_items_list

Order_cannot_be_modified

order_cancelled

table_tab

order_cannot_be_cancelled

table_tab

Select_order()

Login

Ref

Login:

Page 40

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

:OrderQueue:EmployeeDB:KitchenStaffGUI

order_queue

get_order_queue()

:WaiterGUI

getTables(UserID)

tables_list

:ControllerGUI

get_details(ID)

Create(designation)

password,designation

authenticate(pass)

Create(designation)

:LoginGUI

send_credentials(ID, pass)

:employee

enter_credentials(ID, pass)

waiter_table_screen

Page 41: Restaurant automation analysis&designdoc_v3.1

8.Design Class DiagramVersion 1

12/11/2013

Revision history:

Page 41

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

[else if designation=kitchen_staff]

[if designation=waiter]alt

[if authentication==success]alt

[if ID=valid]alt

:OrderQueue:EmployeeDB:KitchenStaffGUI

order_queue

get_order_queue()

:WaiterGUI

getTables(UserID)

tables_list

:ControllerGUI

get_details(ID)

Create(designation)

password,designation

authenticate(pass)

Create(designation)

:LoginGUI

send_credentials(ID, pass)

:employee

enter_credentials(ID, pass)

waiter_table_screen

Page 42: Restaurant automation analysis&designdoc_v3.1

Version Date Description AuthorElaboration 2 Draft 1 12/3/2013 First draft. To be refined later. …

Elaboration 3 Draft 1 12/11/2013 Refined

Page 42

Page 43: Restaurant automation analysis&designdoc_v3.1

Design Class Diagram:

LoginGUI

EmpID:String

pass:String

enter_cred...

EmployeeDB

Designation:Str...

EmpID:int

Fname:String

Lname:String

get_details():St...

WaiterGUI

Item_list:String

Table_list:int

place_order():...

update_order(...

waiter_table_s...

select_table():...

select_order()...

order_details()...

remove_item()...

order_placed()...

order_update...

ControllerGUI

authenticate()

authentication_faile...

cancel_order():void

create_order_reque...

floor_status_screen...

order_confirmed():void

order_queue_scree...

order_updated():void

remove_item():void

select_category():void

select_category_na...

manages

1 1

accesses

1

1manages

1

1

Order

OrderID:int

OrderItemI...

OrderStatu...

add_item_to_list():void

create_order():void

remove_item_from_list():void

get_order():void

OrderQueue

OrderID:int

OrderStat...

get_order...

place_ord...

remove_f...

placed_in

*

1

OrderDB

KitchenStaffID...

OrderItemID:int

OrderrID:int

TableID:int

get_order_details():void

remove_order():void

update_order():void

store_order():void

stores 1*

Menu

Category:String

CategoryItem...

ItemID:int

ItemName:Str...

categories():void

category_items():void

get_categories():void

get_category_items():void

select_list_item()

retrieves1 1

ControllerOrder

add_item_req...

cancel_order_...

create_order_...

get_order_det...

item_added():...

item_removed...

order_cancelle...

order_created...

order_details()...

order_placed()...

order_update...

place_order_r...

manages 1

*

requests 11

updates

1

1

updates

11

KitchenStaffGUI

attribute_2:int

Order_queue:...

notify()

Create():void

manages

1

1

contains

1

1

Page 43

Page 44: Restaurant automation analysis&designdoc_v3.1

9.Glossary of terms

1. Employee – Any individual who is involved in the day to day activities of the

restaurant, including cooks, bus boys, kitchen staff, waiters, managers and hosts.

2. Manager – Type of employee with the highest administrative authority, with the power to change the status of all other employee types, and access to restaurant statistics and floor plan.

3. Customer – Any individual who is benefitted by the restaurant automation system and the employees working within its framework.

4. Kitchen Staff – Type of employee who is responsible for processing the orders submitted by the waiter in the order queue.

5. Waiter – Type of employee who is responsible to interact with the customer by creating, modifying and cancelling orders and to keep the order queue up to date

6. Host – Type of employee who welcomes the customer and directs them to an available table. The role of host can be performed by both manager and waiter.

7. Bus Boy – Type of employee who is responsible to keep the tables clean and to change the status of the table from dirty to clean upon completion.

8. Table – A physical object in which the prepared food is presented to the customer, for which a waiter is assigned.

9. Table Status – Shows the status of a table and the waiter who is assigned to that table.

10. Dirty – A type of table status indicating the condition which implies that it is not being currently occupied by any customers and needs to be cleaned to make it available to a new customer.

11. Busy – A type of table status indicating the condition where it cannot be assigned to a new customer and also that it cannot be cleaned.

12. Ready – A type of table status indicating the condition that it is ready for service and that it can be assigned to a new customer.

13. Order – A description submitted by the waiter, which is to be cooked and eventually

delivered to the table from which it has been ordered.

14. Order Status – Used to know the status of the order placed by the customer based on which the waiter decides what needs to be done.

15. Processing – A type of order status which means that the order is currently being cooked and the order cannot be modified after this.

Page 44

Page 45: Restaurant automation analysis&designdoc_v3.1

16. Ready – A type of order status which means that the order has been cooked and ready to be served to the customer.

17. Payroll – Used for calculating the salary of an employee based on the number of hours worked. It

differs based on the designation of the employee.

18. Menu – List of dishes available in the restaurant from which the waiter chooses from based on the request from the customer.

19. Floor Plan – Shows the arrangement of all the tables in the restaurant which can be modified only by the manager when required.

Page 45

Page 46: Restaurant automation analysis&designdoc_v3.1

10.ScreenshotsVersion 1

12/13/2013

Page 46

Page 47: Restaurant automation analysis&designdoc_v3.1

Login Screen:

Waiter Table Screen:

Page 47

Page 48: Restaurant automation analysis&designdoc_v3.1

Waiter Table Tab:

Page 48

Page 49: Restaurant automation analysis&designdoc_v3.1

Create Order Screen:

Adding Items to Order:

Page 49

Page 50: Restaurant automation analysis&designdoc_v3.1

Removing Items to Order:

Page 50

Page 51: Restaurant automation analysis&designdoc_v3.1

Place Order

Waiter Login

Page 51

Page 52: Restaurant automation analysis&designdoc_v3.1

Kitchen Staff GUI with OrderQueue:

Modify Order

Page 52

Page 53: Restaurant automation analysis&designdoc_v3.1

Kitchen Staff GUI with updated orderQueue

Page 53

Page 54: Restaurant automation analysis&designdoc_v3.1

Cancel Order

Order removed from orderqueue

Page 54

Page 55: Restaurant automation analysis&designdoc_v3.1

Page 55