Non functional Requirements - SYSC3020-Winter2016/SYSC3020LectureNotes GitHub Wiki
A non-functional requirement is a desired property of the system that restricts our choices for constructing a solution.
- Usability: the ease with which a user can learn to operate, prepare inputs for, and interpret outputs of a system.
- Relates to the user interface—number of nested levels in menus, color schemes …, online help, level of documentation …
- Dependability: the property of a system such that reliance can justifiably be placed on the service it delivers. Includes reliability, robustness, and safety.
- Reliability: the ability of a system to perform its required functions under stated conditions for a specified period of time. Includes acceptable mean time to failure, the ability to detect specified faults or withstand specified security attacks.
- Robustness: the degree to which a system can function correctly in the presence of invalid inputs or stressful environment conditions.
- Safety: A measure of the absence of catastrophic consequences to the environment.
- Performance: Quantifiable attributes of the system such as response time, throughput, availability, accuracy.
- Response time: how quickly the system reacts to a user input.
- Throughput: how much work the system can accomplish within a specified amount of time.
- Availability: the degree to which a system is operational and accessible when required for use.
- e.g., an availability of 0.998 means that in every 1000 time units, the system is likely to be available for 998 of these.
- Accuracy: a quantitative measure of the magnitude of error
- Supportability: Requirements concerned with the ease of changes to the system after deployment.
- Adaptability: the ability to change the system to deal with additional application domain concepts.
- Maintainability: the ability to change the system to deal with new technology or to fix defects.
- The product should be able to process 100,000 service requests per second
- The product should be used with poor lighting conditions and the users will wear gloves
- The system shall not disclose any personal information about customers
- The product should be portable to the BSD and CentOS Linux operating systems
- The system configuration should be accessible in a single master configuration file
- Output files should use UTF-8 character encoding
NF requirements should be measurable, otherwise they cannot be tested or serve as basis for a contractual agreement.
| _____Property____ | __________Metric_________ |
|---|---|
| Speed | Process transactions per second |
| User/event response time | |
| Screen refresh time | |
| Size | Bytes |
| Number of RAM chips | |
| Ease of Use | Training time |
| Number of help frames | |
| Reliability | Mean time between failure (MTBF) |
| Acceptable downtime per day/month/year | |
| Rate of failure occurrence | |
| Robustness | Percentage of events causing failure |
| Time to restart after failure | |
| Probability of data corruption on failure | |
| Portability | Percentage of target dependent statements |
| Number of target systems |
In practice, NF requirements have to be prioritized by importance. Some of them need to be met for the system to operate correctly. For others, contractors may offer different levels of compliance at different costs.
When NF requirements enter a contract, they may be may be tied to financial penalties for non-compliance during operation (e.g. up to x hours downtime per month are acceptable, beyond that there will be a compensation of $y per hour).
A functional requirement describes what a software system should do, while non-functional requirements place constraints on how the system will do so. OR The functional requirement is describing the behavior of the system as it relates to the system's functionality. The non-functional requirement elaborates a performance characteristic of the system.
[Functional] A system must send an email whenever an order is placed [NF] The emails should be sent with a latency no grater than 2 hours
Below are some typical NF requirements
- Accessibility
- Capacity, current and forecast
- Compliance
- Documentation
- Disaster recovery
- Efficiency
- Effectiveness
- Extensibility
- Fault tolerance
- Interoperability
- Maintainability
- Privacy
- Portability
- Quality
- Reliability
- Resilience
- Response time
- Robustness
- Scalability
- Security
- Stability
- Supportability
- Testability