Skip to content

Latest commit

 

History

History
108 lines (77 loc) · 5.9 KB

File metadata and controls

108 lines (77 loc) · 5.9 KB

Requirements Engineering

Overview

Requirements Engineering (RE) is the process of discovering, analyzing, documenting, validating, and managing the needs and constraints of a software system. It ensures that what you build matches what users and stakeholders truly need — before a single line of code is written.

RE bridges the communication gap between technical teams and non-technical stakeholders, providing a shared understanding of goals, scope, and success criteria.


Status: 🟡 Recommended

Who should learn this?
✅ Developers writing specs, features, or roadmap docs
✅ Product managers, architects, and consultants
⚠️ Optional for small solo projects, but highly valuable for team-based systems

Learning Objectives

  • Understand the phases of requirements engineering: elicitation, analysis, specification, validation
  • Identify and categorize functional vs non-functional requirements
  • Use techniques like use cases, user stories, and acceptance criteria
  • Model behavior using diagrams (e.g., state machines, sequence, or activity diagrams)
  • Validate requirements for completeness, consistency, and feasibility
  • Understand the impact of poorly defined or changing requirements

Key Concepts

  • Requirements Elicitation – Interviews, workshops, observation, questionnaires
  • Functional Requirements – What the system should do (features, inputs/outputs)
  • Non-Functional Requirements – Constraints (e.g., performance, scalability, usability)
  • User Stories vs Use Cases – Agile vs structured requirement formats
  • Acceptance Criteria – How to test whether a requirement is met
  • Requirements Specification – Documented, structured format for all requirements
  • Requirements Validation – Ensuring requirements are complete, consistent, and testable
  • Requirements Traceability – Linking features, tests, and code to specific requirements

Study Materials

Books

Title Author Description
Software Requirements, 3rd Edition Karl Wiegers & Joy Beatty Definitive guide to discovering, writing, and managing requirements
Mastering the Requirements Process Suzanne & James Robertson Introduces the “Volere” approach to structured RE
User Stories Applied Mike Cohn Practical book on writing and refining Agile-style requirements
Fundamentals of Requirements Engineering Klaus Pohl Textbook-style deep dive into RE concepts and methods
Designing Software Architectures Rick Kazman et al. Focuses on how requirements impact architectural design

Online Courses / Resources

Course Platform Description
Requirements Writing Coursera (UNSW Sydney) Teaches rules for writing clear, concise, and verifiable requirements
Software Requirements Prioritization Coursera (University of Alberta) Prioritize conflicting stakeholder requirements
Mastering Requirements Engineering Udemy Full RE lifecycle: elicitation, modeling, validation
Requirements Engineering MOOC FutureLearn Structured course on professional RE practices
Agile Requirements Foundations LinkedIn Learning Lightweight and Agile-style requirements management
IEEE SWEBOK: Requirements Engineering Chapter IEEE Overview of RE in formal software engineering practices

Applications in Algorithmic Trading

Concept Use Case
Functional Requirements Define behavior for strategy modules, risk checks, order management
Non-Functional Requirements Capture latency thresholds, throughput, availability, auditability
User Stories Define trader or quant workflows with acceptance criteria
Traceability Link requirements to test suites, metrics dashboards, and compliance reports
Validation Ensure regulatory or performance criteria are explicitly captured and testable

Hands-On Projects

  • 🛠️ Interview yourself or a colleague as a stakeholder and write 5 functional and 5 non-functional requirements
  • 🛠️ Write user stories with acceptance criteria for a new trading bot or strategy
  • 🛠️ Create a use case diagram and one sequence diagram for a trade flow
  • 🛠️ Create a requirements traceability matrix for a small project
  • 🛠️ Perform a validation review: are all your requirements complete, consistent, and testable?

Assessment

  • ✅ Can you define functional and non-functional requirements for any project?
  • ✅ Have you written and validated user stories or formal specs?
  • ✅ Do you gather and document requirements before implementation?
  • ✅ Can you trace a requirement from documentation to code to test?

Next Steps