Chapter 6

Defining Architectural
Requirements

28 min read

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

1

Explain what system architecture is and how architecture needs shape it

2

Identify and define architecture requirements that influence system design decisions

3

Document architectural decisions using Architecture Decision Records (ADRs)

4

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

Reduce risk around security, downtime, and data loss
Support critical processes the organization depends on
Improve dependability for the people using the system
Keep the solution viable maintainable and evolvable over time

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).

When architecture requirements are neglected, they tend to accumulate as technical debt, driving up rework costs and increasing the risk of failure.

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.

User Interface (UI) Web pages, mobile apps, dashboards Application / Business Logic Rules, workflows, processing Data Storage Databases, files, records Infrastructure & Runtime Environment Hardware, cloud, networks, platforms
Fig 6.1 — A simple layered view of system architecture
User Interface (UI). This is what users interact with: web pages, mobile apps, dashboards, or other interfaces. Design decisions at this layer shape usability, accessibility, and how quickly users can complete tasks.
Application / Business Logic. This layer processes inputs, applies rules, and coordinates workflows. It's where the core behavior of the system lives, and where maintainability and correctness are won or lost.
Data Storage. Databases, file storage, and other ways of storing data and information sit here. How you store and retrieve data affects performance, scalability, consistency, and security.
Infrastructure and Runtime Environment. The hardware, cloud services, networks, and platforms your system runs on. These choices drive availability, cost, and operational complexity.

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.

Architecture requirements impact explorer

Adjust the quality attribute sliders to see how increasing performance, scalability, and availability requirements affects the number of servers needed at each architecture layer.

Low
Low
Low
Total Servers
3
Est. Uptime
95%
Fig 6.2 — Interactive: How architecture requirements drive infrastructure complexity

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
Table 6.1 — How availability targets affect architectural complexity

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:

Response time percentiles (e.g., 95th percentile, under 2 seconds)
Throughput (transactions per second)
Resource utilization thresholds
Concurrent user limits

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:

Vulnerability assessment scores
Penetration test results
Compliance with security frameworks (OWASP, NIST)
Authentication and authorization mechanisms
Encryption standards

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:

Audit trail completeness
Traceability of inputs, outputs, and model versions
Whether users can understand and act on the explanation provided

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:

Resource utilization (CPU, memory, and storage efficiency)
Cost per transaction or request
Data retention and storage growth over time
Energy use or infrastructure footprint where measurable

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:

Error rates and failure rates under normal and peak load
Data consistency and integrity verification
Graceful degradation behavior when something goes wrong
Recovery completeness after a fault

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
Table 6.2 — When to define architecture upfront vs. iteratively

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.

Architecture Workshops
Bring together business stakeholders, developers, and operations staff to surface concerns such as performance, security, or compliance. Define concrete quality scenarios — for example, "the system must process 1,000 transactions per second with less than two seconds" (Bass, Clements, & Kazman, 2021).
Quality Attribute Scenarios
Capture architecture requirements in a structured way that clearly describes a situation and its expected outcome. For example: "Under normal load, when a user submits a search query, the system returns results within two seconds for 95% of requests."
System Metrics Analysis
Review current performance, scalability patterns, and security incidents to uncover hidden needs.
Deployment Modeling
Map system architecture to identify potential points of failure that may affect performance, scalability, or security. Deployment diagrams (described below) are a practical tool for this.

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

Nodes. Physical or virtual hardware components, such as servers, virtual machines, containers, mobile devices, or cloud services. Each node represents a runtime environment where software executes.
Artifacts. The software components deployed on nodes: executable files, libraries, databases, configuration files, or container images. They show what is running where.
Communication paths. Network connections between nodes, shown as lines connecting them. Labels typically indicate the protocol or interface used (such as HTTPS, API).
Components. Optional elements showing the logical software modules within artifacts, useful when you need to show how responsibilities are distributed inside a deployment unit.

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:

