Developing Requirements

Taking the Mystery out of QoS Requirements
Solving the mystery: How to write a good Quality of Service
(QoS) requirement, also known as a Non-functional
Requirement?
QoS requirements must comply with all the requirement best
practices like feasible and unambiguous; But how?
Requirement Checklist
Requirement statements should conform to the following properties. References: [IEEE][SEI]
1. Correct [IEEE]. Each requirement must accurately describe the functionality to be delivered.
The reference for correctness is the source of the requirement, such as an actual customer
or a higher-level system requirements specification. A software requirement that conflicts
with a corresponding system requirement is not correct.
2. Unambiguous [IEEE]. The reader of a requirement statement should be able to draw only
one interpretation of it. Also, multiple readers of a requirement should arrive at the same
interpretation. Natural language is highly prone to ambiguity. Avoid subjective words like
user-friendly, easy, simple, rapid, efficient, several, state-of-the-art, improved, maximize,
and minimize.
3. Complete [IEEE]. No requirements or necessary information should be missing.
Completeness is also a desired characteristic of an individual requirement. IT is hard to spot
missing requirements because they aren’t there. Organize the requirements hierarchically to
help reviewers understand the structure of the functionality described, so it will be easier for
them to tell if something is missing.
4. Consistent [IEEE]. Consistent requirements do not conflict with other requirements or with
higher level (system or business) requirements.
5. Verifiable [IEEE]. See whether you can devise tests or use other verification approaches,
such as inspection or demonstration, to determine whether each requirement is properly
implemented in the product. If a requirement is not verifiable, determining whether it was
correctly implemented is a matter of opinion. Requirements that are not consistent, feasible,
or unambiguous also are not verifiable. Any requirement that says the product shall
“support” something is not verifiable.
6. Modifiable [IEEE]. You must be able to revise the requirements when necessary and
maintain a history of changes made to each requirement. This means that each requirement
be uniquely labeled and expressed separately from other requirements so you can refer to it
unambiguously.
Page: 1
Taking the Mystery out of QoS Requirements
7. Traceable [IEEE]. You should be able to link each software requirement to its source, which
could be a higher-level requirement, a use case, or a voice-of-the-customer statement. Also
link each software requirement to the design elements, source code, and test cases that are
constructed to implement and verify the requirement.
8. Necessary. Each requirement should document something the customers really need or
something that is required for conformance to an external requirement, and external
interface, or a standard. Another way to think of “necessary” is that each requirement
originated from a source you recognize as having the authority to specify requirements.
9. Prioritized. Assign an implementation priority to each requirement, feature, or use case to
indicate how essential it is to include it in a particular product release.
10. Requirements shouldn’t aggregate multiple requirements. Traceable requirements are
uniquely labeled and are written in a structured, fine-grained way, as opposed to large,
narrative paragraphs or bullet lists.
11. No Implementation Basis [SEI]. Functional requirements should be business-driven and
not include assumptions regarding the technical implementation. During the architecture and
design process, design and software constraints are considered.
Quality Attributes
Quality attributes are the overall factors that affect run-time behavior, system design, and user
experience. They represent areas of concern that have the potential for application wide impact
across layers and tiers. Some of the attributes are related to the overall system design, while
others are specific to run time, design time, or user centric issues.
To the extent to which the application possesses a desired
combination of quality attributes such as usability, performance,
reliability, and security indicates the success of the design and
the overall quality of the software application. [SEI Quality
Attribute Workshop]
The following table contains a list of candidate quality attributes. Not all are important to every
system/solution.
Quality Attributes
Accessibility
Measurable characteristics that indicate the degree to which a system is
available to, and usable by, individuals with disabilities. The most
common disabilities include those associated with vision, hearing, and
mobility, as well as cognitive disabilities. [NIST500-291]
Accuracy
The accuracy of any transaction or calculation performed
Page: 2
Taking the Mystery out of QoS Requirements
Quality Attributes
Adaptability
The ability of a system to adapt itself efficiently and its responsiveness to
changed circumstances
Agility
The ability of a system to both be flexible and undergo change rapidly.
[MIT ESD 2001]
Auditability
The transparency of a system with regard to external review
Availability
The degree to which a system or component is operational and
accessible when required for use. [IEEE 1990]
Compatibility
The ability of a system to integrate with earlier versions or with other
systems
Configurability
The ease of a system to be configured, customized, and modified given
the possibility of adjustment input parameters
Cultural Adaptability Cultural Adaptability is the ability to communicate with users in different
languages to handle different cultural and regional differences. It refers to
support for internalization.
Efficiency
Efficiency refers to how well the system utilizes processor capacity, disk
space and memory. An architect needs to assure that the systems make
efficient use of given resources as, for instance, 100% resource usage
can severely affect the performance of the system.
Extendability
The ease with which a system or component can be modified to increase
its storage or functional capacity. [IEEE 1990]
Extensibility
The solution is extensible if new features can be added without impacting
system entities already using the solution.
Flexibility
The ease with which a system or component can be modified for use in
applications or environments, other than those for which it was
specifically designed. [Barbacci, 1995]
Installability
The ease of system installation and the support for incremental system
updates / auto updates
Interoperability



