jump to navigation

Non Functional Requirements August 31, 2005

Posted by Coolguy in Business Analysis.


  • Functional requirements describe the behaviors (functions or services) of the system that support user goals, tasks or activities.
  • Non-functional requirements include constraints and qualities.
    Qualties are properties or characteristics of the system that its stakeholders care about and hence will affect their degree of satisfaction with the system. Constraints are not subject to negotiation and, unlike qualities,are off-limits during design trade-offs. Contextual constraints are characteristics of the “super-system” (i.e., the larger system into which the system under development will fit) or the development organization that constrain the development in some way.


  • Look and Feel Requirements
  • Usability Requirements
  • Performance & Responsiveness Requirements
  • Availability Requirements
  • Operational Requirements
  • Maintainability and Portability Requirements
  • Security Requirements
  • Cultural and Political Requirements
  • Legal Requirements

Run-time qualities vs Development-time qualities

Run-time Qualities:

  • We can think of functional requirements capturing what the system must
    do, and the run-time qualities as describing how well these functional requirements are satisfied
  • Run-time qualities include
  • Usability (ease-of-use, learnability, memorability, efficiency, etc.)
  • Configurability and supportability
  • Correctness, reliability, availability
  • Quality of service requirements such as performance (throughput, response time, transit delay, latency,etc.)
  • Safety properties (so-called because they “prevent bad things from happening”), such as security and fault tolerance
  • Operational scalability including support for additional users or sites, or higher transaction volumes
  • In general, run-time qualities provide value to the user and have more to do with short-term competitive differentiation.

Development-time Qualities:

  • In addition to developing systems that satisfy their users, the development
    organization has a vested interest in the properties of the artifacts (architecture, design, code, etc.) of the development process.
  • Qualities of these artifacts influence the effort and cost associated with current development as well as support for future changes or uses (maintenance, enhancement or reuse).
  • Examples of development-time quality requirements are:
  • Modifiability or extensibility—ability to add (unspecified) future functionality
  • Reusability—ability to (re)use in future systems
  • Localizability—ability to make adaptations due to regional differences
  • Evolvability—support for new capabilities or ability to exploit new technologies
  • Development-time qualities, for the most part, provide business value (as opposed to direct value to the end user) and have to do with the long-term competitiveness of the business.

Sources of Non-Functional Requirements

Run-time non-functional requirements arise from the operating environment, the user(s), and competitive products

  • System Constraints: Here one is looking for elements of the environment into which the system must fit, that may serve as constraints on the system. This may be true of the installed infrastructure (e.g., hardware
    and OS platforms) or legacy applications, or may be in the form of organizational factors or the process that the system will support.
  • User Objectives, Values and Concerns: In establishing the run-time qualities for a system, it is important to identify all the categories of user (including other systems) that will interact with the system, and under-stand what quality attributes they care about. A quality attribute such as performance may surface for one user as a concern, and another as a value.
  • Development Organization Constraints: In product development, constraints placed by upper levels of management typically take the form of required time-to-market of the application or release and/or fixed
    development resources.
  • Competitors and Industry Trends: Benchmarks of competitors’ processes (e.g., how many products they release per year, with how many people) and industry trends, may drive the organization to adopt more aggressive productivity objectives which may in turn translate into development-time qualities such as evolvability and reuse.

SMART Requirements

  • In general, non-functional requirements have been (at best) specified in loose, fuzzy terms that are open to wide ranging and subjective interpretation.
  • As such, they provide little guidance to architects and engineers. They should be SMART.
  • Specific: without ambiguity, using consistent terminology, simple and at the appropriate level of detail.
  • Measurable: it is possible to verify that this requirement has been met. What tests must be performed, or what criteria must be met to verify that the requirement is met?
  • Attainable: Technically feasible.
  • Realizable: realistic, given the resources. Do you have the staffing? Do you have the skill? Do you have access to the development infrastructure needed? Do you have access to the run-time infrastructure needed? Do you have enough time?
  • Traceable: linked from its conception through its specification to its subsequent design, implementation and test.

Tools for Capturing and Documenting Non-Functional Requirements

  • Use cases have been widely used to specify functional requirements. By simply extending use cases with a field for all the non-functional requirements associated with the use case, run-time qualities associated with particular functionality can be captured conveniently





No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: