software quality attributes

14
Software Quality Attributes Hayim Makabee International Association of Software Architects in Israel

Upload: hayim-makabee

Post on 17-Dec-2014

1.246 views

Category:

Software


3 download

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

Page 1: Software Quality Attributes

Software Quality Attributes

Hayim MakabeeInternational Association of Software Architects in Israel

Page 2: Software Quality Attributes

About Me:

Education:

Experience of 20 years in the Israeli software industry.

Today:

Page 3: Software Quality Attributes

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

Page 4: Software Quality Attributes

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.

Page 5: Software Quality Attributes

Examples of Static Attributes

Modularity Coupling Cohesion

Testability

Maintainability

Extensibility

Reusability

Page 6: Software Quality Attributes

Testing Static Quality Attributes

Inspection: Design Reviews Code Reviews Pair Programming

Page 7: Software Quality Attributes

Static Code Analysis

Coding Style: Naming Documentation

Software Quality Metrics: Complexity Coupling

Page 8: Software Quality Attributes

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.

Page 9: Software Quality Attributes

Examples of Dynamic Attributes

Latency

Throughput

Robustness

Scalability

Fault-Tolerance

Page 10: Software Quality Attributes

Testing Dynamic Quality Attributes

Code Profilers: Memory Usage Execution Time

Page 11: Software Quality Attributes

Non-Functional Testing

Performance Tests

Load/Stress Tests

Robustness Tests

Simulators

Bombers

Log Players

Page 12: Software Quality Attributes

Quality Attributes and Architectural Tradeoffs

Architectural Decision: Stateless vs. Stateful Servers.

Load Balancer

Server 1

Server 2

Server 3

DB

Page 13: Software Quality Attributes

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.

Page 14: Software Quality Attributes

Thanks!

Q&A