| Lesson 6 | Quality Factors |
| Objective | Explain how an architect can determine qualitative requirements. |
Every stakeholder group in an e-business organization has a different definition of quality. Customers define quality as a fast, intuitive experience that delivers what they ordered without friction. Employees define it as a system that does not create unnecessary work. Investors define it as a platform that scales profitably. Regulators define it as a system that handles data lawfully. The architect's job is to translate all of these definitions into a single coherent set of qualitative requirements — and then to specify an architecture that meets them.
This translation is the core skill this lesson addresses. It is harder than it sounds, because qualitative requirements resist precise measurement by definition. "The site should be fast" is not a requirement — it is a preference. "The site should achieve a Largest Contentful Paint score of under 2.5 seconds on a 4G mobile connection for the 75th percentile of users" is a requirement. The architect's work is to move from the first statement to the second, in full awareness of what each stakeholder group means when they say "fast."
Stakeholder groups cluster into three categories, each with a distinct quality orientation:
External-facing stakeholders — customers and the broader community — define quality through experience. Customers care about page load speed, ease of navigation, mobile compatibility, personalization, and the security of their payment data. They do not articulate these as requirements; they articulate them as complaints when they are not met, and as loyalty when they are. Community and social responsibility concerns — environmental impact, ethical sourcing, transparent supply chains — have become increasingly visible quality signals, particularly for younger consumer demographics. Architecturally, these translate into requirements around sustainability reporting, supplier data transparency, and carbon footprint tracking.
Internal-facing stakeholders — employees and investors — define quality through efficiency and growth. Employees who manage the e-commerce platform care about backend usability, inventory management accuracy, and order processing reliability. Their feedback surfaces operational quality requirements that are invisible to customers but directly affect customer outcomes. Investors focus on scalability, security, and the data analytics capabilities that support strategic decision-making. Their quality definition is financial: a platform that can grow revenue without proportionally growing cost.
Compliance-driven stakeholders — regulatory bodies and suppliers — define quality through conformance. Regulatory requirements — GDPR, CCPA, PCI DSS — impose specific, non-negotiable quality constraints on data handling, payment processing, and user privacy. Supplier and partner collaboration requirements impose interoperability and real-time data exchange standards that the architecture must accommodate. These are not optional quality attributes — they are baseline requirements that the architecture must satisfy before any other quality discussion can occur.
The architect translates these stakeholder concerns into requirements by identifying the quality factors that each constituency values. You have encountered quality factors yourself every time you used a system that frustrated or impressed you:
That last question is the most important. "Good enough" for a customer placing a single order is different from "good enough" for a merchandiser managing ten thousand product listings, which is different from "good enough" for a Board of Directors evaluating competitive positioning in international markets. Software quality is improved by separating these concerns into tiers — designing each layer of the system to meet the quality requirements of the stakeholders who interact with it directly.
To understand where modern e-business architecture comes from, it helps to understand the four-tier model that defined large-scale web applications in the early 2000s. Large websites of that era implemented the application layer as a collection of parallel application servers, with web server clusters handling incoming requests from large numbers of users. Application servers interacted with commercial database servers — Oracle and IBM DB2 were the dominant choices. The tiers were connected by middleware: software packages that handled communication, data translation, and process distribution between layers.
The middleware layer of that era was dominated by CORBA — the Common Object Request Broker Architecture. CORBA was a standard defined by the Object Management Group (OMG) that allowed application components written in different languages and running on different platforms to communicate with each other. In its time, it was a serious piece of engineering. By 2026, it is effectively dead — abandoned in favor of approaches that are simpler, more developer-friendly, and better suited to cloud-native environments.
The middleware landscape has been replaced by three modern patterns, each suited to different communication requirements. RESTful APIs over HTTP provide the standard interface for synchronous request-response communication between services — they are language-agnostic, widely understood, and supported by every platform. GraphQL provides a flexible query interface for clients that need to retrieve precisely the data they require without over-fetching. For high-performance microservice-to-microservice communication, gRPC — Google's Remote Procedure Call framework — provides strongly typed, binary-encoded communication that outperforms REST for internal service communication at scale.
For asynchronous communication — where a producer generates events that consumers process independently — message brokers have replaced the synchronous middleware of the CORBA era. Apache Kafka handles high-throughput event streaming at scale. RabbitMQ provides flexible message routing for lower-volume workloads. These patterns decouple producers from consumers, enabling independent scaling and fault tolerance that synchronous middleware cannot provide.
JDBC — Java Database Connectivity — is the notable exception. Unlike CORBA, JDBC remains in active use in 2026. It is the standard Java API for relational database access, and it underlies every major Java ORM framework — Hibernate, JPA, Spring Data. The four-tier architecture's database tier has evolved — Oracle and DB2 are joined by PostgreSQL, MongoDB Atlas, and Amazon Aurora — but the Java application layer still connects to relational databases through JDBC.
Software quality has historically suffered from a structural economic problem: for most software products, increasing quality has not increased profits. The combination of user expectations shaped by low-quality software and market dynamics that reward speed-to-market over correctness created a stable equilibrium in which poor-quality software was the rational competitive choice.
Government software contractors were paid the same regardless of quality. Commercial software companies discovered that selling a low-quality first version and charging for upgrades that fixed bugs was more profitable than shipping a high-quality product at launch. The capability maturity model made progress in raising the floor, but time-to-market pressure consistently overrode quality investment in commercial software development.
The shift to SaaS subscription models has changed this calculus meaningfully. When revenue depends on monthly renewals rather than one-time license fees, customer churn is directly tied to product quality. A SaaS product that loses customers because it is slow, unreliable, or difficult to use loses recurring revenue that is expensive to recover. This has created genuine economic incentives for quality that were largely absent in the perpetual-license era.
DevOps and Site Reliability Engineering (SRE) practices have made continuous quality measurement standard. Error budgets — the acceptable amount of downtime or error rate within a defined period — make quality visible and measurable in operational terms. Service Level Objectives (SLOs) and Service Level Indicators (SLIs) provide the vocabulary for translating qualitative stakeholder expectations into quantitative operational targets that engineering teams can design and build toward.
Specifying the right architecture depends on the accuracy of the translation from qualitative stakeholder expectations into objective quality requirements. Three principles govern this translation:
Seven factors drive architecture and design quality in practice:
These quality factors ultimately translate into quantitative requirements — the performance metrics by which the solution is evaluated. The architect must manage trade-offs between ideal quality requirements and the constraints of schedule, cost, and feasibility. Making those trade-offs explicitly, with full awareness of their downstream consequences, is the work.
A concrete example of competing quality requirements is the graphics versus performance trade-off that every e-commerce platform faces. The marketing team wants rich visual content — high-resolution product photography, video demonstrations, lifestyle imagery — to create an emotionally engaging experience that drives conversion. The engineering team knows that large image files increase page load time, and that every additional second of load time reduces conversion rates by a measurable percentage.
Both positions reflect legitimate quality requirements from different stakeholder groups. The architect's job is not to choose one over the other — it is to find solutions that satisfy both.
In the early 2000s, the available solutions were image compression and file distribution across multiple servers. In 2026, the toolkit is significantly richer. WebP and AVIF image formats deliver image quality equivalent to JPEG and PNG at 25-50% smaller file sizes. Responsive images — implemented through the HTML srcset attribute — serve appropriately sized images based on the user's screen resolution and viewport width, preventing mobile users from downloading desktop-sized files. Lazy loading defers the loading of off-screen images until the user scrolls toward them, reducing initial page load time without sacrificing image quality. CDN edge delivery — through Cloudflare, Fastly, or similar platforms — serves images from locations geographically close to the user, reducing latency regardless of image file size.
Core Web Vitals — specifically Largest Contentful Paint (LCP), which measures how quickly the largest visible content element loads — provides the measurable quality target that quantifies this trade-off. An LCP score under 2.5 seconds is considered good by Google's standards and is factored into search ranking. The architect can use this metric to evaluate proposed image strategies against a concrete, stakeholder-meaningful target rather than an abstract quality preference.
High availability is a quality factor that illustrates the cost dimension of quality trade-offs with particular clarity. Achieving 99.99% availability — four nines — means less than 52 minutes of downtime per year. Achieving 99.5% availability means approximately 43 hours of downtime per year. The difference in user experience between these two targets is significant. The difference in infrastructure cost is substantial.
Modern cloud infrastructure has made high availability more accessible than it was in the four-tier era, but it has not made it free. Multi-region deployment — running the platform in two or more geographic regions simultaneously, with automatic failover — is the standard approach for achieving four-nine availability in cloud-native architectures. It requires duplicate infrastructure, cross-region data replication, and the operational complexity of managing failover procedures. AWS, Azure, and GCP each offer SLA commitments for their managed services — typically 99.9% to 99.99% depending on the service and configuration — that the architect can use as inputs to overall system availability calculations.
SRE practice provides the vocabulary for making these trade-offs explicit. A Service Level Objective (SLO) defines the target availability or performance level — 99.9% uptime, sub-200ms API response time at the 95th percentile. A Service Level Indicator (SLI) is the metric used to measure whether the SLO is being met. An error budget is the acceptable amount of SLO violation within a defined period — if the SLO is 99.9% uptime, the error budget is 0.1% of the period, or approximately 43 minutes per month. When the error budget is consumed, engineering effort shifts from feature development to reliability work.
The architect who presents this framework to a Board of Directors or CFO can have a precise conversation about the cost of availability: what level of availability the business requires, what it will cost to achieve it, and what the business impact of the downtime allowed by each option is. That conversation produces a decision. A qualitative discussion about whether the site should be "highly available" does not.
Identifying quality factors early prevents conflicts later — conflicts that result in redesign, delays, and unhappy clients. Quality is a moving target in e-business; the bar is raised continuously. Some quality factors are unique to e-business: security posture, penetration risk, fraud exposure. Some are not intuitive until they become problems: the performance implications of a third-party analytics script, the availability impact of a single-region database, the conversion cost of a checkout flow that requires one step more than a competitor's. The architect who surfaces these factors at the beginning of the engagement provides insurance against the evolutionary nature of the e-business environment — and against the cost of discovering quality requirements too late to address them cleanly.