Core Idea

Architecture characteristics (also called “-ilities”) organize into three distinct categories: Operational (how systems run), Structural (how systems are built), and Cross-Cutting (characteristics that span both runtime and design-time concerns). Understanding these categories helps architects systematically evaluate what their systems must prioritize.

The Three Categories

Architecture characteristics categorize into three fundamental groups:

  • Capture different dimensions of system quality and success criteria
  • Provide a framework for systematically thinking about non-functional requirements

Operational Characteristics define how the system behaves at runtime:

  • Include availability (uptime guarantees), performance (response times and throughput), scalability (handling growing load)
  • Include reliability (consistency of behavior) and security (protecting resources and data)
  • Typically visible to end users and stakeholders
  • When performance degrades or availability drops, it’s immediately noticeable
  • Often drive infrastructure and deployment decisions

Structural Characteristics define how the codebase and development process work:

  • Include modularity (separating concerns cleanly), maintainability (ease of changing code)
  • Include testability (ability to verify behavior) and deployability (frequency and ease of releasing changes)
  • Typically invisible to end users but crucial for development velocity and long-term sustainability
  • Poor structural characteristics create technical debt that compounds over time
  • Make systems harder and more expensive to evolve

Cross-Cutting Characteristics span both operational and structural concerns:

  • Security affects both runtime behavior (preventing unauthorized access) and code structure (how authentication is implemented)
  • Other examples: compliance (meeting regulatory requirements), data integrity (consistency across distributed components)
  • Localization (supporting multiple languages and regions), privacy (protecting user data)
  • Require coordination across multiple architectural layers
  • Often become non-negotiable constraints rather than trade-offs

Why This Matters

Understanding these three categories prevents architects from overlooking critical characteristics:

  • Purely operational focus might create fast, available systems that are impossible to maintain
  • Purely structural focus might create beautifully modular code that can’t handle production load
  • Cross-cutting characteristics often represent constraints that limit the solution space
  • Knowing they exist early prevents pursuing architectures that violate mandatory requirements

The category framework helps in stakeholder communication:

  • Business stakeholders typically care most about operational characteristics (performance, availability, cost)
  • Development teams care most about structural characteristics (maintainability, testability, deployability)
  • Legal and compliance teams care most about cross-cutting characteristics (security, privacy, regulatory compliance)
  • Categorizing characteristics ensures all perspectives are represented

Sources

  • Richards, Mark and Neal Ford (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media. ISBN: 978-1-492-04345-4.

Note

This content was drafted with assistance from AI tools for research, organization, and initial content generation. All final content has been reviewed, fact-checked, and edited by the author to ensure accuracy and alignment with the author’s intentions and perspective.