🎓 A1Learner
🔍
0 of 47 lessons completed

Clarify the Requirements

Requirements clarification is the step of asking questions until a vague ask becomes a precise list. The precise list then fixes what gets designed and what stays out.

One ask, two readings

A vague ask for a music app can mean listeners only. The same ask can also include artists who upload songs.

listeners_only = ["play a song", "search songs", "make a playlist"]
with_uploads = listeners_only + ["upload a song", "share an upload"]
print("listeners only:", len(listeners_only))
for feature in listeners_only:
    print("-", feature)
print("listeners and artists:", len(with_uploads))
for feature in with_uploads:
    print("-", feature)

Two kinds of requirement

Actions and qualities belong on separate lines of the list. Each kind guides a different part of the design.

functional = ["play a song", "upload a song"]
non_functional = ["fast answers", "stays available", "uploads stay private"]
print("functional:", len(functional))
for item in functional:
    print("-", item)
print("non-functional:", len(non_functional))
for item in non_functional:
    print("-", item)

What stays out

Clarifying also names what the system will not do. Written exclusions stop the design from growing without a decision.

in_scope = ["play a song", "search songs", "upload a song"]
out_of_scope = ["sell tickets", "run adverts"]
print("in scope:", len(in_scope))
for item in in_scope:
    print("-", item)
print("out of scope:", len(out_of_scope))
for item in out_of_scope:
    print("-", item)

Example

functional = ["play a song", "search songs", "upload a song", "make a playlist"]
non_functional = ["fast answers", "stays available", "uploads stay private"]
out_of_scope = ["sell tickets", "run adverts"]
print("functional:", len(functional))
print("non-functional:", len(non_functional))
print("out of scope:", len(out_of_scope))
total = len(functional) + len(non_functional) + len(out_of_scope)
print("decisions in total:", total)

Key points

  • Functional requirements: the actions the system must let people do.
  • Non-functional requirements: the qualities the system must have, like speed and reliability.
  • Vague ask: one short sentence that can be read in more than one way.
  • Precise list: a written set of actions, qualities, and exclusions.

In this example, clarifying one vague ask produces 9 recorded decisions, and each decision shapes or limits the design.

Note

Ask about users, actions, and limits before drawing any part of the design.

Try it Yourself

Edit the code, then press Run.

Running is simulated

Exercise

Which item is a functional requirement for a music app?