> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/general-paradigms/design-architecture-aims/non-functional-requirements.md).

# Non functional requirements

## What

* defines the quality attribute of a software system. They represent a set of standards used to judge the specific operation of a system.
* Example
  * how fast does the website load?
  * Types of Non-functional requirement are Scalability, Capacity, Availability, Reliability, Recoverability, Data Integrity, Maintainability, Serviceability, Security, Regulatory, Manageability, Environmental, Data Integrity, Usability, Interoperability etc.
  * Performance-  for example Response Time, Throughput, Utilization, Static Volumetric
* It is essential to ensure the usability and effectiveness of the entire software system. Failing to meet non-functional requirements can result in systems that fail to satisfy user needs.
* allows you to impose constraints or restrictions on the design of the system across the various agile backlogs. Example, the site should load in 3 seconds when the number of simultaneous users are > 10000.
* Description of non-functional requirements is just as critical as a functional requirement.
* It's an attribute of the system, and product properties
* It is non-mandatory
* It is captured as a quality attribute, hard to capture
* Helps you to verify the performance of the software.
* Concentrates on the user's expectation.
* Documentation describes how the product works
* Type of Testing involves Non-Functional Testing like Performance, Stress, Usability, Security testing, etc.
* defines the performance attribute of a software system

## Examples of Non-functional requirements

* Users must change the initially assigned login password immediately after the first successful login. Moreover, the initial should never be reused.
* Employees never allowed to update their salary information. Such attempt should be reported to the security administrator.
* Every unsuccessful attempt by a user to access an item of data shall be recorded on an audit trail.
* A website should be capable enough to handle 20 million users with affecting its performance
* The software should be portable. So moving from one OS to other OS does not create any problem.
* Privacy of information, the export of restricted technologies, intellectual property rights, etc. should be audited.

## Advantages of Non-Functional Requirement

* The nonfunctional requirements ensure the software system follow legal and compliance rules.
* They ensure the reliability, availability, and performance of the software system
* They ensure good user experience and ease of operating the software.
* They help in formulating security policy of the software system.