The ability of two or more systems or components to exchange
information and use the information that has been exchanged. [IEEE
1990]
The capabilities to communicate, execute programs, or transfer data
among various functional units under specified conditions. [American
National Standard Dictionary of Information Technology (ANSDIT)]
The ability to share information and services. [TOGAF]
Localizability
The system features to support local context such as local languages,
currencies and number formats.
Maintainability
The ease with which a software system or component can be modified to
correct faults, improve performance or other attributes, or adapt to a
changed environment. [IEEE]
Page: 3
Taking the Mystery out of QoS Requirements
Quality Attributes
Manageability


Performance


Performance






Portability


Portability
The ability to manage a resource, or the ability of a resource to be
managed. [OASIS]
How efficiently and easily a software system can be monitored and
maintained in order to keep the system performing, secure, and
running smoothly.
The responsiveness of the system—that is, the time required to
respond to stimuli (events) or the number of events processed in
some interval of time. Performance qualities are often expressed by
the number of transactions per unit time, or by the amount of time that
it takes to complete a transaction with the system. [Bass, 1998]
The ability to track service and resource usage levels and to provide
feedback on the responsiveness and reliability of the network. [ETSI
and 3GPP Dictionary]
Recovery Time – The time required to recover from a failure
Response Time – The waiting time when a system receives a process
request
Shutdown Time – The time required for a system to shut down under
normal conditions
Startup Time – The time required for a system start up
Throughput – The success rate of message delivery over a
communication channel
Latency - The delayed response time experienced in a system
The ease with which a system or component can be transferred from
one hardware or software environment to another.[IEEE]
The capability of a program to be executed on various types of data
processing systems with little or no modification and without
converting the program to a different language. [American National
Standard Dictionary of Information Technology (ANSDIT)]
1) The ability to transfer data from one system to another without being
required to recreate or reenter data descriptions or to modify significantly
the application being transported.
2) The ability of software or of a system to run on more than one type or
size of computer under more than one operating system.
[Federal Standard 1037C, Glossary of Telecommunication Terms, 1996]
Privacy
Information privacy is the assured, proper, and consistent collection,
processing, communication, use, and disposition of personal information
(PI) and personally identifiable information (PII) throughout its life cycle.
[NIST Cloud Computing Reference Architecture and Taxonomy Working
Group]
Recoverability
The ability to restore a system, program, database, or other system
resource to a state in which it can perform required functions.
Page: 4
Taking the Mystery out of QoS Requirements
Quality Attributes
Reliability



The ability of a system to perform a required function under stated
conditions for a specified period of time. [IEEE]
Reliability is accuracy, availability, and recoverability.
The ability to reduce the magnitude and/or duration of disruptive
events to critical infrastructure. The effectiveness of a resilient
infrastructure or enterprise depends upon its ability to anticipate,
absorb, adapt to, and/or rapidly recover from a potentially disruptive
event. [Critical Infrastructure Resilience Final Report and
Recommendations, National Infrastructure Advisory Council,
September 8, 2009]
Resilience
The ability to reduce the magnitude and/or duration of disruptive events to
critical infrastructure. The effectiveness of a resilient infrastructure or
enterprise depends upon its ability to anticipate, absorb, adapt to, and/or
rapidly recover from a potentially disruptive event. [Critical Infrastructure
Resilience Final Report and Recommendations, National Infrastructure
Advisory Council, September 8, 2009]
Resiliency
Resiliency is an ability to withstand failures or disaster and mitigate them.
Resiliency = Availability + Recoverability (DTO, DPO) + Monitoring +
Security + Survivability + more
Reusability
The degree to which a software module or other work product can be
used in more than one computer program or software system. [IEEE]
Robustness
The degree to which a system or component can function correctly in the
presence of invalid inputs or stressful environmental conditions. [IEEE]
Scalability
Scalability is a desirable property of a system, a network, or a process,
which indicates its ability to either handle growing amounts of work in a
graceful manner, or to be readily enlarged. For example, it can refer to
the capability of a system to increase total throughput under an increased
load when resources (typically hardware) are added. [NASCIO]
Security
A measure of the system's ability to resist unauthorized attempts at usage
and denial of service, while still providing its services to legitimate users.
Security is categorized in terms of the types of threats that might be made
to the system. [Bass, 1998]
Simplicity
The degree to which a system or component has a design and
implementation that is straightforward and easy to understand. [IEEE
1990]
Supportability


Page: 5
Those actions related to the reliability, maintainability, and affordability
of component implementations, and the integrated logistics support
and configuration management required. [SEI]
Supportability is a combination of adaptability, auditability,
compatibility, configurability, instability, localizability, maintainability,
scalability, and testability.
Taking the Mystery out of QoS Requirements
Quality Attributes
Survivability
The ability of a system to remain in operation or existence despite
adverse conditions, including both natural occurrences, accidental
actions, and attacks on the system.
Testability
The degree to which a requirement is stated in terms that permit
establishment of test criteria and performance of tests to determine
whether those criteria have been met. [IEEE 1990]
Upgradeability
Upgradeability refers to how easy it is to upgrade (redeploy) the system.
Usability




