Software Architecture

Software Quality Attributes, Non-Functional Requirements and Better Software Architecture

Andrei Gridnev
6 min readJan 2, 2019
Photo by Josue Isai Ramos Figueroa on Unsplash

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:

  1. start with investigating the non-functional requirements for the product,
  2. understand which software quality attributes it should be optimised for,
  3. then use that knowledge to choose the…

--

--

Andrei Gridnev

Software engineer, manager since 2002. Engineering management, leadership, software architecture, high-performing teams, professional growth.