Card 08/ 09

ExerciseDifficulty: Intermediate1 min

Practice: Sorting a Ride-Sharing App's Requirements

Eight requirements, two lists, and one too vague to keep as written.

Three requirement skills meet on one product here: sorting requirements into functional and non-functional, naming the quality each non-functional one constrains, and spotting a requirement too vague to design for.

A ride-sharing app has these eight requirements. Sort each one, name the quality for each non-functional one, and find the one that cannot be kept as written.

  1. Riders request a ride from their current location.
  2. Drivers accept or decline a request.
  3. The rider sees the driver's position update on a map.
  4. A completed trip's record is never lost.
  5. The app copes with New Year's Eve, at eight times a normal night's requests.
  6. The fare estimate appears in under 500 ms for 99% of requests.
  7. Requests keep working when one data centre fails.
  8. The app should feel responsive.
Check your sorting
The eight requirements, sorted
NumberKindQuality
1FunctionalNone
2FunctionalNone
3FunctionalNone: a live map is a feature
4Non-functionalDurability
5Non-functionalScalability
6Non-functionalLatency
7Non-functionalAvailability
8Non-functionalLatency, but not measurable

Number 3 is the trap: the map updates live, and it is still a feature. The quality inside it, how fresh the position must be, would be its own line. Number 8 names no number, percentile or load. Rewrite it in the shape of number 6, for example "every screen responds in under 300 ms for 95% of taps", or drop it.