software quality attributes
DESCRIPTION
The quality of software systems may be expressed as a collection of Software Quality Attributes. When the system requirements are defined, it is essential also to define what is expected regarding these quality attributes, since these expectations will guide the planning of the system architecture and design. Software quality attributes may be classified into two main categories: static and dynamic. Static quality attributes are the ones that reflect the system’s structure and organization. Examples of static attributes are coupling, cohesion, complexity, maintainability and extensibility. Dynamic attributes are the ones that reflect the behavior of the system during its execution. Examples of dynamic attributes are memory usage, latency, throughput, scalability, robustness and fault-tolerance. Following the definitions of expectations regarding the quality attributes, it is essential to devise ways to measure them and verify that the implemented system satisfies the requirements. Some static attributes may be measured through static code analysis tools, while others require effective design and code reviews. The measuring and verification of dynamic attributes requires the usage of special non-functional testing tools such as profilers and simulators. In this talk I will discuss the main Software Quality attributes, both static and dynamic, examples of requirements, and practical guidelines on how to measure and verify these attributes.TRANSCRIPT
Software Quality Attributes
Hayim MakabeeInternational Association of Software Architects in Israel
About Me:
Education:
Experience of 20 years in the Israeli software industry.
Today:
Software Quality Attributes
Quality of software systems = Collection of software quality attributes.
System requirements => Define what is expected regarding these quality attributes.
Software Quality Attributes: Static Dynamic
Static Quality Attributes
Static quality attributes reflect the system’s structure and organization.
Static quality attributes are directed related to: The architecture and design of the software system. The way the system was implemented (its source code).
Static quality attributes are not visible to the end-user but they affect the system’s development and maintenance costs.
Examples of Static Attributes
Modularity Coupling Cohesion
Testability
Maintainability
Extensibility
Reusability
Testing Static Quality Attributes
Inspection: Design Reviews Code Reviews Pair Programming
Static Code Analysis
Coding Style: Naming Documentation
Software Quality Metrics: Complexity Coupling
Dynamic Quality Attributes
Dynamic quality attributes reflect the behavior of the system during its execution.
Dynamic quality attributes are directly related to: The system’s architecture, design and source code. The system’s configuration and deployment parameters. The system’s environment and the platform on which it is
running.
Dynamic quality attributes exist at runtime, and are visible to the end-user.
Examples of Dynamic Attributes
Latency
Throughput
Robustness
Scalability
Fault-Tolerance
Testing Dynamic Quality Attributes
Code Profilers: Memory Usage Execution Time
Non-Functional Testing
Performance Tests
Load/Stress Tests
Robustness Tests
Simulators
Bombers
Log Players
Quality Attributes and Architectural Tradeoffs
Architectural Decision: Stateless vs. Stateful Servers.
Load Balancer
Server 1
Server 2
Server 3
DB
Summary
Quality of software systems = Collection of software quality attributes.
Static quality attributes reflect the system’s structure and organization.
Dynamic quality attributes reflect the behavior of the system during its execution.
Quality attributes require diverse testing methods and tools.
Quality attributes may drive architectural tradeoffs.
Thanks!
Q&A