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