AiTechWorlds
AiTechWorlds
When Amazon's product team interviewed users for a new checkout flow, every user said the same thing: "Make it faster." The team built a 40% faster checkout engine, deployed it, and conversion rates barely moved.
Then a UX researcher watched actual users. "Faster" did not mean page load time. It meant fewer steps. Users were abandoning at the fourth form page, not because the pages were slow, but because there were too many of them. Amazon introduced one-click ordering — the fewest possible steps — and conversions jumped.
The lesson: customers describe their pain, not the solution. Requirements engineering is the discipline of bridging that gap — understanding what people actually need, not just what they say.
The Standish Group's CHAOS Report — surveying thousands of projects over three decades — consistently finds:
Requirements engineering is not a bureaucratic formality. It is the highest-leverage investment a team can make.
Requirements divide into three categories. Every project has all three.
What the system must do.
Examples:
Functional requirements are testable: you can write a test that verifies whether the system does the thing.
How well the system does it.
| Quality Attribute | Example Metric | Real Benchmark |
|---|---|---|
| Performance | p99 response time < 200ms | Google Search: median ~500ms |
| Availability | 99.99% uptime | AWS SLA: 99.99% for most services |
| Scalability | Handle 10× traffic spike without config change | Netflix: 200M+ concurrent users |
| Security | OWASP Top 10 vulnerabilities mitigated | Uber: OAuth 2.0, TLS 1.3 |
| Usability | < 3 clicks to complete primary task | Amazon one-click ordering |
| Maintainability | New feature deployable in < 1 week | Meta deploys code twice per day |
Non-functional requirements are the ones teams skip — and then spend months fixing in production.
What the system must live within.
Elicitation is the active process of discovering what stakeholders need. Stakeholders do not hand you a complete specification — you extract it through deliberate techniques.
| Technique | When to Use | Output | Stakeholder Involvement | Effort |
|---|---|---|---|---|
| Interviews | Early discovery, complex domain knowledge | Notes, requirements draft | High — one-on-one | Medium |
| Workshops (JAD) | Multiple stakeholders, resolve conflicts | Agreed requirements | Very high — group | High |
| Observation | Users cannot articulate workflow | Workflow models, task lists | Medium — passive | High |
| Prototyping | Unclear UI/UX, visual learners | Validated wireframes | High — iterative feedback | Medium–High |
| Questionnaires | Many users, quantitative data needed | Statistical priorities | Low per person | Low |
| Document Analysis | Legacy system replacement | Existing rules, data models | None (passive) | Medium |
A Use Case describes an interaction between an actor (user or external system) and the system to accomplish a goal.
Use Case: Purchase Item
Use cases are technology-neutral — they describe what happens, not how the system implements it.
In Agile, use cases give way to User Stories combined with acceptance criteria written in BDD (Behaviour-Driven Development) format.
User Story:
As a returning customer, I want my shipping address pre-filled at checkout so that I do not have to re-enter it each time.
Acceptance Criteria (Given/When/Then):
Given I am a returning customer with a saved shipping address
When I proceed to checkout
Then my default shipping address is pre-filled in the shipping form
Given I am a new customer with no saved address
When I proceed to checkout
Then the shipping address form is empty and all fields are editable
This format — popularised by tools like Cucumber and SpecFlow — serves as both a requirement and an automated test specification.
For formal projects, the IEEE 830 Software Requirements Specification (SRS) standard provides a structured document template:
While few Agile teams write full SRS documents, the structure is valuable for regulated industries (medical devices, financial systems) where requirements must be auditable.
Not all requirements are equally important. Teams need explicit methods to decide what gets built first.
MoSCoW Method:
| Priority | Meaning | Example |
|---|---|---|
| Must Have | System fails without it | User login |
| Should Have | Important, but workaround exists | Password strength indicator |
| Could Have | Nice to have if time/budget permits | Dark mode |
| Won't Have (this time) | Explicitly deferred | Multi-language support |
Kano Model: Categorises features by user satisfaction impact:
A Requirements Traceability Matrix (RTM) links every requirement to the design elements that implement it and the test cases that verify it. This ensures nothing gets built without a requirement and nothing is specified without being tested.
| Requirement ID | Description | Design Component | Test Case ID | Status |
|---|---|---|---|---|
| FR-001 | User can log in with email/password | AuthService.login() | TC-001, TC-002 | Implemented |
| FR-002 | Password reset via email link | AuthService.resetPassword() | TC-003 | In Progress |
| NFR-001 | Login response < 200ms | AuthService, Redis cache | TC-010 (load test) | Not Started |
Amazon famously requires that new products begin with a press release — written from the future, announcing the product as if it already exists and is a success. The press release must answer:
This forces requirements thinking before any architecture or implementation discussions begin. If you cannot write a compelling press release, the product concept is not ready. The press release is, in effect, the highest-level requirements document.
Get this course's notes on Telegram!
Free cheat sheets, summaries & practice exercises