5.4. What are the Types and Categories of Requirements?
In the UP, requirements are categorized according to the FURPS+ model [Grady92], a useful mnemonic with the following meaning:[1]
[1] There are several systems of requirements categorization and quality attributes published in books and by standards organizations, such as ISO 9126 (which is similar to the FURPS+ list), and several from the Software Engineering Institute (SEI); any can be used on a UP project.
- Functional
features, capabilities, security. - Usability
human factors, help, documentation. - Reliability
frequency of failure, recoverability, predictability. - Performance
response times, throughput, accuracy, availability, resource usage. - Supportability
adaptability, maintainability, internationalization, configurability.
The "+" in FURPS+ indicates ancillary and sub-factors, such as:
- Implementation
resource limitations, languages and tools, hardware, ... - Interface
constraints imposed by interfacing with external systems. - Operations
system management in its operational setting. - Packaging
for example, a physical box. - Legal
licensing and so forth.
It is helpful to use FURPS+ categories (or some categorization scheme) as a checklist for requirements coverage, to reduce the risk of not considering some important facet of the system.Some of these requirements are collectively called the quality attributes, quality requirements , or the "-ilities" of a system. These include usability, reliability, performance, and supportability. In common usage, requirements are categorized as functional (behavioral) or non-functional (everything else); some dislike this broad generalization [BCK98], but it is very widely used.architectural analysis p. 541