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.

Types of Non-Functional Requirements

  • 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.

Sommerville's Classification

Examples

  • 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

Measurability of NF requirements

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

Agreeing on NF requirements

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).

Difference between Functional Requirements and Non-Functional Requirements

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.

Example

[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

List of 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
⚠️ **GitHub.com Fallback** ⚠️