Take A Number: Requirements / OOA

2 minute read

Published:

During the lab classes I teach, I find it hard to give my attention equally to all student groups.

I’ve been using part of the WayApp.Cards app that issues deli-counter style numbers and tickets that can be saved in the iOS or Android wallets.

However, that app can do much more than I need, so I thought I’d make my own, simpler, app that does just what I need: the deli-counter part.

Shall Statements

Functional Requirements

The Take A Number system shall allow the Customer to take a number.

The Take A Number system shall allow the Servicer to see the next number to be serviced.

The Take A Number system shall notify the Customer associated with the next number to be serviced.

The Take A Number system shall allow the Servicer to register with the system.

The Take A Number system shall allow the Servicer to see how many people are yet to be served.

Non-Functional Requirements

The Take A Number system shall issue notifications to the Customer in less than a second.

Use Cases

This is what it needs to do.

It needs to:

  • Register the Lecturer or Store (Servicer) with the system.
  • Allow a Customer to Take A Number.
  • Allow the Servicer to get the next number to service and notify the Customer with that number that it’s their turn.
  • Allow the Servicer to see the length of the queue.

To speed things up a little, I’ve added the simple use case reports to each of the sequence diagrams blow.

Analysis

After a bit of playing around, this yields the following analysis classes. Note that I’ve taken the braindead approach of generating an analysis class for:

  • Every line in the use case diagram connecting an actor with a use case.
  • Every use case (except that I merged two of them).
  • Some of the nouns in the use case reports.

Sequence Diagrams

Use Case: Register

Use Case: Take A Number

Use Case: Service Next Number

Use Case: See Queue Length

What’s Next?

Now that we’ve fleshed out the shall statements a little with use cases and analysis classes, we need to switch to high level design to answer the question: what technology are we going to use to implement this?