Dominic Charley-Roy
https://github.com/dominiccharleyroy
dominic.charley-roy @ mail.mcgill

Our goal is to understand and document a system's functions, behavior and constraints.
Requirements are:
We'll be focusing on the requirement process through the use of an example. We will cover:
Throughout this lecture, we will be using the example of a Bixi backend management system for developing requirements.


Our system needs to track information for: bikes, members and guest users and utilization at each station.
The system will take care of billing and registration. It will provide both an online and a mobile interface.
We won't be building software for the stations themselves. Rather, station software will tell us when a bike is checked in / out.
These describe system features and behaviors.
Examples:
Functional requirements are features, ie. they're either present/implemented or not.
Non-functional requirements describe some quality characteristic of the software, and is generally more quantifiable (eg. response time). These also include design constraints (eg. platform or required interface) and process constraints (eg. required documentation or process).
They are usually broken down into different types...
These describe requirements on system metrics.
Examples:
These describe requirements on system metrics.
Examples:
Examples:
Examples:
Examples:
Examples:
Functional requirements describe system and behaviour (features). They're either implemented or not.
Non-functional requirements describe some characteristic.
The most important thing about requirements is that they should be correct and that everyone is on the same page. But they should also be of high quality. Why?
Good requirements can save you significant effort down the line. If you miss a requirement, you may have to re-design...
Also, remember that these are your contract with the customer!
Change the second requirement to read: each bike is assigned a unique numeric id greater than 0!
The system can deal with a lot of users (how many?)
vs.
The system can support up to 1,000 users (better!)
The user interface is easy to use
vs.
75% of users will be able to login and locate the preference screen in under 5 minutes.
The system will never go down
vs.
The system will be online 360 days a year.
Good requirements should be correct and high quality in order to save time down the line. A good requirement is: