System Quality Attributes for Software Architecture

13,015 views

Published on

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.

Published in: Technology, Business

System Quality Attributes for Software Architecture

  1. 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 DS 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 ME 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 SA D N A N M A S O O DS 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 EB L O G . A D N A N M A S O O D . C O MA D N A N . M A S O O D @ O W A S P . O R GSystem Quality Attributesabout 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
  2. 2. Definition“Software Quality Attributes are the benchmarks thatdescribe system’s intended behavior within theenvironment for which it was built. The qualityattributes provide the means for measuring thefitness and suitability of a product. Softwarearchitecture has a profound affect on most qualitiesin one way or another, and software qualityattributes affect architecture.”
  3. 3. Functional Requirements In general, functional requirements define what asystem is supposed to do usually in the form of "system shall do <requirement>“ Functional requirements define specific behavior orfunctions. The plan for implementing functional requirementsis detailed in the system design.
  4. 4. Non-Functional Requirements Non-functional requirements define how a system issupposed to be. Non-functional requirements specify criteria thatcan be used to judge the operation of asystem, rather than specific behaviors. The plan for implementing non-functionalrequirements is detailed in the systemarchitecture.
  5. 5. System Quality Attributes Non-functional requirements specify systemquality 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. 6. System Quality AttributesBusiness Perspective Suitability: Functionality is suitable to all end users Compliance: Functionality is compliant with applicable regulatoryguideline Certifiability: System is able to be certified to some standard by anindependent third party• Conformance: Conformance to industry and operationalstandards Accessibility: The user interface can be accessed and utilized by differentlyabled users Adaptability: Ability to change the system components to meetnew business needs Extensibility & Modifiability: Ability to easily add new featuresand customizations Replaceability: Ability to replace system in the future Reporting: The system supports generating various reports
  7. 7. System Quality AttributesSecurity Perspective Security: System is secure:confidentiality, integrity, availability, accountability andassurance Privacy: System does not reveal (or allow revealing) ofinformation to improper parties Non-exploitability: The system, its components, and itsconfigurations are hardened against known andunknown security vulnerabilities Accountability: The system records all user interactionsand data changes Auditability: The system makes accountabilityinformation available to managers and operators
  8. 8. System Quality AttributesPerformance Perspective Efficiency: System does not waste valuable resources Performance: Perceived response is immediate Scalability: Able to handle increased usage on theappropriate amount of resources, able to add resourcesquickly and easily to handle increases in demand Responsiveness: The system responds to interactionswith minimal delay and/or latency Capacity: The system can handle sudden peaks andsurges in demand Throughput: The system can handle a specified numberof interactions or transactions within a specified durationwithout undesirable degradation in terms of otherqualities
  9. 9. System Quality AttributesConfiguration Perspective Configurability: Ease of making configuration changes Integrity: The system, its configuration, and its datacannot be changed by unauthorizedparties(including accidental or deliberatemisconfiguration)• Deployability: Ease ofinstallation, reinstallation, and updating Portability: System supports changes in choice ofunderlying technologies and architectures (such asdatabase platform, operating system platform, etc.) Interoperability & Compatibility: Functionalityinteroperates with other systems easily
  10. 10. System Quality AttributesOperations Perspective Availability & Fault Tolerance: System continues operating properly in the event of failure byone 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 andquickly recovered from backups and configuration management repositories, even in the eventof a catastrophic loss of a data center Operability: System can readily be kept in a functioning and operatingcondition by manual or automated means• Maintainability: System upgrades can quickly and safely be performed with aminimum 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. 11. 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 quicklyand 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 acrossmultiple databases (for scalability, risk mitigation, etc.) Idempotency: Interactions performed twice result in same change as ifperformed once Concurrency: The system supports a high degree of simultaneousinteractions with the database without degrading in performance orsacrificing data integrity (ex: optimistic locking, snapshot isolation) Backup : The database and message queues support being backed upwithout the system being taken offline
  12. 12. System Quality AttributesDiagnostics Perspective Supportability: System operators can quickly and easilyidentify faults and perform root cause analysis within anenvironment of controlled access to information andrestricted privileges Instrumentability: System is capable of recording variousoperational metrics that can be analyzed and reportedon Traceability: System can be configured to record its owninteractions with itself in order to aid support personnelin diagnosing problems• Logging: The system logs external andinteractions with configurable degrees of detail
  13. 13. System Quality AttributesEnhancement Perspective Analyzability: Ability to figure out how thesystem functions Documentability: Ability to communicateabout the system in writing Understandability: Able to use system with littletraining Learnability: Supports learning of system functionalitywith little external interfacing• Testability: Ability to create repeatable andspecific tests of the system and potential forsome to be automated
  14. 14. Software Quality Attributes Ratings Toolhttp://www.gettingagile.com/wp-content/uploads/2009/05/softwarequalityattributes-ratingtool.xls ORhttp://bit.ly/1aIPeU1
  15. 15. ReferencesGetting 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.aspxImplementing System Quality Attributeshttp://msdn.microsoft.com/en-us/library/bb402962.aspxOperational Aspects of a System – ACM Queuehttp://queue.acm.org/blogposting.cfm?id=56822about 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

×