System Quality Attributes for Software Architecture
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
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.”
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.
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.
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"
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
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
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
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
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
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
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
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
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