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
   117   118   119   120   121   122   123   124   125   126   127