How architecture requirements shape the way systems are designed, deployed, and sustained over time.
In Chapter 5, you defined what the solution needs to do to support user goals. This chapter shifts to architecture requirements: the technical needs that shape how the system is designed, deployed, and sustained over time.
What You Will Learn
Explain what system architecture is and how architecture needs shape it
Identify and define architecture requirements that influence system design decisions
Document architectural decisions using Architecture Decision Records (ADRs)
Express architectural requirements as backlog items with testable acceptance criteria
What Are Architectural Requirements
Every system has requirements that go beyond what users see as features. Architecture requirements specify needs and criteria such as response time, uptime, concurrent user capacity, security standards, and compliance obligations. Users may never notice them, but they shape how the system is designed and built.
For example, a requirement such as "search results appear instantly" influences the design of the system when you define "instantly" as sub-second response time, a target that drives choices like database platform, indexing and caching strategies.
Why Architecture Requirements Matter
Identifying and understanding architecture needs also helps you make informed trade-offs, because architecture requirements often influence each other. A response-time target may drive your database choice, but a platform decision, such as committing to a particular cloud provider, may limit which database products are available, which in turn affects performance.
A Note on Terminology
You will also see these referred to as nonfunctional requirements or quality attributes. I prefer the term architecture requirements because it makes their impact on system design much more visible. The "non-functional" label can suggest these concerns are secondary; research confirms that when framed this way, they tend to be neglected, described vaguely, or buried inside other requirements (Chen et al., 2013).
Understanding System Architecture
When you define a system's architecture, you decide what the major components are, how they connect, where they run, and how they are deployed. These decisions shape integration, performance, failure handling, data protection, and how easily the system can adapt over time. Because architectural choices often have long-term consequences and can be difficult to reverse, they are among the most important decisions in any development effort.
A Simple View of System Architecture
One simple way to think about architecture is as a set of layers, each responsible for a different part of the solution.
In practice, these layers often overlap, but the model is still useful because it helps you see where different architectural concerns apply.
How Architecture Requirements Drive Complexity
The interactive explorer below demonstrates how changing quality attribute requirements — performance, scalability, and availability — affects the number of servers needed at each architecture layer. Adjust the sliders to see how increasing requirements drives infrastructure complexity.
Adjust the quality attribute sliders to see how increasing performance, scalability, and availability requirements affects the number of servers needed at each architecture layer.
Types of Architectural Requirements
Architecture requirements are easier to identify when you group them into categories, because each type shapes different design decisions and trade-offs. The sections below describe the most common types, what they mean for your architecture, and how to measure them.
Accuracy
Some systems need precise numerical outputs. A trading platform might require calculations accurate to six decimal places; a retail system might only need two. The required precision affects data types, rounding logic, and validation rules throughout the architecture. Key measures include error rates, tolerances, and data validation techniques.
Availability
How much downtime can your users tolerate? Availability requirements answer that question, typically expressed as an uptime percentage. The difference between 99.9% (about 8.76 hours of downtime per year) and 99.99% (about 52 minutes per year) can require fundamentally different architectural approaches. Redundancy, failover strategies, and infrastructure costs all increase sharply at higher tiers (Nygard, 2018). Key measures include uptime percentage, Mean Time Between Failures (MTBF), and Mean Time To Recovery (MTTR).
| Uptime Target | Downtime / Year | Typical Approach |
|---|---|---|
| 99% | ~3.65 days | Single server, manual recovery |
| 99.9% | ~8.76 hours | Redundant components, basic failover |
| 99.99% | ~52 minutes | Multi-region, automated failover, load balancing |
| 99.999% | ~5 minutes | Active-active deployment, continuous health checks |
Performance
Performance requirements set boundaries on how fast your system responds and can impact the cost and complexity of your system. A two-second response time target shapes architecture differently than a 200-millisecond target. The latter may require caching layers, database optimization, or asynchronous processing that the former does not. Performance requirements often conflict with other needs, and those tensions should be surfaced early.
Key measures:
Scalability
Your system may handle current load fine, but what happens when demand doubles? Scalability requirements define how well the system maintains performance as usage grows. You may need to scale vertically (adding resources to existing servers) or horizontally (adding more servers). The choice affects cost, complexity, and deployment strategy. A system designed only for vertical scaling may hit hard limits; one designed for horizontal scaling requires different approaches to data consistency and session management. Key measures include load handling capacity, resource allocation efficiency, and response times under varying workloads.
Security
Security decisions affect nearly every layer of the architecture, from how you authenticate users to how you encrypt data and handle logging. Stronger security often creates friction with usability and performance, so those trade-offs need to be discussed openly rather than left implicit.
Key measures:
Compliance
Regulations and industry standards such as GDPR, HIPAA, and PCI-DSS impose specific constraints on how your system handles data, logging, access control, and audit trails. Compliance requirements often dictate architectural patterns. Data residency rules may require region-specific storage, and audit requirements may demand immutable logging. These constraints need to be identified early because retrofitting compliance into an existing architecture can be complex and expensive.
Explainability
For systems that use AI or machine learning to support or make decisions, architecture may need to support explanation, traceability, and auditability. Different stakeholders may need different levels of explanation, from a plain-language account of how the system works to a record of the data, model, and logic behind a specific output.
Key measures:
Sustainability
Architectural decisions affect how much infrastructure, energy, and ongoing effort your system requires. Sustainability is not just about environmental impact. It also includes how efficiently the system uses resources, how costly it is to operate, and how easy it is to maintain and evolve over time.
These concerns influence decisions about compute allocation, data retention, system complexity, and model selection. For example, keeping unused capacity running increases both cost and energy use, and storing data indefinitely creates compliance overhead that compounds over time.
Sustainability requirements help you avoid these issues by setting expectations for efficient resource use and long-term viability.
Key measures:
Interoperability
Most systems need to exchange data or coordinate work with other systems, services, or platforms. These requirements affect API design, data formats, authentication, and how tightly your solution depends on external services.
Reliability
A system can be running and accepting requests without actually working correctly. That's the difference between availability and reliability. A payment processing system that is up 99.99% of the time but silently drops 1% of transactions has high availability and low reliability.
Reliability requirements cover fault tolerance, error handling, and data consistency. If your system must never lose a submitted order, that shapes how you design retry logic, how you handle partial failures in distributed systems, and what data integrity guarantees you commit to. A system where occasional data loss is acceptable looks very different architecturally.
Key measures:
Maintainability
Every system will need to change after launch. Maintainability requirements define how easily you can make those changes, whether you are fixing defects, adapting to new needs, or extending the system over time.
When maintainability is poor, technical debt can accumulate quickly and each change becomes slower and riskier than the last.
Exploring and Identifying Architecture Requirements
Not all architectural requirements can be fully defined at the start of a project. Some, such as compliance constraints, integration dependencies, and platform choices, are known early and must be addressed before development begins. Others only become visible as you build, test, and learn how the system behaves under real conditions.
| More Upfront Architecture When… | More Iterative Architecture When… |
|---|---|
| Strict compliance, safety, or regulatory requirements | The domain is well understood and the technical environment is familiar |
| Integration with existing systems is complex or tightly coupled | The system is relatively self-contained with limited integration dependencies |
| Platform and infrastructure decisions lock in early and carry long-term consequences | You can deploy incrementally and learn from real usage |
| Demanding performance, availability, or security thresholds from day one | Architecture decisions can be revisited without prohibitive cost |
| Multiple teams will build against a shared architecture |
The point is to invest early effort where it pays off most, not to try to nail down every detail in advance (Boehm, 2002). Too much upfront specification wastes effort and makes change harder, while too little can lead to costly rework (Chen et al., 2013).
The following practices help you surface architecture needs before they become costly surprises.
How to Define and Document Architecture Needs
This section introduces three practical ways to define and document architecture needs: deployment diagrams, architecture decision records, and backlog items with acceptance criteria.
Deployment Diagrams
Deployment diagrams illustrate the physical and virtual components that make up the system, showing where software artifacts run and how infrastructure is organized. They help you identify architectural requirements by making the system's structure visible, which reveals dependencies, potential failure points, and performance bottlenecks that might not be apparent from requirements documents alone.
Key Elements of a Deployment Diagram
Using Deployment Diagrams to Surface Architecture Requirements
Walking through a deployment diagram with stakeholders can surface architectural requirements that might otherwise remain hidden. For example:
Architecture Decision Records (ADRs)
An Architecture Decision Record is a short document that captures a single architectural decision along with the context that led to it and the consequences that follow from it. ADRs were first proposed by Nygard (2018) as a lightweight way to record design decisions close to the code.
Writing an ADR forces you to explain why a choice was made and often surfaces assumptions and trade-offs that would otherwise stay implicit. It also helps create shared understanding and makes it easier to revisit a decision later if conditions change (Keeling, 2022).
The format can vary, but most ADRs include the same core elements: the decision being made, the context behind it, the alternatives considered, and the consequences that follow. Keep it short.
Status: Accepted
Context: The system must support transactional updates, role-based access, encrypted storage, daily backups, and high availability for internal operations. The team has limited capacity to manage database infrastructure directly, and downtime during business hours would disrupt critical work.
Decision: Use a managed PostgreSQL service rather than self-hosting the database on virtual machines.
Alternatives considered: Self-host PostgreSQL on cloud infrastructure; use a NoSQL document database; use a managed relational database service.
Consequences: A managed service handles backups, patching, replication, and failover, which reduces operational load on the team. The trade-off is higher recurring platform cost and less control over low-level configuration. If performance or scaling needs change significantly, this decision may need to be revisited.
Backlog Items and Acceptance Criteria
Capturing architecture requirements as backlog items helps ensure they are prioritized, estimated, and tracked through the same process as other development work, improving visibility and giving you a full picture of the work needed to deliver your solution.
There are several ways you can represent architecture requirements in the backlog:
Validating Architecture Needs
Best Practices
Wrap Up and What's Next
In Chapter 7, you will shift from system-level quality attributes to the requirements that arise when your solution incorporates AI and machine learning, including concerns such as fairness, transparency, data governance, and responsible use.
References
Bass, L., Clements, P., & Kazman, R. (2021). Software architecture in practice (4th ed.). Addison-Wesley.
Boehm, B. (2002). Get ready for agile methods, with care. Computer, 35(1), 64–69.
Chen, L., Babar, M. A., & Nuseibeh, B. (2013). Characterizing architecturally significant requirements. IEEE Software, 30(2), 38–45.
Kazman, R., Klein, M., & Clements, P. (2000). ATAM: Method for architecture evaluation (CMU/SEI-2000-TR-004). Software Engineering Institute, Carnegie Mellon University.
Keeling, M. (2022). The psychology of architecture decision records. IEEE Software, 39(4), 114–117.
Levy, O., Dikman, I., Levy, N., & Winokur, M. (2026). AI-assisted requirements engineering: An empirical evaluation relative to expert judgment. arXiv
Nygard, M. (2018). Release it!: Design and deploy production-ready software (2nd ed.). Pragmatic Bookshelf.
© 2026 Richard Sturman. All rights reserved.
No part of this publication may be reproduced, distributed, or transmitted without prior written permission.