Requirements
Requirements Engineering
Elicitation
Analysis
Specification
Validation
User Stories
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:
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
We need a durable process to determine requirements
“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)
Requirements Engineering is:
Requirements engineering often follows a logical process across 4 steps:
Questions and discovery
Building the picture
Refining the picture
Going back to stakeholders and ensuring requirements are correct
What are some challenges we may face while engaging in Requirements engineering?