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
Operational Characteristics define how the system behaves at runtime:
- Availability (uptime guarantees), performance (response times and throughput), scalability (handling growing load), reliability (consistency of behavior), security (protecting resources and data)
- Typically visible to end users and stakeholders—when performance degrades or availability drops, it’s immediately noticeable
- Drive infrastructure and deployment decisions
Structural Characteristics define how the codebase and development process work:
- Modularity (separating concerns cleanly), maintainability (ease of changing code), testability (ability to verify behavior), 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, making 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 (regulatory requirements), data integrity (consistency across distributed components), localization, privacy
- Require coordination across multiple architectural layers
- Often become non-negotiable constraints rather than trade-offs
Why It Matters
Understanding these three categories prevents architects from overlooking critical characteristics:
- Purely operational focus → fast, available systems impossible to maintain
- Purely structural focus → 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 also helps with stakeholder communication:
- Business stakeholders 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 in architectural decisions.
Related Concepts
- Operational-Characteristics — Runtime behavior and system qualities
- Structural-Characteristics — Code organization and development process qualities
- Cross-Cutting-Characteristics — Characteristics spanning multiple concerns
- Trade-Offs-and-Least-Worst-Architecture — Why we can’t optimize all characteristics equally
- Explicit-Architecture-Characteristics — How to identify what matters for your system
- Measuring-Architecture-Characteristics — How to verify characteristic achievement
- Fundamentals of Software Architecture - Richards & Ford - 2020 — Source literature note
Sources
- Richards, Mark and Neal Ford (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media. ISBN: 978-1-492-04345-4.
- Chapter 4: Architecture Characteristics Defined
- Available: https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/
- Introduces the three-category taxonomy for organizing architecture characteristics and explains how each category influences different architectural decisions.
Note
This note was researched and drafted with AI. How these notes are written →