The club wants more
Hillside Sports Club has a booking tool. Now it has a new problem.
"Our courts are full on Saturdays. People want a waiting list. If somebody cancels, the next person should get the court. Also, we do not know if members are happy. Can members give a rating after they play?"
This is the practice scenario for the specialism project. It is our own invention.
Key words
| Word | What it means | Example |
|---|---|---|
| Requirement | Something the solution must do or be. | Show the waiting list |
| Functional requirement | What the solution does. | Join a waiting list |
| Non-functional requirement | How well the solution works, such as speed or safety. | Books in under 30 seconds |
| Acceptance criteria | Clear checks that show a requirement is done. | When a booking is cancelled, the first person waiting gets the court |
| KPI | Key performance indicator: a number that shows if the project is a success. | Double bookings: 0 |
| Constraint | A limit you must keep to. | Python 3.10, 4 weeks |
| Slot | One court at one hour. | court 1 at 10:00 |
| Scope | What is in the project and what is not. | No online payment |
The cells students fill in are left blank in this preview.
Five questions find the functional requirements
| Ask | Club example |
|---|---|
| What goes in? (inputs) | Member name, court, hour |
| What data is needed? | The bookings and the waiting list |
| What happens to the data? (processing) | Add a name. Remove a name. Count the place in the line. |
| What are the rules? (logic means rules) | The first person waiting gets a cancelled court. Nobody waits twice for one slot. |
| Where will it run? (the platform is the device) | On a phone and on the desk computer |
The cells students fill in are left blank in this preview.
Acceptance criteria: when is it done?
"The waiting list works" is not clear. Who decides? Acceptance criteria are clear checks. Anyone can run them and get the same answer.
A good pattern: "When this happens, then that happens." Use numbers and names so the check can be repeated.
From a requirement to checks
| Requirement | Acceptance criteria (When ..., then ...) |
|---|---|
| A member can join the waiting list | When a member joins for a full slot, then they are told their place in the line, for example 1. |
| A member is not added twice | When the same member joins the same slot again, then the tool says they are already waiting. |
| A cancelled court goes to the next person | When a booking is cancelled and one person is waiting, then that person gets the booking. |
| The tool is quick | When a member makes a booking, then it takes under 30 seconds. |
The cells students fill in are left blank in this preview.
Quick check: is it measurable?
Have a go
Quick check: is it measurable?
4 questionsYour answers are marked here and are not kept. A college account keeps every student’s marks.
Try it: a criterion as a check
waiting = []
def join(waiting, name):
waiting.append(name)
return len(waiting) # the place in the line
# Criterion: the first member to join is told "place 1".
place = join(waiting, "Sam")
print("Place:", place)
print("Criterion met:", place == 1)
# Add a second member. What place should they get?
KPIs for the club
| KPI | How it is measured | Target |
|---|---|---|
| Double bookings | Count in the booking file each month | 0 |
| Courts empty after a cancellation | Count of cancelled slots with nobody booked | Fewer than 2 a week |
| Average member rating | Total of ratings divided by the number of ratings | At least 4 out of 5 |
The cells students fill in are left blank in this preview.