Usability




The measure of a user's ability to utilize a system effectively.
[Clements, 2002]
The ease with which a user can learn to operate, prepare inputs for,
and interpret outputs of a system or component. [IEEE Std. 610.12]
A measure of how well users can take advantage of some system
functionality. Usability is different from utility, which is a measure of
whether that functionality does what is needed. [Barbacci, 2003]
The extent to which a product can be used by specified users to
achieve specified goals with effectiveness, efficiency, and satisfaction
in a specified context of use.
Accessibility – The ability to access functionalities of an IT system
Aesthetics – The beauty and quality of the user interface
Intuitiveness – The familiar and natural way of using the system
Consistency – The consistent use of methods to enhance user
experiences
SEI best practices recommend that a quality attribute trade-off analysis be performed. With
quality attributes you definitely “can’t have your cake and eat it too”. For example, security
constraints typically have a negative impact on performance.
The table provides a prioritization of the non-functional requirements that will influence the
design. It illustrates the trade-offs. For example, when flexibility (row name) is increased, then
efficiency (column name) may be reduced (down arrow) and maintainability may be increased
(up arrow), etc.
Page: 6
Taking the Mystery out of QoS Requirements
Quality Attribute Trade-off Analysis
Haught Technology Solutions, LLC
Quality of Service (QoS) Requirements
Quality of Service requirements capture conditions that do not
directly relate to the behavior or functionality of the solution
Quality of Service requirements describe environmental conditions
under which the solution must remain effective or qualities that the
systems must have.
They are also known as non-functional or supplementary
requirements.
Page: 7
Taking the Mystery out of QoS Requirements
Using Requirement Patterns
Using requirement patterns (Source: [Withall]) for developing good
QoS requirements is very helpful. Requirement patterns:
• Facilitates well-formed requirement structures
•
Provides a template for creating a requirement to address the
Quality of Service requirements
•
Provides at least one example per pattern
Sample 1: Average Transaction Time
Template: Average time of <transaction completion> shall not be greater than <time
period>.
Sample: Average time of returning a list of flights shall not be greater than ten seconds.
Sample 2: Throughput by Transaction Type
Template: The system shall accommodate <number> <transaction type> per <time period>.
Sample: The system shall accommodate 1,000 booked flights per minute.
Scalability is a desirable property of a system, a network, or a
process, which indicates its ability to either handle growing
amounts of work in a graceful manner, or to be readily
enlarged.
Scalability is the ability to still meet all of the other QoS
requirements when the load on the system increases (e.g.,
ability to handle expected peak load of 200 concurrent users)
The capacity of the system is the maximum number of
transactions and/or users that a system can handle and still
meet the QoS requirements
Template: Total number of defined users (all users defined in
Active Directory).
Example: The solution shall support at least 1000 defined users.
Page: 8
Taking the Mystery out of QoS Requirements
Template: Total number of active users (all users interacting with
the systems on a daily and/or weekly basis)
Example: The solution shall support at least 800 active users.
Template: Total number of concurrent users (Total number of user using the system
simultaneously during the peak window)
Example: The solution shall support at least 500 concurrent users.
Template: Total number of users by type.
Example: The solution shall support at least 1410 active Physicians.
Using Change Cases
But how do we handle those vague future requirements? For example, flexibility, extensibility,
etc?
•
•
•
•
Page: 9
Change cases (Bennett 1997) are used to
describe new potential requirements for a
system or modifications to existing
requirements
Change cases are modeled in a simple
manner
You describe the potential change to your
existing requirements, indicate the likeliness of
that change occurring, and indicate the
potential impact of that change
The name of a change case should describe
the potential change itself
Taking the Mystery out of QoS Requirements
Change Case Template Topics
• Name (One sentence describing the change)
• Identifier (A unique identifier for this change case, e.g.
CC17)
• Description (A couple of sentences or a paragraph
describing the basic idea)
• Likelihood (Rating of how likely the change case is to
occur (e.g. High, Medium, Low or %))
• Timeframe (Indication of when the change is likely to
occur)
• Potential Impact (Indication of how drastic the impact will
be if the change occurs)
• Source (Indication of where the requirement came from)
• Notes
Reference: [Ambler CUC]
In order to put some specification behind those goals of “extensibility” or “flexibility” consider:
1. How can the business change?
2. What is the long-term vision for our organization?
3. What technology can change?
4. What legislation can change?
5. What is your competition doing?
6. What systems will we need to interact with?
7. Who else might use the system and how?
Example Change Cases
a. A marketing campaign solution must
support any number of marketing
campaigns running concurrently.
b. An insurance policy application must
support new eligibility rules.
c. A medical scheduling system must
support new procedure types and
physician types.
Page: 10