🚀 Requirements Engineering Essentials for Software Planning
Tags: Non-Functional Requirements, Quality Criteria, Stakeholder
🎯 Purpose
Systematically gather, document, validate, & manage system requirements to ensure shared understanding among stakeholders.
🌱 Origin
RE emerged in the 1960s from the “software crisis” driven by the need for clear project goals. Its importance was formalized at the 1968 NATO Software Engineering Conference, which advocated for a structured engineering approach to software development.
🧠 Essentials of RE

🧱 Core Types of Requirements
- Functional Requirements (FRs): WHAT the system should do. e.g. “User can reset password via email.”
- Non-Functional Requirements (NFRs): HOW the system should behave. Describe the quality attributes, constraints, & characteristics of the system. e.g. “System must respond within 2s.”
✅ FR Quality Criteria
- Correct: Accurately reflects a user need.
- Unambiguous: Has only one interpretation.
- Consistent: Does not contradict other requirements.
- Testable: Can be objectively verified.
- Feasible: Realistic and achievable.
✅ NFR Quality Criteria
- Measurable: Quantifiable (e.g., “within 2 seconds”).
- Specific: Precise, detailing the “how well.”
- Prioritized: Ranked by importance.
- Testable: Can be objectively verified.
- Feasible: Realistic and achievable.
⚙️ Core Activities
- Elicit – Identify stakeholder needs and system expectations.
- Document – Write requirements in a clear, structured way. Keep it brief & use Visuals help.
- Validate & Align – Resolve conflicts and reach stakeholder agreement.
- Manage – Handle changes and maintain traceability.
🔑 Key Principles
- Clear separation of problem, requirement, & solution. e.g.
- Problem: Online shoppers are abandoning carts due to slow checkout.
- Requirement: Checkout must complete in under 2 seconds.
- Solution: Use a NoSQL database and a dedicated payment microservice.
- Ensure common understanding with glossaries, models, & prototypes.
- Be context-aware: define boundaries, stakeholders, & constraints to understand the env & the relevant factors.
🗺️ Approach
- Iterative & agile, not linear.
- Continuous refinement, with regular stakeholder feedback. Treat as living artifacts.
- Use various techniques: text, use cases, models, and prototypes.
All cheat sheets are taken from our Udemy Online Course. Interested? Check out:
All-In-One Full Stack DevOps - From Idea to Cloud