system quality attributes for software architecture

15

Click here to load reader

Upload: adnanmasood

Post on 22-Apr-2015

5.801 views

Category:

Technology


2 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: System Quality Attributes for Software Architecture

FUNCTIONAL / NON FUNCTIONAL REQUIREMENTS AND SOFTWARE ARCHITECTURE MEASURE OF TEAM

EMPHASIS ON TRADEOFF DECISIONS

ADNAN MASOODSR. SOFTWARE ARCHITECT & DOCTORAL

CANDIDATEBLOG.ADNANMASOOD.COM

[email protected]

System Quality Attributes

about software engineeringabout software industryarchitect softwarearchitecture softwarearchitecture software programsdesign and softwaredesign and user experiencedesign for user experiencedesign user experienceenterprise architectenterprise architectsenterprise it architectit quality assurancemanagement quality systemprogram qualityquality assurancequality assurance for softwarequality assurance in softwarequality assurance softwarequality in softwarequality programquality softwarequality systemquality systems managementrequirements softwaresoftware architectsoftware architect softwaresoftware architectssoftware architecturalsoftware architecture softwaresoftware businesssoftware development cyclesoftware engineeringsoftware engineering bysoftware for quality assurancesoftware for software engineeringsoftware metricssoftware qualitysoftware quality assurancesoftware quality assurance softwaresystem architectsystems qualitysystems quality management

Page 2: System Quality Attributes for Software Architecture

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.”

Page 3: System Quality Attributes for Software 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.

Page 4: System Quality Attributes for Software Architecture

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.

Page 5: System Quality Attributes for Software 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"

Page 6: System Quality Attributes for Software Architecture

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

Page 7: System Quality Attributes for Software Architecture

System Quality AttributesSecurity 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

Page 8: System Quality Attributes for Software Architecture

System Quality AttributesPerformance Perspective

Efficiency: System does not waste valuable resourcesPerformance: Perceived response is immediateScalability: 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

Page 9: System Quality Attributes for Software Architecture

System Quality AttributesConfiguration Perspective

Configurability: Ease of making configuration changesIntegrity: 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

Page 10: System Quality Attributes for Software Architecture

System Quality AttributesOperations 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

Page 11: System Quality Attributes for Software Architecture

System Quality AttributesData 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

Page 12: System Quality Attributes for Software Architecture

System Quality AttributesDiagnostics 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

Page 13: System Quality Attributes for Software Architecture

System Quality AttributesEnhancement 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

Page 14: System Quality Attributes for Software Architecture

Software Quality Attributes Ratings Tool

http://www.gettingagile.com/wp-content/uploads/2009/05/softwarequalityattributes-ratingtool.xls OR

http://bit.ly/1aIPeU1

Page 15: System Quality Attributes for Software Architecture

References

Getting Agilehttp://www.gettingagile.com/2009/05/17/survey-for-software-quality-attributes-where-should-we-focus/

MSDN – Quality Attributeshttp://msdn.microsoft.com/en-us/library/ee658094.aspx

Implementing System Quality Attributeshttp://msdn.microsoft.com/en-us/library/bb402962.aspx

Operational Aspects of a System – ACM Queuehttp://queue.acm.org/blogposting.cfm?id=56822

about software engineeringabout software industryarchitect softwarearchitecture softwarearchitecture software programsdesign and softwaredesign and user experiencedesign for user experiencedesign user experienceenterprise architectenterprise architectsenterprise it architectit quality assurancemanagement quality systemprogram qualityquality assurancequality assurance for softwarequality assurance in softwarequality assurance softwarequality in softwarequality programquality softwarequality systemquality systems managementrequirements softwaresoftware architectsoftware architect softwaresoftware architectssoftware architecturalsoftware architecture softwaresoftware businesssoftware development cyclesoftware engineeringsoftware engineering bysoftware for quality assurancesoftware for software engineeringsoftware metricssoftware qualitysoftware quality assurancesoftware quality assurance softwaresystem architectsystems qualitysystems quality management