Software Quality Attributes are the benchmarks that describe system’s intended behavior. These slides go through an overview of what some of these attributes are and how to evaluate them.
ICT role in 21st century education and its challenges
System Quality Attributes for Software Architecture
1. F U N C T I O N A L / N O N F U N C T I O N A L R E Q U I R E M E N T S A N D
S O F T W A R E A R C H I T E C T U R E M E A S U R E O F T E A M
E M P H A S I S O N T R A D E O F F D E C I S I O N S
A D N A N M A S O O D
S R . S O F T W A R E A R C H I T E C T & D O C T O R A L C A N D I D A T E
B L O G . A D N A N M A S O O D . C O M
A D N A N . M A S O O D @ O W A S P . O R G
System Quality Attributes
about software engineering
about software industry
architect software
architecture software
architecture software programs
design and software
design and user experience
design for user experience
design user experience
enterprise architect
enterprise architects
enterprise it architect
it quality assurance
management quality system
program quality
quality assurance
quality assurance for software
quality assurance in software
quality assurance software
quality in software
quality program
quality software
quality system
quality systems management
requirements software
software architect
software architect software
software architects
software architectural
software architecture software
software business
software development cycle
software engineering
software engineering by
software for quality assurance
software for software engineering
software metrics
software quality
software quality assurance
software quality assurance software
system architect
systems quality
systems quality management
2. Definition
“Software Quality Attributes are the benchmarks that
describe system’s intended behavior within the
environment for which it was built. The quality
attributes provide the means for measuring the
fitness and suitability of a product. Software
architecture has a profound affect on most qualities
in one way or another, and software quality
attributes affect architecture.”
3. Functional Requirements
In general, functional requirements define what a
system is supposed to do
usually in the form of "system shall do <requirement>“
Functional requirements define specific behavior or
functions.
The plan for implementing functional requirements
is detailed in the system design.
4. Non-Functional Requirements
Non-functional requirements define how a system is
supposed to be.
Non-functional requirements specify criteria that
can be used to judge the operation of a
system, rather than specific behaviors.
The plan for implementing non-functional
requirements is detailed in the system
architecture.
5. System Quality Attributes
Non-functional requirements specify system
quality attributes.
Other terms for non-functional requirements are:
Constraints
Quality attributes
Quality goals
Quality-of-service (QoS) requirements
Non-behavioral requirements
Informally, these are known as the “-ilities"
6. System Quality Attributes
Business Perspective
Suitability: Functionality is suitable to all end users
Compliance: Functionality is compliant with applicable regulatory
guideline
Certifiability: System is able to be certified to some standard by an
independent third party
• Conformance: Conformance to industry and operational
standards
Accessibility: The user interface can be accessed and utilized by differently
abled users
Adaptability: Ability to change the system components to meet
new business needs
Extensibility & Modifiability: Ability to easily add new features
and customizations
Replaceability: Ability to replace system in the future
Reporting: The system supports generating various reports
7. System Quality Attributes
Security Perspective
Security: System is secure:
confidentiality, integrity, availability, accountability and
assurance
Privacy: System does not reveal (or allow revealing) of
information to improper parties
Non-exploitability: The system, its components, and its
configurations are hardened against known and
unknown security vulnerabilities
Accountability: The system records all user interactions
and data changes
Auditability: The system makes accountability
information available to managers and operators
8. System Quality Attributes
Performance Perspective
Efficiency: System does not waste valuable resources
Performance: Perceived response is immediate
Scalability: Able to handle increased usage on the
appropriate amount of resources, able to add resources
quickly and easily to handle increases in demand
Responsiveness: The system responds to interactions
with minimal delay and/or latency
Capacity: The system can handle sudden peaks and
surges in demand
Throughput: The system can handle a specified number
of interactions or transactions within a specified duration
without undesirable degradation in terms of other
qualities
9. System Quality Attributes
Configuration Perspective
Configurability: Ease of making configuration changes
Integrity: The system, its configuration, and its data
cannot be changed by unauthorized
parties(including accidental or deliberate
misconfiguration)
• Deployability: Ease of
installation, reinstallation, and updating
Portability: System supports changes in choice of
underlying technologies and architectures (such as
database platform, operating system platform, etc.)
Interoperability & Compatibility: Functionality
interoperates with other systems easily
10. System Quality Attributes
Operations Perspective
Availability & Fault Tolerance: System continues operating properly in the event of failure by
one or more of its components
Isolation: System survives and gracefully handles situations in which dependent “downstream”
systems become unavailable
Continuity: System recovers from failures in surrounding environment
Disaster Recoverability: The system, its data, and its configuration can be completely and
quickly recovered from backups and configuration management repositories, even in the event
of a catastrophic loss of a data center
Operability: System can readily be kept in a functioning and operating
condition by manual or automated means
• Maintainability: System upgrades can quickly and safely be performed with a
minimum of downtime
• Monitorability: Ability for operators to easily see how the system is operating
• Alerting: The system notifies operators of faults and exceptional conditions
• Maturity: System components are proven stable by others
• Stability and Reliability: The system exhibits infrequent failures
11. System Quality Attributes
Data Perspective
Durability: The system does not lose critical operational data, whether “in-
flight” or “at-rest”
Reversibility: Undesirable system and data changes can be reversed quickly
and easily with minimal disruption to the business
Cacheability: The data is structured with appropriate separation of volatile
(changing) and non-volatile data to support caching
Archivability: Older data can be relocated to separate data stores
Partitionability: The system supports splitting like-kind data across
multiple databases (for scalability, risk mitigation, etc.)
Idempotency: Interactions performed twice result in same change as if
performed once
Concurrency: The system supports a high degree of simultaneous
interactions with the database without degrading in performance or
sacrificing data integrity (ex: optimistic locking, snapshot isolation)
Backup : The database and message queues support being backed up
without the system being taken offline
12. System Quality Attributes
Diagnostics Perspective
Supportability: System operators can quickly and easily
identify faults and perform root cause analysis within an
environment of controlled access to information and
restricted privileges
Instrumentability: System is capable of recording various
operational metrics that can be analyzed and reported
on
Traceability: System can be configured to record its own
interactions with itself in order to aid support personnel
in diagnosing problems
• Logging: The system logs external and
interactions with configurable degrees of detail
13. System Quality Attributes
Enhancement Perspective
Analyzability: Ability to figure out how the
system functions
Documentability: Ability to communicate
about the system in writing
Understandability: Able to use system with little
training
Learnability: Supports learning of system functionality
with little external interfacing
• Testability: Ability to create repeatable and
specific tests of the system and potential for
some to be automated
14. Software Quality Attributes Ratings Tool
http://www.gettingagile.com/wp-content/uploads/2009/05/softwarequalityattributes-ratingtool.xls OR
http://bit.ly/1aIPeU1
15. References
Getting Agile
http://www.gettingagile.com/2009/05/17/survey-for-
software-quality-attributes-where-should-we-focus/
MSDN – Quality Attributes
http://msdn.microsoft.com/en-us/library/ee658094.aspx
Implementing System Quality Attributes
http://msdn.microsoft.com/en-us/library/bb402962.aspx
Operational Aspects of a System – ACM Queue
http://queue.acm.org/blogposting.cfm?id=56822
about software engineering
about software industry
architect software
architecture software
architecture software programs
design and software
design and user experience
design for user experience
design user experience
enterprise architect
enterprise architects
enterprise it architect
it quality assurance
management quality system
program quality
quality assurance
quality assurance for software
quality assurance in software
quality assurance software
quality in software
quality program
quality software
quality system
quality systems management
requirements software
software architect
software architect software
software architects
software architectural
software architecture software
software business
software development cycle
software engineering
software engineering by
software for quality assurance
software for software engineering
software metrics
software quality
software quality assurance
software quality assurance software
system architect
systems quality
systems quality management