Non Functional Requirement
Non Functional Requirement
Non Functional Requirement
Martin Glinz
Department of Informatics, University of Zurich, Switzerland
[email protected]
Abstract
Although the term non-functional requirement has
been in use for more than 20 years, there is still no
consensus in the requirements engineering community
what non-functional requirements are and how we
should elicit, document, and validate them. On the
other hand, there is a unanimous consensus that nonfunctional requirements are important and can be
critical for the success of a project.
This paper surveys the existing definitions of the
term, highlights and discusses the problems with the
current definitions, and contributes concepts for overcoming these problems.
1. Introduction
If you want to trigger a hot debate among a group of
requirements engineering people, just let them talk
about non-functional requirements. Although this term
has been in use for more than two decades, there is still
no consensus about the nature of non-functional requirements and how to document them in requirements
specifications.
This paper is an attempt to work out and discuss the
problems that we have with the notion of non-functional requirements and to contribute concepts for
overcoming these problems. The focus is on system (or
product) requirements; the role of non-functional requirements in the software process is not discussed
[16].
The paper is organized as follows. Section 2 surveys typical definitions for the terms functional requirement and non-functional requirement. The
problems with these definitions are discussed in Section 3. Section 4 presents concepts about how these
problems can be overcome or at least alleviated. The
paper ends with a discussion of these concepts.
Proceedings of the 15th IEEE International Requirements Engineering Conference, Delhi, India.
Table 1. Definitions of the term non-functional requirement(s) (listed in alphabetical order of sources)
Source
Antn [1]
Definition
Describe the nonbehavioral aspects of a system, capturing the properties and constraints under
which a system must operate.
Davis [3]
The required overall attributes of the system, including portability, reliability, efficiency, human
engineering, testability, understandability, and modifiability.
IEEE 610.12 [6]
Term is not defined. The standard distinguishes design requirements, implementation requirements,
interface requirements, performance requirements, and physical requirements.
IEEE 830-1998 [7]
Term is not defined. The standard defines the categories functionality, external interfaces,
performance, attributes (portability, security, etc.), and design constraints. Project requirements
(such as schedule, cost, or development requirements) are explicitly excluded.
Jacobson, Booch and
A requirement that specifies system properties, such as environmental and implementation
Rumbaugh [10]
constraints, performance, platform dependencies, maintainability, extensibility, and reliability. A
requirement that specifies physical constraints on a functional requirement.
Kotonya and Sommerville Requirements which are not specifically concerned with the functionality of a system. They place
[11]
restrictions on the product being developed and the development process, and they specify external
constraints that the product must meet.
Mylopoulos, Chung and
... global requirements on its development or operational cost, performance, reliability,
Nixon [16]
maintainability, portability, robustness, and the like. (...) There is not a formal definition or a
complete list of nonfunctional requirements.
Ncube [17]
The behavioral properties that the specified functions must have, such as performance, usability.
Robertson and Robertson A property, or quality, that the product must have, such as an appearance, or a speed or accuracy
[18]
property.
SCREEN Glossary [19]
A requirement on a service that does not have a bearing on its functionality, but describes attributes,
constraints, performance considerations, design, quality of service, environmental considerations,
failure and recovery.
Wiegers [21]
A description of a property or characteristic that a software system must exhibit or a constraint that
it must respect, other than an observable system behavior.
Wikipedia: Non-FuncRequirements which specify criteria that can be used to judge the operation of a system, rather than
tional Requirements [22] specific behaviors.
Wikipedia: Requirements Requirements which impose constraints on the design or implementation (such as performance
Analysis [23]
requirements, quality standards, or design constraints).
ance and constraints. On the other hand, in the definition by Davis [3], every non-functional requirement is
an attribute of the system.
Every requirement (including all functional ones)
can be regarded as a quality, because, according to ISO
9000:2000 [8], quality is the degree to which a set of
inherent characteristics fulfils requirements. Similarly, every requirement can be regarded as a constraint, because it constrains the space of potential
solutions to those that meet this requirement.
Hence, in all definitions that mention the term quality, its meaning is restricted to a set of specific qualities
other than functionality: usability, reliability, security,
etc.
Correspondingly, it is clear that constraint in the
context of non-functional requirements must have a
restricted meaning. However, there is no consensus
among the existing definitions what precisely this restriction should be. For example, IEEE 830-1998 [7] or
Jacobson, Booch and Rumbaugh [10] restrict the
meaning of constraint to design constraints and physi-
4. Elements of a solution
4.1. A faceted classification
In [5], I have proposed that the classification problems, and in a radical sense also the definition
problems be overcome by introducing a faceted classification for requirements (Fig. 1) where the terms
functional requirement and non-functional requirement no longer appear.
Separating the concepts of kind, representation,
satisfaction, and role has several advantages, for
example: (i) It is the representation of a requirement
(not its kind!) that determines the way in which we can
verify that the system satisfies a requirement (Table 2).
(ii) Decoupling the kind and satisfaction facets reflects
the fact that functional requirements are not always
hard and non-functional requirements not always soft.
(iii) The role facet allows a clear distinction of (prescriptive) system requirements and (normative or
assumptive) domain requirements.
Declarative
Type of verification
Review, test or formal verification
Measurement (at least on an ordinal scale)
No direct verification. May be done by
subjective stakeholder judgment of deployed system, by prototypes or indirectly
by goal refinement or derived metrics
Review
Requirement
Project
requirement
Functional
requirement
Functionality
and behavior:
Functions
Data
Stimuli
Reactions
Behavior
System
requirement
Process
requirement
Attribute
Performance
requirement
Specific quality
requirement
Time and
space bounds:
Timing
Speed
Volume
Throughput
-ilities:
Reliability
Usability
Security
Availability
Portability
Maintainability
...
Constraint
Physical
Legal
Cultural
Environmental
Design&Implementation
Interface
...
Result
Functional
Performance
Specific
quality
Constraint
guage [13], [14] where we identify a dominant functional concern and decompose the system model hierarchically according to the structure of this concern.
All other concerns are modeled as aspects of this primary model. Aspect composition is supported by formal model weaving semantics.
Thus we can document attributes and constraints as
separate entities, but, at the same time, attach them
systematically to those elements in the primary model
hierarchy where they apply. Global attributes and constraints are attached to the root of the decomposition
hierarchy, while an attribute or constraint that restricts
only some parts of the model is attached exactly to
these parts by modeling join relationship from the aspect to the affected parts of the primary model.
5. Discussion
The analysis of the definitions given in Table 1 reveals the deficiencies of the current terminology. The
new definitions proposed in this paper
are more systematically constructed than any existing definitions that I am aware of,
are representation-independent; i.e. the kind of a
requirement is always the same, regardless of its representation,
make it easier to classify a given requirement: with
the classification criteria given in Table 3, the classification is much less ambiguous than with traditional definitions,
better support the evolution of a requirements specification, because the classification of a requirement
remains invariant under refinement and change as
long as the concern to which the requirements pertains remains the same.
With an aspect-oriented documentation of attributes
and constraints, the documentation and traceability
problems of non-functional requirements are alleviated.
As this is mainly theoretical work, the validation of
the theoretical soundness and usefulness of these ideas
will be the extent to which other researchers find these
ideas useful and adopt or build upon them.
The systematic exploration of the practical usefulness is a topic for further investigation.
References
[1]
[2]
[3]
[4]
X. Franch (1998). Systematic Formulation of NonFunctional Characteristics of Software. Proc. 3rd Int'l
Conf. Requirements Engineering (ICRE98). 174-181.
[5] M. Glinz (2005). Rethinking the Notion of Non-Functional Requirements. Proc. Third World Congress for
Software Quality (3WCSQ 2005), Munich, Germany,
Vol. II. 55-64.
[6] IEEE (1990). Standard Glossary of Software Engineering Terminology. IEEE Standard 610.12-1990.
[7] IEEE (1998). IEEE Recommended Practice for Software Requirements Specifications. IEEE Std. 830-1998.
[8] ISO 9000 (2000). Quality Management Systems Fundamentals and Vocabulary. International Organization
for Standardization.
[9] ISO/IEC 9126-1 (2001). Software Engineering Product Quality Part 1: Quality Model. International Organization for Standardization.
[10] I. Jacobson, G. Booch, and J. Rumbaugh (1999). The
Unified Software Development Process. Reading,
Mass.: Addison Wesley.
[11] G. Kotonya, I. Sommerville (1998). Requirements Engineering: Processes and Techniques. John Wiley & Sons.
[12] A. van Lamsweerde (2001). Goal-Oriented Requirements Engineering: A Guided Tour. Proc. 5th International Symposium on Requirements Engineering
(RE01), Toronto. 249-261.
[13] S. Meier, T. Reinhard, C. Seybold, and M. Glinz
(2006). Aspect-Oriented Modeling with Integrated Object Models. Proc. Modellierung 2006, Innsbruck,
Austria. 129-144.
[14] S. Meier, T. Reinhard, R. Stoiber, M. Glinz (2007).
Modeling and Evolving Crosscutting Concerns in
ADORA. Proc. Early Aspects at ICSE: Workshop in Aspect-Oriented Requirements Engineering and Architecture Design.
[15] A. Moreira, A. Rashid, and J. Arajo (2005). MultiDimensional Separation of Concerns in Requirements
Engineering. Proc. 13th IEEE International Requirements Engineering Conference (RE05). 285-296.
[16] J. Mylopoulos, L. Chung, B. Nixon (1992). Representing and Using Nonfunctional Requirements: A ProcessOriented Approach. IEEE Transactions on Software
Engineering 18, 6 (June 1992). 483-497.
[17] C. Ncube (2000). A Requirements Engineering Method
for COTS-Based Systems Development. PhD Thesis,
City University London.
[18] S. Robertson and J. Robertson (1999). Mastering the
Requirements Process. ACM Press.
[19] SCREEN (1999). Glossary of EU SCREEN Project.
http://cordis.europa.eu/infowin/acts/rus/projects/screen/
glossary/glossary.htm (visited 2007-07-05)
[20] I. Sommerville (2004). Software Engineering, Seventh
Edition. Pearson Education.
[21] K. Wiegers (2003). Software Requirements, 2nd edition.
Microsoft Press.
[22] Wikipedia: Non-Functional Requirements
http://en.wikipedia.org/wiki/Non-functional_requirements
(visited 2007-07-05)
[23] Wikipedia: Requirements Analysis http://en.wikipedia.org
/wiki/Requirements_analysis (visited 2007-07-05)