Software Architecture Quality Attributes

When we are talking about evaluate the quality of a Software Architecture, there are some questions that cannot be answered by Design Patterns and Principles or how the elements in the architecture interact each other.

Lets take as example the “Design Patterns”, they cannot assure you software testability, usability, availability, user experience, performance, etc. The are mostly made to insure reusability, flexibility and maintainability.

So how to understand if a software will have the desired quality?

Use the right architecture to the right environment

Lets suppose you were hired to plan a multiplayer game that will be accessed by 5 different continents from end-users.

You could choose for instance an Event-Based architecture, which is a good choice in this case, but combined this with a Data Centric architecture which will make your application be very slow and unusable for the end users. Even if you architecture has fulfilled the functional requirements, there might be hidden non-functional requirements like response time, etc that were ignored.

The non-functional requirements must be raised by the architects to the stakeholders, before defining the architecture, otherwise they can lead to a complete fail.

Remember that different stakeholders have different perspectives and expectations, so the role of the architect is to extract them into requirements and find the architecture with the best quality as possible to meet their needs.

Quality Attributes

A tool to find the better quality architecture is by using quality attributes. They are measurable properties to evaluate performance, usability and design. Of course, as we have different stakeholders, the quality attributes will vary according to each perspective:

Quality Attributes for Developers

Quality Attributes for end users

Conclusion

To reach the best architecture that meets the stakeholders expectation we must involve them to collect all the functional and non-functional requirements. Moreover, gather and classify the Software Architecture Quality Attributes according to their expectations. It is not recommended to invest much time with further architecture and design steps before have the quality attributes clear, since they can drastically influence the architecture style and technologies used.