Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Software Quality Attributes: The Basics

DZone's Guide to

Software Quality Attributes: The Basics

This article presents a set of qualities attributes with a small description about each of them. And of course, each one deserves its own article, but here I'll just provide a brief description about them all.

· DevOps Zone
Free Resource

The Nexus Suite is uniquely architected for a DevOps native world and creates value early in the development pipeline, provides precise contextual controls at every phase, and accelerates DevOps innovation with automation you can trust. Read how in this ebook.

Whenever we start a new project, we have to make decisions that have significant influence over the software architecture. Architects should work in order to guarantee that the software will comply with aspects related to quality attributes and design a software considering potentials impacts in the future. 

Quality attributes aren't a silver bullet. They represent areas of concerns that have potential for application impact across layers and tiers.

In Software Architecture in Pratice 3rd Edition, Len Bass defines Quality Attributes [QA] as measurable or testable property of a system that is used to indicate how well the system satisfies the needs of its stakeholders. You can think of a quality attribute as measuring the “goodness” of a product along some dimension of interest to a stakeholder.

This article presents a set of qualities attributes with a small description about each of them. And of course, each one deserves its own article, but here I'll just provide a brief description about them all, and you can have a deeper study from the book Software Architecture in Pratice 3rd Edition or wait for futures articles.

Image title

Availability

This is perhaps a wider-covering attribute because it subsumes other concepts including security, performance, integrity, confidentiality, reliability, dependability, and others. However, for this topic, we’ll just go over reliability and dependability attributes.

Firstly, I would briefly describe availability as a feature of software meaning that it's ready to carry out its task when you need it to be.

In a broad perspective, availability builds upon the concepts of reliability that encompass the notion of recovery, which in a few words means: when the system breaks, it repairs itself.

Availability also entails dependability refering to the ability of a system to mask or repair faults such that the cumulative service outage period does not exceed a required value over a specified time interval.

Basic List of Quality Attributes

Interoperability

This describes the degree to which two or more systems can fully exchange meaningful information via interfaces in a particular context. The definition includes not only having the ability to exchange data (syntactic interoperability) but also having the ability to correctly interpret the data being exchanged (semantic interoperability).

Modifiability

Modifiability relates to the costs of changes and refers to the ease with which software can deal with changes.

Performance

It’s all about time and the software system’s ability to meet timing requirements. When events occur—interrupts, messages, requests from users or other systems, or clock events marking the passage of time—the system, or some element of the system, must respond to them in a timely manner.

Testability

Software testability is a measure of how easy is to create test criteria for the system and its components, and to execute these tests that assess if the criteria are met.

Security

All systems must be capable of prevent malicious or accidental actions that aren't following designed usage. With security comes a measure of the system’s ability to protect data and information from unauthorized access while still providing access to people and systems that are authorized.

Usability

Usability is concerned with how easy it is for the user to accomplish a desired task and the kind of user support the system provides.

Other Quality Attributes

The list above is quite important, but there are some others attributes that frequently arise are variability, portability, development, distributability, scalability, and elasticity.

More on these in the future!

The DevOps Zone is brought to you in partnership with Sonatype Nexus.  See how the Nexus platform infuses precise open source component intelligence into the DevOps pipeline early, everywhere, and at scale. Read how in this ebook

Topics:
software engineering ,development ,software quality ,patterns of modular architecture

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}