Software Architecture
Software Quality Attributes, Non-Functional Requirements and Better Software Architecture
Read the updated version of this article.
When designing software architecture for a new product, it is often difficult to evaluate available design options and choose the optimal one. That often happens because it is unclear for the developers what criteria they should use to make design decisions and why.
Some developers rely on their previous engineering experience and personal preferences in practices, technologies, tools and patterns. The issue is that each dev team member has different preferences, opinions and assumptions. As a result, it may be difficult to reach consensus within a team and agree on some decisions. Arguing over subjective opinions and preferences may not only damage relationships between coworkers, but also won’t necessarily lead to the software architecture optimised for achieving the business goals.
What can developers do to make architecture design decisions more objective? One option would be to:
- start with investigating the non-functional requirements for the product,
- understand which software quality attributes it should be optimised for,
- then use that knowledge to choose the…