A single database node with no replica reveals an availability risk, which may prompt a requirement for automated failover.
A communication path between your application and an external payment gateway raises questions about latency, retry logic, and what happens when the gateway is unavailable.
Deploying to multiple cloud regions to comply with data residency regulations adds complexity for data synchronization and consistency.
Web Server UI, static assets «node» App Server Business logic, APIs «node» Database Server PostgreSQL «node» Payment Gateway External service «external» DB Replica Failover standby «optional» HTTPS TCP HTTPS Replication
Fig 6.3 — Example deployment diagram showing nodes, artifacts, and communication paths

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.

Example: ADR 004 — Use a Managed Relational Database Service

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:

Epics
Can be used when a requirement is broad enough to involve multiple pieces of supporting work, such as improving platform security, implementing audit logging, or increasing system resilience.
User Stories
Capture specific work needed to have an impact on the solution's architecture. For example: "As a system operator, I want automated failover between primary and secondary databases so that the system maintains 99.9% availability during a single-node failure."
Acceptance Criteria
Capture architecture-related needs within the context of a user story. For example, a document upload story might include criteria such as: "Files are encrypted at rest using AES-256" and "Uploads complete within 3 seconds for files up to 25 MB."

Validating Architecture Needs

Architecture Tradeoff Analysis Method (ATAM)
ATAM is a structured workshop method for evaluating whether an architecture can support the solution's quality attribute goals (Kazman, Klein, & Clements, 2000). It brings stakeholders together to walk through scenarios (e.g., performance under load, system failure, security threats) and assess how the proposed design is impacted.
Focus: Identifying risks, trade-offs, and where design changes have a large impact on attributes like performance, security, or reliability. Rather than trying to prove the architecture is "correct," ATAM helps teams understand where it is strong, where it is vulnerable, and what trade-offs are being made.
Prototypes and Technical Spikes
A spike is a short, time-boxed investigation used to reduce architectural uncertainty. Spikes expose hidden constraints in third-party APIs or infrastructure, test quality attribute assumptions before committing to an architecture, and validate integration approaches in your actual environment. The findings from a spike provide concrete evidence for architecture decisions.
Using Generative AI to Validate Architectural Requirements
Generative AI can be useful for a first-pass review of project goals, use cases, user stories, and other requirements artifacts to surface potential architecture concerns (Levy et al., 2026). For example, it may help identify missing performance assumptions, security implications, integration dependencies, or data handling issues.
Limitations: LLM-based reviews can surface gaps you might miss, but they lack the domain-specific judgment needed to evaluate whether a concern is real or relevant. Treat their output as a starting point that still needs to be checked against the system's actual constraints and risks.

Best Practices

Be specific and measurable
Vague statements like "the system must be fast" or "the system should be secure" do not support architectural decisions. Define testable criteria: response time thresholds, uptime percentages, encryption standards, or compliance checkpoints.
Prioritize based on business value and risk
Not all architecture requirements are equally critical. Focus on the requirements that provide the most value or pose the highest risk if unmet. A social media feed can tolerate occasional slowness; a payment processing system cannot.
Validate assumptions early
Discovering that your chosen database cannot handle projected load is far cheaper during a two-day spike than after six months of development. Prototypes and proofs of concept serve the same purpose: they turn assumptions into evidence before the cost of being wrong gets high.
Differentiate across components
Apply higher standards to critical components and avoid over-engineering low-impact ones.
Record your reasoning
Use ADRs to capture why decisions were made, not just what was decided. The reasoning is what future team members need most when deciding whether to change course.
Monitor and adapt
Use testing, monitoring, and audits throughout the lifecycle to verify that architecture requirements are being met. Requirements that seemed adequate at launch may need revision as usage patterns, data volumes, or regulatory expectations change.
Make trade-offs explicit
Acknowledge architecture trade-offs and make sure they align with organizational priorities. When you tighten security at the cost of performance, or choose a simpler design knowing it limits future scalability, document the reasoning so the team can revisit it when circumstances change.

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.