Architects must deal with the extraordinarily wide variety of architecture characteristics, across all different aspects of software projects. Operational aspects like performance, elasticity, and scalability commingle with structural concerns such as modularity and deployability. This chapter focuses on concretely defining some of the more common architecture characteristics and building governance mechanisms for them.
Several common problems exist around the definition of architecture characteristics in organizations.
Many architecture characteristics in common usage have vague meanings. For example, how does an architect design for agility or deployability? The industry has wildly differing perspectives on common terms, sometimes driven by legitimate differing contexts and sometimes accidental.
Even within the same organization, different departments may disagree on the definition of critical features such as performance. Until developers, architecture, and operations can unify on a common definition, a proper conversation is difficult.
Many desirable architecture characteristics compose many others at a smaller scale. For example, developers can decompose agility into characteristics such as modularity, deployability, testability, and so on.
Objective definitions for architecture characteristics solve all ...