Unit 17 · lesson
Start With a Problem You Can Turn Into Requirements
"Make an app" is not a requirement.
A capstone needs a problem statement narrow enough to test.
Examples include a study-session tracker, fictional robotics match analyzer, invented inventory tool, tournament calculator, synthetic sensor analyzer, or command-line planning tool.
Do not use real student records, passwords, private identifiers, school operational systems, or data you do not have permission to process.
A capstone starts with testable requirements
A bounded problem becomes an implementation only after acceptance evidence is explicit.
- PROBLEMdefine a narrow problem boundaryidentify
- AUDIENCEstate who needs the result and whytranslate
- REQUIREMENTSwrite observable functional expectationsmap
- ACCEPTANCE EVIDENCEdefine tests or outputs that prove each requirementstress
- EDGE STATESname invalid, empty, duplicate, and boundary cases
Define the audience
Write:
User/audience:
Problem they need solved:
What they do today:
What the program will improve:
What the program will not attempt:
A boundary prevents the project from becoming a vague everything-system.
Functional requirements must be testable
Weak: the app should manage scores well.
Testable: given a set of match results, the program calculates total points for each team and prints teams in descending score order.
A testable requirement has observable acceptance evidence.
Add a quality constraint
Functional requirements describe what behavior exists. A quality constraint describes an important property of the solution, such as deterministic calculations, visible invalid-record handling, or allowing a second formatter without changing scoring logic.
Do not invent enterprise-scale requirements without a credible reason or evidence plan.
Acceptance table
Create:
| ID | requirement | acceptance evidence |
|---|---|---|
| R1 | ... | test/input/output that proves it |
| R2 | ... | ... |
You need at least five functional requirements and one quality constraint. Each requirement must map to at least one validation case later.
Identify failure states early
For each input boundary ask about missing, malformed, duplicate, empty, or out-of-range data. For calculations ask about zero denominators, representation, empty results, and ties. For objects ask about invalid construction and mutation that could break invariants.
Do not wait for implementation to discover that the requirement never defined these cases.
Capstone requirement evidence
Submit the problem boundary, audience, requirements table, and at least three failure/edge states.
A reviewer should be able to design tests from this artifact without reading your source code yet.