Non-Functional Requirements: Requirement Engineering
Non-Functional Requirements: Requirement Engineering
Non-Functional Requirements
presented by:
Bayu Hendradjaya
6
Examples
1. Performance: 100 transactions per minute
2. Interface: capable of importing data with EDI format
3. Operational: must not require more than 1 megabyte of main memory
4. Resource: will use wireless encryption algorithm that is “better” than
WEP
5. Verification: all data updates must be traceable
6. Acceptance: must pass a user defined system test bucket
7. Documentation: user manual is needed for novice users only
8. Security: user request to access any data must be authorized first
9. Portability: the system must operate with “any” relational db systems
10. Quality: the system must install with zero defect
11. Reliability: the system must be accessible 99.9 % of the time
12. Maintainability: the system must be modifiable (e.g. designed with exits)
13. Safety: the system must not perform “chemical material discard”
functions without “explicit” user authorization.
7
Sommerville’s Classification of
Non-Functional Requirements
Efficiency
Performance
Capacity
These are constraints placed on various activities
related to the development and delivery of the
software product.
For example:
Implementation
Process standards
Why do we have these requirements?
Examples:
Efficiency
For example:
Externally
Directed 1.The system must abide to HIPAA (Health Insurance
Portability and Accountability Act) privacy rules
2. The system must meet European Sales Tax laws
3. The system must use Automotive EDI for B2B
Legal rules e-commerce
Economics
Interoperability
Why do we have these requirements?
s u itab ility
co m p lian ce
s e cu rity
m atu rity
fa u lt to le ra n c e
re l i a b i l i t y
re c o v e ra b ility
av ailab ility
u s a b i l i t y learn ab ility
q u a l i t y i n u s e o p e ra b ility
tim e b eh av io u r
e f f i c i e n c y
re s o u rc e u tilis a tio n
an aly s ab ility
ch an g eab ility
m a i n t a i n a b i l i t y
s tab ility
in s tallab ility
p o rt a b i l i t y co -ex is ten ce
c o n fo rm a n c e
re p la c e a b ility
Difficulties in Specifying
Non-functional Requirements
• Mostly because people tend to focus on the functions and services that they
need:
– Certain non-functional requirements are sometimes hard to quantify and
therefore hard to express without some “trial and error prototyping”.
• e.g. : usability
– Certain non-functional requirements are hard to differentiate between
functional and non-functional
• e.g. security
– Certain non-functional requirements are difficult to specify because they
can not be well understood or validated until much later
• e.g. reliability or quality
– Certain non-functional requirements may be conflicting
• e.g. performance .vs. security .vs. reliability
– Certain non-functional requirements may be difficult to express and
validate; may require more refinements
• e.g. when to stop prototyping usability if the users do not clearly signal
14
satisfaction
Understanding the Goals and Objectives
This is not very easy for most technical people who have no
business experience.
Try an example of a Business Goal? Objective?, Concern?
15
Concrete requirements from high level goals
Goal refinement tree:
Refinement links are two way links: One showing goal decomposition,
other showing goal contribution
Critical Systems
• Critical systems are systems whose failure
causes significant economic, human or
organizational damage:
– Business Critical System
• e-commerce systems such as stock trading,
reservations, etc.
– Mission Critical System
• Aircraft control, manufacturing process control, etc.
– Safety (life) Critical system
• Medical Device control, hazardous materials
management, etc.
17
Requirements for System Criticality
• Most of the requirements for these “business,” “mission,” and
“safety” criticality deals with non-functional requirements of
the a) “complete” system, not just software and b) may be
expressed in general ways that need to be decomposed
further:
– Performance
– Reliability
– Security
– Usability
– Safety
• These requirements addresses the user interface looks and user inter-
actions with the system
– Handling and usage such as time to complete certain tasks or number of errors
made before completing certain tasks
– Likeness and delight experienced from using the system such as availability of
context sensitive help text or “re-do” capability
2. Safety Validation
• Analysis of the discovered requirements to ensure that there is no
conflict with other requirements
1. Safety Requirements Discovery
• Identify potential hazard
– This may be as simple as listing the hazards and placing “priorities” based on
some damage value
– One may use some form of a tree to help generate and classify the hazards.
• The identified hazards may be viewed through some risk assessment and
analysis to generate requirements in stages:
– Avoidance requirements to ensure that the hazard will not occur in the first
place
– Prevention requirements to ensure that if the hazard occurs then it does not
result in a damage
– Protection requirements address the situation where if the accident does
occur it only causes limited damage.
2. Requirements Conflict Resolution
Reliability
Performance
Safety Related
Requirements
Usability
........ Security
26
Software Qualities
10
Factors vs. Criteria
Quality Factors
These are customer-related concerns
Examples: efficiency, integrity, reliability, correctness, survivability, usability,...
Design Criteria
These are technical (development-oriented) concerns such as anomaly
management, completeness, consistency, traceability, visibility,...
Quality Factors and Design Criteria are related:
Each factor depends on a number of associated criteria:
E.g. correctness depends on completeness, consistency, traceability,...
E.g. verifiability depends on modularity, self-descriptiveness and simplicity
There are some standard mappings to help you…
During Analysis:
Identify the relative importance of each quality factor
From the customer’s point of view!
Identify the design criteria on which these factors depend
Make the requirements measurable
12
Functionality – Factor
The capability of the software to provide
functions which meet stated and implied needs
when the software is used under specified
conditions.
Functionality – Criteria
• Suitability: Capability of the software to provide an
appropriate set of functions for specified tasks and user
objectives.
• Accuracy: Capability of the software to provide the right or
agreed.
• Interoperability: Capability of the software to interact with
one or more specified systems.
• Compliance: Capability of the software to adhere to
application related standards, conventions or regulations in
laws and similar prescriptions.
• Security: Capability of the software to prevent unintended
access and resist deliberate attacks intended to gain
unauthorised access to confidential information, or to make
unauthorised modifications to information or to the program
so as to provide the attacker with some advantage or so as to
deny service to legitimate users.
Reliability – Factor