Topics
The course covers the four major aspects of software requirements engineering: elicitation, modelling, analysis (e.g., triage, conflict management, risk analysis), and documentation. The aspects are broken down into nine topics, each of which focuses on a particular requirements-related problem to be solved when developing a software system or on a particular technique for addressing a requirements-related problem.
Listed below are the topics that are typically covered in every offering of this course. This term the order in which topics are covered will generally progress from (1) techniques employed when developing software at start-ups and tech companies to (2) techniques employed when developing enterprise software systems or when consulting (i.e., developing bespoke software for a client) to (3) techniques employed when developing safety-critial systems. One impact of this ordering of topics is that course concepts become increasingly difficult over the course of the term, where some of the later modelling languages are mathematical in nature.
1: Introduction
The costs of poor requirements engineering, and why requirements engineering is difficult.
2: Requirements Elicitation
Project scoping, business requirements, (lean) business modelling, stakeholder analysis, sources of requirements, strategies for identifying requirements.
3: Requirements Analysis
Requirements triage and prioritization. Cost-benefit analysis. Analytic Hierarchy Process. Conflicts and negotiation. Cost Estimation. Risk Analysis.
4: Requirements Modelling
Workflow modelling (Use-case diagrams, Scenarios, Activity diagrams, Data-Flow Diagrams). Functional requirements. Domain modelling (UML Class and Object diagrams). Modelling dynamic behaviour of a software system (extended state machine models). Constraint modelling of business rules (Object Constraint Language (OCL)) and of behaviours (temporal logic).
5: Quality Requirements
Nonfunctional requirements (e.g., performance, security, useability, maintainability). Fitness criteria.
6: Requirements Engineering Reference Model
Defining a system’s boundaries. Monitorable inputs and controllable outputs. Requirements vs. specifications. Environmental assumptions.
7: Prototyping
Design and refinement of user-interfaces. Navigation maps.
8: Validation and Verification
Walkthroughs, inspections, technical reviews of requirements documents. Executable specifications. Automated analysis. Verifying that specifications satisfy requirements.
9: Software Requirements Specification
Organizing a system’s requirements, specifications, and other relevant details into a Software Requirements Specification (SRS).