Page 122 -
P. 122
There are many kinds of nonfunctional requirements, including:
Availability
A system’s availability, or “uptime,” is the amount of time that it is operational and
available for use. This is specified because some systems are designed with expected
downtime for activities like database upgrades and backups.
Efficiency
Specifies how well the software utilizes scarce resources: CPU cycles, disk space, mem-
ory, bandwidth, etc.
Flexibility
If the organization intends to increase or extend the functionality of the software after it
is deployed, that should be planned from the beginning; it influences choices made dur-
ing the design, development, testing, and deployment of the system.
Portability
Portability specifies the ease with which the software can be installed on all necessary
platforms, and the platforms on which it is expected to run.
Integrity
Integrity requirements define the security attributes of the system, restricting access to fea-
tures or data to certain users and protecting the privacy of data entered into the software.
Performance
The performance constraints specify the timing characteristics of the software. Certain
tasks or features are more time-sensitive than others; the nonfunctional requirements
should identify those software functions that have constraints on their performance.
Reliability
Reliability specifies the capability of the software to maintain its performance over time.
Unreliable software fails frequently, and certain tasks are more sensitive to failure (for
example, because they cannot be restarted, or because they must be run at a certain time).
Reusability
Many systems are developed with the ability to leverage common components across
multiple products. Reusability indicates the extent to which software components
should be designed in such a way that they can be used in applications other than the
ones for which they were initially developed.
Robustness
A robust system is able to handle error conditions gracefully, without failure. This includes
a tolerance of invalid data, software defects, and unexpected operating conditions.
Scalability
Software that is scalable has the ability to handle a wide variety of system configuration
sizes. The nonfunctional requirements should specify the ways in which the system
may be expected to scale up (by increasing hardware capacity, adding machines, etc.).
Usability
Ease-of-use requirements address the factors that constitute the capacity of the software
to be understood, learned, and used by its intended users.
114 CHAPTER SIX