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
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.”
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.
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.
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"
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
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
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
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
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
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
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
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
Software Quality Attributes Ratings Tool
http://www.gettingagile.com/wp-content/uploads/2009/05/softwarequalityattributes-ratingtool.xls OR
http://bit.ly/1aIPeU1
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

System Quality Attributes for Software Architecture

  • 1.
    F U NC 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 Attributesare 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  Ingeneral, 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-functionalrequirements 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 BusinessPerspective  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 SecurityPerspective  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 PerformancePerspective  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 ConfigurationPerspective  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 OperationsPerspective  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 DataPerspective  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 DiagnosticsPerspective  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 EnhancementPerspective  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 AttributesRatings 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