Before the questions, make sure you can: explain why requirements are the most expensive place to make a mistake; separate a requirement (what) from a design decision (how); classify requirements as functional, non-functional (quality) or constraints; identify stakeholders and their power and interest; choose elicitation techniques (interviews, observation, surveys, workshops, prototypes, document and data analysis) and know the weakness of each; write good interview questions (open, not leading, about past behaviour); write user stories in the "As a… I want… so that…" form, check them with INVEST, and add acceptance criteria in Given/When/Then form; use personas and a story map to cut a minimum viable product; classify features with the Kano model; and use AI to support elicitation without letting it invent requirements or leak interview data.
Fred Brooks wrote: "The hardest single part of building a software system is deciding precisely what to build." Code that perfectly implements the wrong requirement is worthless — and, as Chapter 1 showed, a requirement mistake found late is the most expensive mistake of all. Requirements engineering is the work of discovering what stakeholders really need, writing it down clearly enough to build and test, and keeping it up to date as needs change. This chapter is about discovering; Chapter 4 is about specifying and managing.
What is a requirement?
A requirement is a statement of something the system must do, or a property it must have, to be useful to its stakeholders. Good requirements describe what is needed and why, not how it will be built.
| Statement | Requirement or design? | Why |
|---|---|---|
| "Students can see which classmates are free to study on Thursday evening." | Requirement | Describes a need, not a solution |
"Store availability in a MySQL table called slots." |
Design | Describes how — the team may choose another way |
| "Buddy must never show a full solution to a graded exercise." | Requirement | A rule the system must respect |
| "Use GPT-style model X with temperature 0.2." | Design | A technical choice |
Stakeholders often describe a solution: "I want a button that exports the forum to Excel." Ask "why?" until you reach the need: "…so that I can see which topics students struggle with before the exam." Now the team may find a better solution (a weekly "hardest topics" summary) — or confirm the export really is best.
Requirements come in three kinds:
- Functional requirements — what the system does: "A student can report an inappropriate post."
- Non-functional (quality) requirements — how well it does it: performance, reliability, usability, security (Chapter 1's quality attributes). "A reported post is hidden from other students within 1 minute."
- Constraints — limits on the solution: "The system must run on the university's cloud servers in mainland China"; "It must be finished by week 15"; "Only open-source libraries with permissive licences."
Engineers also separate user requirements (in the stakeholder's language, for the stakeholder) from system requirements (detailed, precise, for the developers and testers). Both are needed: the first to agree on the need, the second to build and test it.
Stakeholders: who decides what "useful" means?
A stakeholder is anyone who affects or is affected by the system. Users are only one group. For StudyBuddy:
| Stakeholder | Example need | Power | Interest |
|---|---|---|---|
| Students | Fast, trustworthy help; privacy | Low (individually) | High |
| Instructors | No homework cheating; answers match the course | High (they decide to allow it) | High |
| Teaching assistants | Manageable moderation | Low | High |
| University IT / administration | Compliance with law and policy, security | High | Medium |
| AI-service provider | Terms of use, usage limits | Medium | Low |
| Future maintainers | Understandable code and documentation | Low | Medium |
A power/interest grid helps plan communication: high power + high interest → manage closely (instructors); high power + low interest → keep satisfied (IT); low power + high interest → keep informed (students, TAs); low power + low interest → monitor.
Forgetting a stakeholder is one of the most common causes of project failure. If the university IT office is not consulted until week 14, it may simply refuse to host the app.
Why eliciting requirements is hard
We call it elicitation (drawing out), not "collection", because requirements are rarely lying around ready to be picked up:
- People do not know what they want until they see something — then they know what they don't want ("yes, but…").
- Tacit knowledge: experts do things so automatically that they forget to mention them ("of course we never publish grades before the exam board meets").
- Say ≠ do: people describe the ideal process, not what they really do.
- Conflicts: students want complete answers; instructors want hints only.
- Different vocabulary: "course" may mean a subject (CPS 4301) or one section (W03).
- Change: needs change while the system is built — and because it is built.
Elicitation techniques
| Technique | Good for | Weakness |
|---|---|---|
| Interviews | Goals, problems, rules, priorities of one person | People describe the ideal, not reality; interviewer bias |
| Observation (ethnography) | Real work, tacit knowledge, workarounds | Slow; people behave differently when watched |
| Surveys / questionnaires | Many people, measuring how common a need is | Only answers the questions you thought of |
| Workshops / focus groups | Resolving conflicts, building agreement | Loud people dominate; groupthink |
| Prototypes / mock-ups | "I'll know it when I see it" needs, UI | Stakeholders think the prototype is almost finished |
| Document analysis | Rules, laws, policies, existing forms | Documents may be outdated |
| Data / analytics | What users actually do in an existing system | Shows what, not why |
Good teams combine techniques: interview five students, observe two study sessions in the library, run a survey to see how common the discovered problems are, then test a paper prototype.
Interviewing well
Most requirements work starts with interviews, and most interviews are done badly. Rules of thumb:
- Ask open questions ("How do you prepare for a CPS exam?") before closed ones ("Do you use WeChat groups?").
- Do not lead. "Wouldn't it be great if an AI answered your questions?" tells the person what to say. Ask "What happens when you get stuck on an exercise at 11 p.m.?"
- Ask about the past, not the future. "Tell me about the last time you looked for a study partner" gives facts; "Would you use a matching feature?" gives polite guesses (people say yes to be nice).
- Ask "why?" — often more than once — to move from solutions to needs.
- Listen more than you talk; do not pitch your idea during an interview.
- Summarize and confirm at the end: "So the main problem is…, is that right?"
- Get consent before recording, and protect the recording — it is personal data.
An interview is not a sales meeting. You are a detective, not a salesperson. A detective asks "What happened that night?", not "You were at home, weren't you?"
User stories: small pieces of value
Agile teams usually write requirements as user stories:
As a first-year student, I want to see classmates in my course who are free at the same time as me, so that I can form a study group before the midterm.
The three parts answer who, what and why. The "so that" part is often skipped — and it is the most important, because it lets the team judge whether a different solution would meet the same need.
A story is not a full specification. Ron Jeffries described the 3 Cs: the Card (a short reminder), the Conversation (the team and stakeholders discuss details), and the Confirmation (acceptance criteria that say when it is done).
INVEST — six qualities of a good story:
| Letter | Meaning | Bad example | Better |
|---|---|---|---|
| Independent | Can be built in any order | "Show matches (needs story 12 first)" | Split so each gives value alone |
| Negotiable | Details can still be discussed | A story that dictates the exact UI | Describe the need, leave the design open |
| Valuable | Gives value to a user or customer | "Set up the database" | "Save my availability so I don't retype it" |
| Estimable | The team can estimate it | "Make Buddy smart" | "Buddy cites the lecture slide it used" |
| Small | Fits in one Sprint | "Build the whole Q&A board" | "Post a text question in a course" |
| Testable | Clear pass/fail | "Matching should be user-friendly" | Given/When/Then criteria |
Acceptance criteria: Given / When / Then
Acceptance criteria turn a story into testable statements. A popular format from Behaviour-Driven Development (BDD) is Given / When / Then:
Scenario: Two students with overlapping free time are matched
Given Ana and Ben are both enrolled in CPS 4301
And both marked Thursday 19:00-21:00 as free
When Ana opens "Find study partners" for CPS 4301
Then Ben appears in her list
And the shared time "Thu 19:00-21:00" is shown
Scenario: Students in different courses are not matched
Given Ana is enrolled in CPS 4301 and Chen is not
When Ana opens "Find study partners" for CPS 4301
Then Chen does not appear in her list
- Given — the starting situation (context, data).
- When — the one action or event being tested.
- Then — the observable outcome.
- And / But — continue the previous step.
Good criteria cover the happy path, the important alternative paths and the edge cases (no free time entered, the student is the only one in the course, overlapping by only 5 minutes).
A strong acceptance criterion is observable by a tester without reading the code: "Then Ben appears in her list" can be checked; "Then the matching algorithm works" cannot.
Personas, story maps and the MVP
A persona is a realistic, specific description of a typical user, built from research, used to keep the team focused on real people: "Yuki, 19, first-year CS student from Shanghai, commutes 50 minutes, studies late at night, shy to ask questions in class, uses her phone for everything." Designing for Yuki leads to different choices (mobile first, anonymous questions) than designing for "users".
A story map (Jeff Patton) arranges stories along the user's journey (left to right: join course → ask a question → get help → find partners → prepare for the exam) and by priority (top to bottom). Cutting a horizontal line across the map gives the minimum viable product (MVP): the smallest release that lets users complete the whole journey and gives the team real feedback.
The Kano model: not all features are equal
Professor Noriaki Kano classified features by how they affect satisfaction:
| Category | If present | If absent | StudyBuddy example |
|---|---|---|---|
| Must-be (basic) | No extra satisfaction — it is expected | Strong dissatisfaction | Login with the WKU account; posts are not lost |
| One-dimensional (performance) | The more, the better | The less, the worse | Speed of Buddy's answers |
| Attractive (delighter) | Delight | No dissatisfaction — nobody expected it | Buddy links to the exact slide in the lecture |
| Indifferent | Nobody cares | Nobody cares | A choice of 20 colour themes |
| Reverse | Some users are annoyed by it | Those users are happier | Daily push notifications |
Kano surveys ask two questions per feature: "How would you feel if the app had X?" (functional) and "How would you feel if it did not have X?" (dysfunctional), each answered with I like it / I expect it / I am neutral / I can tolerate it / I dislike it. The pair of answers gives the category. Delighters become must-bes over time — yesterday's surprise is tomorrow's expectation.
The AI angle: AI as an elicitation assistant
AI tools can help at several points:
- Preparing: drafting an interview guide, listing stakeholders you forgot, reading a university policy and summarizing its rules.
- Analysing: grouping 200 survey comments into themes; turning an interview transcript into draft user stories.
- Checking: finding missing edge cases in acceptance criteria ("What if the student has no free time entered?"), spotting vague words.
And the risks:
- Invented requirements (hallucinations). Ask an AI for "requirements for a study app" and you get a generic list — gamification badges, dark mode, social feeds — that no WKU stakeholder asked for. Every requirement needs a source: a person, a document, or data. Requirements without a source are only ideas.
- The AI is not your user. An AI can simulate "a typical student", but it has never missed a bus to Wenzhou or tried to find a partner the night before a CPS midterm. Simulated users are useful for preparing questions, never as a replacement for real people.
- Privacy and consent. Uploading a recorded interview with an instructor to an external AI service is a data transfer. Get consent, remove names, or use a tool approved by the university.
- Bias toward the average. AI proposes what is common in its training data; your stakeholders' special needs (Chinese and US regulations, Chinese-English bilingual students) may be exactly what is uncommon.
Requirements for an AI feature
Buddy itself is an AI feature, and it needs requirements that ordinary features do not:
- Scope: "Buddy answers only from the materials the instructor uploaded for that course; otherwise it says it does not know."
- Quality measure: "In a monthly sample of 50 answers reviewed by the instructor, at least 90% are correct and cite a source."
- Behaviour on uncertainty: "If no relevant material is found, Buddy suggests posting the question on the Q&A board."
- Policy: "Buddy gives hints, not complete solutions, for exercises the instructor has tagged as graded."
- Fallback: "If the AI service does not respond within 10 seconds, the student sees a clear message and can post to the board instead."
These are elicited from instructors, IT and students like any other requirement — and they will need special testing methods (Chapter 9).
Key takeaways
- A requirement says what and why; a design says how. Ask "why?" to turn solutions into needs.
- Functional requirements, non-functional (quality) requirements and constraints are all needed; user requirements and system requirements serve different readers.
- Identify all stakeholders; use a power/interest grid to plan how to involve them.
- Elicitation is hard (unknown needs, tacit knowledge, say ≠ do, conflicts); combine techniques.
- Interview with open, non-leading questions about past behaviour; get consent.
- User stories: As a… I want… so that…; check with INVEST; confirm with Given/When/Then acceptance criteria covering edge cases.
- Personas keep the team focused on real people; a story map helps cut an MVP; the Kano model shows which features are must-be, performance or delighters.
- AI helps prepare, analyse and check — but every requirement needs a real source, and interview data must be protected.
Ready? Close the notes and practise.
30 questions. Predict the output before you check — that is the skill the exam measures.