Do you know what Software Quality Attributes are?

Posted by Tracy Bannon on Sunday, June 18, 2023

Do you know what ๐˜€๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—พ๐˜‚๐—ฎ๐—น๐—ถ๐˜๐˜† ๐—ฎ๐˜๐˜๐—ฟ๐—ถ๐—ฏ๐˜‚๐˜๐—ฒ๐˜€ are and more importantly, why they matter? Our online community may benefit from talking about 2 topics: Software quality attributes (SQAs) and architecture trade-off analysis. Since trade-offs depend on attributes letโ€™s dig in here first!.

SQAs are overall characteristics of a software solution /ecosystem. These aspects define how software performs, not what it does. They play a crucial role in shaping the software’s behavior and functionality in the context of its interaction with users, other systems, and the environment.

Sometimes they are referred to as ๐—ป๐—ผ๐—ป-๐—ณ๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐—ฎ๐—น ๐—ฟ๐—ฒ๐—พ๐˜‚๐—ถ๐—ฟ๐—ฒ๐—บ๐—ฒ๐—ป๐˜๐˜€ BUT this is a bit outdated. Why? Itโ€™s misleading. The prefix “non-” implies these aspects are less important or secondary to “functional requirements.” In reality, SQAs are essential and can be the deciding factor in whether software meets the needs/expectations of stakeholders.

But I digress (I’m sure our community has thoughts to share!)

SQAs are sometimes called the โ€œilitiesโ€ though a ton of them donโ€™t end in โ€˜ilityโ€. Here are a few uber common ones.

๐—ฃ๐—ฒ๐—ฟ๐—ณ๐—ผ๐—ฟ๐—บ๐—ฎ๐—ป๐—ฐ๐—ฒ: How effectively software accomplishes tasks in terms of speed, response time, and throughput. How fast does the system respond to user input? How many tasks can it handle at the same time?

๐—ฅ๐—ฒ๐—น๐—ถ๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜†: What’s ability to function under specified conditions for a specified period of time. How often does the system experience errors or failures? How long can it run without encountering problems?

๐—ฆ๐—ฒ๐—ฐ๐˜‚๐—ฟ๐—ถ๐˜๐˜†: This is the ability to resist unauthorized attempts at usage or behavior, protecting data and maintaining functionality as intended. How well does the software protect sensitive data? How effectively does it ward off cyber threats?

๐—จ๐˜€๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜†: This is how user-friendly and intuitive software is for the end user. How easy is it for new users to learn how to use it? How satisfied are users with their experience?

๐—ฆ๐—ฐ๐—ฎ๐—น๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜†: This is all about the ability to handle increased loads, like more users or data processing. Can the software accommodate growth in user numbers or data volume? Can it scale up or down as necessary?

๐— ๐—ฎ๐—ถ๐—ป๐˜๐—ฎ๐—ถ๐—ป๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜†: How easily can changes be made (bug fixes or new features). How easy is it to fix problems or add new features? How quickly can changes be implemented?

SQAs are critical to architecture; architecture provides a structural platform to achieve these attributes.

They guide the design process by helping architects make informed decisions about (you guessed it) the ๐˜๐—ฟ๐—ฎ๐—ฑ๐—ฒ-๐—ผ๐—ณ๐—ณ๐˜€ between different attributes.

Using SQAs, architects design ecosystems to meet the current needs AND anticipates future changes.

#SomethingToNoodleOn #SoftwareArchitecture #DevSecOps #SoftwareEngineering