Author: Hayden Smith 2021
Why?
What?
IEEE defines a requirement as:
A condition or capability needed by a user to solve a problem or achieve an objective
We would also describe requirements as:
“The hardest single part of building a software system is deciding what to build. No part of the work so cripples the resulting systems if done wrong” (Brooks, 1987)
What are some examples of requirements?
Can we come up with some requirements that are set out by the COMP1531 course?
Functional requirements specify a specific capability/service that the system should provide. It's what the system does.
Non-functional requirements place a constraint on how the system can achieve that. Typically this is a performance characteristic.
For example:
Functional: The system must send a notification to all users whenever there is a new post, or someone comments on an existing post
Non-functional: The system must send emails no later than 30 minutes after from such an activity
Requirements
Requirements Engineering
Elicitation
Analysis
Specification
Validation
Requirements don't just appear in thin air. We have to derive them, and to do that we apply the process of requirements engineering.
Requirements Engineering is:
Requirements engineering often follows a logical process across 4 steps:
Questions and discovery
Building the picture
Refining the picture
Checking you haven't gotten lost
Going back to stakeholders and ensuring requirements are correct
What are some challenges we may face while engaging in Requirements engineering?