Chapter 4 — Quality Throughout the Software Development Lifecycle
Metadata
| Field | Value |
|---|---|
| Part | Part I — Foundations of Modern Software Quality Engineering |
| MQE-BOK domain | Domain 1 — Foundations of Modern Software Quality Engineering |
| Chapter | 4 |
| Audience | Software Testers, QA Engineers, Automation Engineers, SDETs, Software Engineers, Product Managers, and Engineering Managers |
| Prerequisites | Chapters 1–3 |
| Estimated study time | 110 minutes, plus the practical exercise |
| Version | 0.1.0 |
| Status | Draft |
Opening Quote
MSQE principle: Quality is not handed from one delivery phase to the next. It is engineered through the decisions, feedback, and learning that connect those phases.
Opening Story
The following illustrative scenario describes a familiar release problem.
A team delivers a change to a subscription service that allows customers to pause their plans. The work appears complete: the product owner accepts the user story, automated tests pass, and a Quality Engineer confirms the main customer journey in a test environment. The release is deployed on a Friday afternoon.
On Monday, support reports that some customers who resume a plan are charged twice. The application code correctly prevents a second pause request, but the service that processes payment events can receive the same message more than once. The deployment also introduced a configuration value that shortened the event-retention period, making investigation harder. None of these conditions appeared in the final manual test.
The immediate question is often, “Why did testing miss this?” That question is too narrow. A more useful set of questions is:
- Was the possibility of duplicate events identified while the requirement was being refined?
- Did the design make repeated event handling safe?
- Did code review examine the interaction between the payment workflow and event delivery?
- Did the test strategy include an integration test for repeated events?
- Did deployment verification confirm the relevant configuration?
- Did production telemetry expose duplicate charges quickly enough to limit customer impact?
The issue is not evidence that testing has failed as a discipline. It is evidence that a customer-relevant quality risk travelled through several decisions without being made visible and controlled. Modern Software Quality Engineering (MSQE) treats that path as the subject of engineering.
Why This Chapter Matters
Software is not made in one activity called development and then checked in another activity called testing. It is shaped by a sequence of decisions: what problem to solve, what constraints apply, how a system will behave under stress, how code will be changed, how it will be released, and how the organisation will learn from real use. Each decision can either reduce uncertainty or allow avoidable risk to accumulate.
This chapter builds on the quality model in Chapter 3 and the profession's evolution in Chapter 2. It explains where quality work belongs throughout a modern delivery lifecycle. Chapter 5 examines the timing of that work through Shift Left, Shift Right, and controlled operational learning; this chapter establishes the lifecycle activities and evidence those practices connect. The central shift is practical: the Quality Engineer is not solely the person who evaluates a completed increment. They help the team make quality observable, testable, and manageable from idea through operation and improvement.
This does not eliminate the need for independent thinking, specialist testing, or release evidence. It changes their placement and purpose. Evidence is produced continuously, decisions are informed earlier, and information from production improves the next requirement, design, and test.
Learning Objectives
By the end of this chapter, you should be able to:
- explain how quality is addressed at every stage of the software development lifecycle;
- describe the contribution of a Quality Engineer during planning, design, development, testing, deployment, and production operations;
- identify the feedback loops that connect delivery activities with operational learning;
- explain why preventing defects and reducing uncertainty early is generally more effective than relying only on late detection; and
- recognise quality risks early enough to influence requirements, architecture, design, and delivery decisions.
The Evolution of the SDLC
The software development lifecycle, or SDLC, is a way of organising the work needed to create, operate, change, and eventually retire software. It should not be mistaken for a single universal sequence of stages. Different organisations use plan-driven, iterative, agile, continuous-delivery, or hybrid approaches. A lifecycle describes the work that must be understood and governed; it does not prescribe a particular team structure or toolchain.
The current ISO/IEC/IEEE 12207 standard provides a common framework for software life-cycle processes across acquisition, supply, development, operation, maintenance, and disposal. It explicitly permits processes to be applied concurrently, iteratively, recursively, and incrementally, and does not require a particular lifecycle model.1 This is useful context for MSQE: a modern lifecycle is not a conveyor belt. It is a connected system of work and feedback.
Early software projects often represented the lifecycle as a linear progression because the work was expensive to change, releases were infrequent, and integration occurred late. That representation remains useful when a team must understand dependencies, approvals, or safety obligations. Its weakness is not that it names phases. Its weakness is the assumption that knowledge can flow in only one direction.
Modern delivery shortens the interval between decision and evidence. A requirement can be challenged before implementation; a design can be evaluated before a service is built; a pull request can be reviewed and analysed before it is merged; a release can be observed while it is introduced; and an incident can change backlog priorities. The lifecycle still has activities, but those activities interact repeatedly.
Quality work therefore has two dimensions:
- Lifecycle coverage: quality concerns must be considered wherever a decision creates, changes, or exposes a customer outcome.
- Feedback speed and quality: evidence must return to the people who can act on it while the decision is still changeable.
Neither dimension means that every activity must be repeated for every trivial change. The appropriate depth depends on risk, uncertainty, reversibility, customer impact, and regulatory or contractual obligations. The engineering task is to make that judgement explicit.
Traditional Waterfall Quality
In a traditional waterfall model, work is commonly organised into relatively distinct phases such as requirements, design, implementation, integration, test, and acceptance. Quality activities often appear near the end, when a completed system can be evaluated against a specification. Formal entry and exit criteria, documented reviews, traceability, and independent verification can provide valuable discipline, particularly for high-consequence systems.
This approach emerged for understandable reasons. Large projects needed coordination across specialised groups. A stable specification allowed teams to plan work and verify that delivered behaviour matched agreed expectations. Independent test teams could provide an important challenge to development assumptions. These practices remain relevant where evidence, auditability, or controlled change is essential.
The difficulty arises when phase boundaries become knowledge boundaries. A tester who first sees a requirement after implementation cannot easily improve its clarity. A developer who learns about an operational constraint only during acceptance test may need to redesign rather than adjust. A defect found during final integration may represent an ambiguity that existed when the requirement was first written.
The main quality limitation is delayed feedback, not the existence of documentation or review. A linear lifecycle can contain early quality work when teams inspect requirements, conduct design reviews, and establish test strategy before coding. Conversely, an organisation can call itself agile while still leaving testability, deployability, and operational readiness until the end.
For Quality Engineers, the lesson is balanced. Preserve useful controls such as traceability, explicit acceptance evidence, and independent challenge where risk warrants them. Move the questions that influence design and prevention to the earliest point at which a team can answer them.
Agile Quality
Agile methods changed the cadence of software delivery by favouring small increments, frequent feedback, and close collaboration among people who create and validate software. They did not make quality automatic. Instead, they made it more feasible to discover misunderstandings early and adapt before a large body of work had accumulated.
In an agile team, quality begins during backlog refinement. A user story is not ready merely because it has a title and a happy-path description. The team should understand the outcome, relevant users, constraints, failure conditions, data rules, dependencies, and observable acceptance criteria. A Quality Engineer can help turn vague statements such as “the service should be fast” into a measurable expectation for a specific operation and context.
During iteration planning, the team selects work it can complete to an agreed definition of done. A useful definition of done reflects the kind of work being performed. It may include peer review, automated checks, test evidence, documentation changes, security review, telemetry, and deployment readiness. It should not become a long universal checklist detached from risk; it should make meaningful evidence visible.
Agile quality also benefits from collaboration patterns such as joint example discovery, pairing, and exploratory testing. The value is not a named ceremony. It is that different perspectives encounter an assumption while there is still time to change it. Product, engineering, quality, security, operations, and accessibility expertise may all be needed, depending on the change.
An agile increment is only potentially releasable if its relevant quality concerns have been addressed. “We will test it in the hardening sprint” is usually evidence that the feedback loop has been deferred rather than removed. The appropriate answer may be to reduce the increment, defer a feature deliberately, or create a risk-managed release plan; it is not to reclassify unfinished quality work as complete.
DevOps and Continuous Quality
DevOps extends collaboration beyond development and test to include the people and systems responsible for deploying, operating, supporting, and improving software. Its central implication for quality is shared ownership of the delivered service, not simply faster deployment automation.
Continuous delivery is the capability to keep software in a deployable state and to make releases routine, repeatable, and appropriately controlled. Continuous quality is the corresponding discipline of producing useful evidence continuously: build results, test results, static-analysis findings, deployment verification, service telemetry, customer feedback, and incident learning. A pipeline can automate checks, but it cannot decide whether those checks represent the risks that matter.
The DORA research programme currently groups delivery performance into throughput measures—change lead time, deployment frequency, and failed deployment recovery time—and instability measures—change fail rate and deployment rework rate.2 These measures are not a scorecard for judging individual engineers or a universal release target. Used thoughtfully, they help a team examine its delivery system: whether changes move safely, whether failed changes are contained and recovered, and where unnecessary delay or rework occurs.
Continuous quality requires more than a passing pipeline:
- The checks must be meaningful for the change and its risks.
- Results must be understandable and actionable by the people who own the change.
- Environments, configuration, data, and dependencies must be considered alongside application code.
- Production signals must confirm that the released system behaves acceptably for customers.
- Findings must influence future requirements, designs, and engineering practices.
This is why quality engineering is not synonymous with test automation. Automation is an important means of shortening feedback and improving repeatability. It is not a substitute for deciding what should be checked, what evidence is sufficient, or how a system should respond when conditions differ from expectations.
Modern Software Delivery Lifecycle
A modern software delivery lifecycle can be represented as a continuous learning loop:
- understand a customer or business need;
- define outcomes, constraints, and risks;
- design a change and its operational characteristics;
- implement, review, and verify the change;
- deploy and confirm it in its real environment;
- operate, support, and learn from the service; and
- use that learning to change the next decision.
The loop is deliberately simple. In practice, a team may perform several steps in parallel, revisit a design after an experiment, or maintain a service while developing a replacement. The value of the model is that it makes a missing connection visible. If an operational incident never changes a requirement or architecture decision, the lifecycle is incomplete.
The Quality Throughout the Software Development Lifecycle diagram shows quality activities and evidence across every lifecycle activity, with operational learning informing future work.
Every phase should have explicit inputs and outputs. Inputs identify what a decision is based on. Outputs provide evidence, decisions, or artefacts that other people can use. The following teaching model is an original MSQE framing, not an ISO or IEEE process definition.
| Lifecycle activity | Typical quality inputs | Useful quality outputs |
|---|---|---|
| Requirements and planning | customer problem, business goals, prior incidents, regulations, service data | refined acceptance criteria, quality requirements, risk assumptions, prioritised questions |
| Architecture and design | quality requirements, constraints, integration and data risks | documented trade-offs, architecture decisions, testability and observability design, validation approach |
| Development | agreed behaviour, design decisions, coding standards, test strategy | reviewed code, unit-level evidence, static-analysis results, updated documentation |
| Testing and integration | deployed candidate, test data, risk model, interfaces and environments | evidence about behaviour, risks, limitations, and release readiness |
| Deployment | versioned artefact, configuration, migration plan, recovery plan | verified rollout, deployment record, early operational signals |
| Production operations | telemetry, support signals, service objectives, incident reports | service-health evidence, improvements, backlog changes, updated controls |
The table does not imply that documentation is the only output. A testable example, an automated check, a dashboard, an alert rule, a decision record, or a deliberately deferred risk can all be valuable outputs when they enable a responsible next action.
Quality During Requirements
Requirements are one of the earliest and highest-leverage places to engineer quality. A requirement should communicate the intended outcome and the constraints within which that outcome must be achieved. It is not enough to state that a user can perform an action. The team also needs to understand what happens with invalid input, concurrent activity, interruption, degraded dependencies, privacy obligations, accessibility needs, and support expectations.
Chapter 3 distinguished ISO/IEC 25010 product quality characteristics from engineering capabilities. That distinction matters here. A requirement may express a needed product quality characteristic such as reliability, security, or performance efficiency. It may also create an engineering need such as observability or testability, which helps the team evaluate and operate the product. ISO/IEC 25010 supplies a product-quality model; it does not turn every desirable engineering capability into a product quality characteristic.3
Quality Engineers contribute by asking questions that make hidden assumptions testable:
- Who is affected, and what outcome matters to them?
- What data is created, changed, retained, or exposed?
- What must happen if a dependent service is slow, unavailable, or returns an unexpected response?
- Which rules must hold when requests are repeated or arrive out of order?
- What evidence will show that the outcome has been achieved after release?
- Which risks are acceptable, and who owns the decision?
For example, a requirement to submit a payment should state more than “the customer receives confirmation.” The team may need to define whether repeated requests are safe, how the customer sees a pending state, when support can investigate a failure, and what event records are retained. Idempotency is the property by which repeating an operation has the same intended effect as performing it once. Naming that property in the requirement can prevent it from becoming an accidental implementation detail.
Useful outputs from requirements work include acceptance criteria, quality attribute scenarios, known assumptions, a risk hypothesis, and a first view of how the change will be observed in production. The goal is not exhaustive prediction. It is to identify the questions whose answers affect design or release decisions.
Quality During Architecture and Design
Architecture and design determine which quality outcomes are feasible and how costly they will be to demonstrate later. An architecture review is a structured examination of whether a proposed solution can meet its important constraints and quality requirements. A design review applies the same discipline at a more detailed level: interfaces, data flow, state changes, failure handling, and implementation choices.
Reviews are valuable when they are decision-oriented. A design document that merely describes components is less useful than one that records trade-offs: why a synchronous dependency is acceptable, why a particular consistency model was chosen, what happens when a message is duplicated, or how a rollback interacts with a data migration. The purpose is not to obtain ceremonial approval. It is to expose assumptions before they become expensive to change.
Quality Engineers need not own architecture decisions to contribute materially. They can bring risk models, examples of production failure modes, test strategy, and questions about evidence. Typical design questions include:
- Can important behaviour be tested through stable interfaces without coupling tests to implementation detail?
- Can a team observe success, failure, latency, saturation, and relevant business outcomes?
- What happens if a dependency times out, sends duplicate data, or changes its contract?
- Are data migrations compatible with the planned rollout and recovery approach?
- Which failure modes must be simulated before release, and which are better detected through controlled production signals?
Observability is the ability to infer a system's internal state from the evidence it produces, such as logs, metrics, traces, and domain events. Testability is the degree to which a system can be effectively controlled, observed, and evaluated to produce reliable evidence about its behaviour. These are engineering capabilities that make quality claims easier to establish and maintain; they should be designed rather than retrofitted as an afterthought.
A well-designed system also supports proportionate validation. A service may expose health signals, correlation identifiers, version information, and safe test seams. A correlation identifier is a unique value that connects related events across components. A user interface may provide accessible structure that can be evaluated by both people and automated checks. A data pipeline may retain enough lineage to explain how a customer-visible value was produced. Such choices make later testing and operations more effective without reducing quality engineering to a testing concern.
Quality During Development
During development, quality is created through many small decisions: naming, boundaries, error handling, data validation, dependency use, and the discipline of making a change understandable to another engineer. The purpose of development-time practices is to reduce defects, reveal inconsistencies, and build evidence while the relevant code and context are still close at hand.
Code review is one such practice. A constructive review checks more than formatting. It can challenge whether the change meets the agreed behaviour, preserves security and privacy constraints, handles failure safely, has appropriate tests, and remains maintainable. Review quality depends on context: reviewers need the relevant requirement, design decision, and risk, not simply a line-by-line diff.
Static analysis examines code or other artefacts without executing the completed system. Compilers, linters, type checkers, dependency analysis, security scanners, and policy checks may all contribute. These checks are particularly useful for fast, repeatable feedback on known classes of problem. They are not proof that the system is fit for use. Their value depends on appropriate rules, trusted results, and a workflow that allows teams to address findings rather than learn to ignore them.
Unit tests provide evidence about a small unit of behaviour in isolation or with controlled collaborators. They are most valuable when they check meaningful behaviour, boundaries, and error handling rather than merely mirror implementation structure. An implementation with many unit tests can still fail at an integration boundary, so the aim is not a coverage number in isolation. It is a balanced body of evidence matched to risk.
Development outputs should be traceable enough to support the next decision: a reviewed change, build information, automated check results, tests that communicate behaviour, updated interface documentation, and known limitations. A Quality Engineer may help improve the feedback system, challenge test strategy, and partner on difficult scenarios. They do not need to become the sole owner of every check.
Quality During Testing
Testing is the process of evaluating software and related work products to obtain information about quality and risk. It remains indispensable in MSQE. The shift is from treating testing as a late approval function to treating it as a continuous source of decision-quality evidence.
ISO/IEC/IEEE 29119-1 defines concepts that support a common vocabulary for software testing, while the broader 29119 series addresses processes, documentation, and test techniques.4 The standard is a reference, not a command to use every document or technique on every team. A mature test approach adapts its depth to context.
A test strategy answers questions such as:
- What risks need evidence, and at which level can that evidence be obtained most reliably?
- Which tests should be fast and local, and which require integrated or production-like conditions?
- What test data, environments, contracts, and monitoring are required?
- What is intentionally out of scope for this increment, and what is the risk of that decision?
- How will findings be interpreted in a release decision?
Different forms of testing reveal different information. Unit tests provide fast feedback on local behaviour. Integration tests evaluate component interactions, interfaces, data contracts, and failure handling. System tests examine an assembled system against intended behaviour. Exploratory testing uses human learning, investigation, and adaptation to find risks that scripted checks did not anticipate. Performance, accessibility, security, compatibility, resilience, and usability evaluation may each be necessary when a change affects those outcomes.
Testing must also account for non-code change. Configuration, feature flags, infrastructure definitions, database migrations, third-party dependencies, and operational procedures can all alter delivered behaviour. A test environment that differs materially from production may produce useful evidence, but it should not be represented as complete proof of production behaviour.
The Quality Engineer's expertise is especially valuable in selecting evidence, questioning gaps, designing experiments, and communicating residual risk. A passing test suite is a signal. It is not a release decision by itself.
Quality During Deployment
Deployment is the act of making a software version and its required configuration available in an environment. Release is the business or operational decision to expose that capability to users. The distinction matters: a team may deploy code before enabling it, or expose a change gradually while collecting evidence.
Quality during deployment begins before the pipeline runs. The team should know the identity of the artefact, the configuration and dependency changes it requires, any data migration strategy, the expected operational signals, and how it will respond if the change does not behave as intended. An automated pipeline can make these steps repeatable; it does not remove the need to decide which conditions warrant a pause, rollback, forward fix, or limited exposure.
Deployment verification asks whether the change is present and functioning as expected in its target environment. It can include version confirmation, smoke checks, contract checks, migration checks, synthetic transactions, access-control verification, and inspection of early telemetry. A synthetic transaction is an automated, production-safe simulation of a critical user journey. The right checks are deliberately narrow and quick enough to inform the rollout, while still addressing the change's important risks.
Progressive delivery introduces a change to a limited population, context, or traffic share before wider exposure. It provides a way to observe customer-relevant behaviour under real conditions while containing potential harm. It must be paired with clear success criteria and a safe response path. Releasing to a small group without knowing what signals matter is not a controlled experiment.
Recovery planning deserves equal attention. A rollback restores an earlier version or state; a forward fix changes the current version to correct the issue. Data migrations, external side effects, and backwards-compatible interfaces may make rollback unsafe or incomplete. Teams should identify this before deployment, not when the service is degraded.
Quality During Production Operations
Production is where a service meets its real workload, integrations, users, and operating conditions. It provides evidence that no pre-production environment can fully reproduce. Operational quality work is therefore part of development, not a separate aftercare function.
Teams need signals that connect system behaviour to customer outcomes. Technical telemetry may include latency, error rate, resource saturation, availability, logs, traces, queue depth, and dependency behaviour. Product and support signals may include failed journeys, abandoned transactions, customer contacts, or unusual business events. The appropriate set depends on the service and the risk.
Service level objectives, or SLOs, are target levels of reliability for a defined service indicator—a measure of user-relevant service behaviour—over a stated period. An error budget is the amount of unreliability that remains consistent with that target; it makes the trade-off between reliability and change explicit. Google SRE guidance presents SLOs as a way to choose and manage the reliability level that matters to users, rather than pursuing an undefined maximum.5 An SLO is useful only when its indicator represents meaningful user experience and its owners act on the resulting information.
Incident management is another source of quality learning. An incident is an unplanned interruption or degradation of a service that requires coordinated response. During an incident, the first priority is to limit impact and restore appropriate service. Afterwards, a blameless postmortem examines contributing conditions, detection, response, communication, and follow-up actions. Google SRE guidance stresses that postmortem action items should return to the team's backlog and that the process should improve detection, mitigation, coordination, and communication.6
Production work can reveal a requirement gap, a design weakness, an insufficient test environment, an unsafe deployment practice, or a monitoring blind spot. It should not be used to normalise avoidable harm. The purpose of production learning is to improve the system of work so that similar failures are less likely, more visible, and less consequential.
Lifecycle Feedback Connections
The lifecycle is connected by feedback: evidence from one activity must inform a later or earlier decision. A build failing after a code change is a short connection; a customer complaint that causes a requirement to be refined is a longer one. Chapter 5 develops the timing and control of these feedback loops. Here, the focus is on ensuring that each lifecycle activity has a route for its evidence to change the work.
Useful feedback loops include:
- refinement feedback from examples, prototypes, and stakeholder questions;
- design feedback from architecture reviews, threat modelling, and interface experiments;
- development feedback from peer review, static analysis, and automated tests;
- release feedback from deployment verification and controlled exposure;
- operational feedback from service indicators, support contacts, incidents, and postmortems; and
- organisational feedback from recurring patterns that change standards, training, platform capabilities, or investment decisions.
The loop must have an owner and an action path. A dashboard that nobody reviews is data collection, not feedback. A recurring defect report that never changes a practice is measurement without learning. Conversely, teams should avoid responding to every signal with a new gate. The right response may be a requirement clarification, a design change, a better automated check, an operational control, or an explicit acceptance of residual risk.
Feedback quality is as important as feedback speed. Signals should be reliable enough to influence a decision, connected to a clear question, and visible to people who can act. This is why observability, documentation, and disciplined communication are foundational quality capabilities.
Defect Prevention vs Defect Detection
Defect detection discovers that a problem exists. Defect prevention reduces the likelihood that the problem is introduced or escapes into a harmful context. Both are necessary. Testing, monitoring, and review detect problems; clear requirements, resilient design, safe defaults, automated checks, and learning from past incidents help prevent their recurrence.
Chapter 1 explains why late discovery reduces a team's options rather than imposing a universal fixed-cost multiplier. The lifecycle implication is practical: a problem found in a requirement can often be clarified, while the same problem found after a public release may also involve customer communication, data repair, operational recovery, and reputational cost.
| Aim | Examples | Evidence of value |
|---|---|---|
| Prevent | unambiguous acceptance criteria, architecture review, secure defaults, interface contracts, capability design | fewer avoidable failure modes introduced; clearer decisions |
| Detect early | code review, static analysis, unit and integration tests, deployment verification | useful findings while change is still inexpensive to adjust |
| Contain and learn | progressive delivery, monitoring, incident response, postmortems | smaller impact, faster recovery, recurring risks addressed |
Prevention is not prediction of every failure. It is the disciplined reduction of known uncertainty and the design of systems that fail safely when uncertainty remains. Detection provides the evidence needed to challenge prevention assumptions. These practices reinforce each other.
Shared Ownership of Quality
Shared ownership does not mean that everyone does the same work or that no one is accountable. It means that people who influence quality accept responsibility for their contribution and collaborate across the boundaries where risks emerge. Clear roles are especially important because quality concerns frequently span product, design, engineering, security, platform, and operations.
| Role or capability | Typical contribution to quality |
|---|---|
| Product leadership | clarifies intended outcomes, prioritises risk, makes trade-offs visible, and accepts residual business risk |
| Design and research | evaluates user needs, accessibility, comprehensibility, and error recovery |
| Software engineering | designs, implements, reviews, tests, and maintains behaviour and technical constraints |
| Quality Engineering | improves quality strategy, risk analysis, evidence, feedback loops, and cross-functional learning |
| Platform, operations, and SRE | enables reliable delivery, observability, recovery, capacity, and operational response |
| Security and privacy specialists | identify threats, control requirements, and assurance needs appropriate to the context |
| Support and customer-facing teams | provide evidence about real use, recurring failures, and the clarity of recovery paths |
The Quality Engineer is often a catalyst within this system. They may lead risk-based test strategy, facilitate example discovery, review quality evidence, build test capabilities, analyse incidents, or mentor teams in quality practices. Their value grows when they help other roles make better decisions, rather than becoming a bottleneck through which every quality judgement must pass.
Independent assessment can still be appropriate. Regulated, safety-critical, contractual, or high-risk contexts may require separation between implementation and verification. Shared ownership does not remove that need; it ensures that independent evidence is supported by quality work throughout the lifecycle rather than postponed until final approval.
Engineering Perspective
Consider a change that allows a customer to update the bank account used for a recurring payment. The change is small in a backlog view but high consequence in a customer and security view. An MSQE approach follows the quality risk through the lifecycle.
At requirements time, the team identifies who can make the change, what authentication is required, when the new account becomes active, what should happen to a payment already in progress, what audit record is required, and how the customer can recognise an unauthorised change. The output is not merely a user story; it is an agreed set of behavioural and quality constraints.
At design time, the team examines data protection, authorisation boundaries, integration with the payment provider, idempotency of the update request, failure modes, audit events, and the evidence support staff will need. The design may decide that a sensitive change requires step-up authentication and that payment execution reads from a versioned account record to avoid an ambiguous mid-process update.
During development, reviewers examine whether the implementation respects those decisions. Automated checks verify local validation, authorisation rules, and audit-event creation. Integration tests exercise the provider contract and repeated requests. Exploratory testing investigates confusing customer journeys and recovery from an interrupted session.
During deployment, the team verifies schema compatibility, configuration, access controls, and the audit-event path. It enables the change gradually, watching for failed updates, unusual authorisation failures, support contacts, and payment errors. In operations, the team reviews whether customers complete the change successfully and whether any incident or support pattern reveals a gap in the requirement, interface, design, or monitoring.
No single phase proves the change is high quality. Together, the phases create a chain of evidence and a route for learning. That is the engineering perspective: quality is a property of the end-to-end system of decisions, not an attribute assigned by the final test activity.
Industry Perspective
Industry standards and research offer complementary reference points, but they should be used carefully. ISO/IEC/IEEE 12207:2026 provides a lifecycle-process framework that encompasses conception, development, operations, support, and retirement. It is intentionally compatible with a range of formal, agile, and iterative approaches; it does not prescribe a delivery methodology or the engineering judgement needed for a specific quality decision.1
ISO/IEC 25010:2023 provides a product-quality model that teams can use to discuss quality characteristics and trade-offs. ISO/IEC/IEEE 29119 provides software-testing concepts and related guidance. Neither standard claims that testing alone creates quality. They provide common language and structure that organisations can tailor to their context.
DORA research contributes operationally focused measures for examining delivery performance. Google SRE guidance contributes practices for service-level objectives, incident response, and postmortem learning. These sources are not an instruction to replicate another organisation's platform or operating model. They are useful because they connect software delivery to reliability, recovery, and learning under real conditions.
MSQE draws a practical conclusion from these sources: establish lifecycle coverage, make risks and evidence visible, and use feedback to improve decisions. This is an original MSQE synthesis, not a formal definition from ISO, IEEE, DORA, or Google.
Common Anti-Patterns
Throwing Work Over the Wall
This anti-pattern treats requirements, development, testing, deployment, and operations as separate destinations. Each group receives an artefact and is expected to discover its own problems without meaningful access to earlier decisions. The result is rework, adversarial hand-offs, and loss of context.
Replace hand-off-only working with deliberate collaboration at risk boundaries. Keep decision records, invite relevant expertise early, and make outcomes and assumptions visible to the people who must act on them.
Testing Late
Late testing is often caused by work that is too large, unstable environments, untestable design, or an implicit belief that development is complete before validation begins. It makes important findings harder to address and turns testing into a schedule buffer.
Move suitable testing and evaluation earlier, reduce increment size, design stable interfaces, and keep integration evidence current. Retain specialist and end-to-end testing where it is necessary, but do not use it as the first meaningful examination of a change.
Gates Without Feedback
A quality gate can be appropriate when it represents a meaningful risk control. It becomes harmful when it produces a pass or fail result without diagnosis, ownership, or a route to improve. Teams then optimise for passing the gate rather than understanding the system.
Design gates as evidence points. State the risk they address, keep results actionable, review false positives and blind spots, and connect recurrent findings to engineering improvement.
Testing Only
Testing-only thinking asks the Quality Engineer to compensate for unclear requirements, fragile architecture, unsafe deployment, and missing operational signals by finding every issue before release. This is neither realistic nor fair. It also wastes valuable expertise that could prevent the same risks earlier.
Preserve testing as a core discipline while extending quality work into requirements, design, development, deployment, and operations. The aim is not fewer tests; it is better distributed evidence and prevention.
Summary
Quality is created and demonstrated throughout the software development lifecycle. Traditional lifecycle controls can provide useful structure, but phase separation becomes harmful when it delays the feedback that would improve a requirement, design, implementation, or operational decision.
Agile and DevOps increase the opportunity for collaboration and learning. They do not remove the need for risk analysis, testing, or accountable release decisions. Continuous quality means that evidence is produced and used continuously across the lifecycle.
The Quality Engineer contributes by making quality risks, assumptions, evidence, and feedback loops visible. Their work includes testing, but it is broader: helping teams build quality into the way software is specified, designed, developed, deployed, operated, and improved.
Key Takeaways
- The SDLC is a connected system of decisions and feedback, not only a sequence of hand-offs.
- Every lifecycle activity should have clear quality inputs and useful outputs.
- Requirements and design determine much of what can be validated, operated, and recovered later.
- Testing remains essential, but a passing test suite is one input to a release decision rather than proof of quality.
- Deployment and production provide evidence about real conditions that pre-production environments cannot fully reproduce.
- Defect prevention, early detection, containment, and learning reinforce one another.
- Shared ownership requires clear contributions and accountability, not identical roles.
- A Quality Engineer improves the system that creates evidence and learning across the lifecycle.
Review Questions
- Why is a software lifecycle better understood as a feedback system than as a one-way sequence of phases?
- What useful practices from plan-driven quality approaches may still be appropriate in a modern delivery model?
- How does agile quality change the timing and purpose of test-related work?
- What is the difference between continuous delivery and continuous quality?
- Give two examples of quality inputs and outputs for each of requirements, design, and deployment.
- Why should observability and testability be considered during design rather than only during testing?
- How do defect prevention and defect detection complement one another?
- What does shared ownership of quality require in practice?
- Why is a quality gate without actionable feedback a weak control?
- How should production incidents influence earlier lifecycle activities?
Interview Questions
- How would you introduce quality engineering into a team where testing begins after development is complete?
- Describe how you would improve the quality of a vague requirement before implementation starts.
- What evidence would you expect before deploying a high-risk change?
- How do you decide which checks belong in unit, integration, system, and production validation?
- Explain how a Quality Engineer can contribute to an architecture review.
- What would you do if a team has many automated tests but frequent production incidents?
- How do you distinguish a useful quality gate from performative process?
- How would you use an incident postmortem to improve software delivery without creating blame?
- What does shared ownership of quality mean when an independent test function is required?
- How would you explain the value of observability to a product team?
Practical Exercise
Choose a recent or hypothetical change with meaningful customer impact, such as changing authentication, introducing a payment option, or altering a data-retention rule. Create a lifecycle quality map using the following structure.
| Lifecycle activity | Risk or question | Evidence or control | Owner or collaborator | Feedback destination |
|---|---|---|---|---|
| Requirements | ||||
| Architecture and design | ||||
| Development | ||||
| Testing and integration | ||||
| Deployment | ||||
| Production operations |
Then answer the following:
- Which risk would become most expensive or harmful if discovered only after release?
- Which item in your map prevents that risk, and which item detects it if prevention fails?
- What production signal would tell you whether the intended customer outcome is occurring?
- What information from production should change the next requirement, design, or test decision?
Use the Continuous Quality Planning Worksheet for a reusable lifecycle quality map and facilitation guide. It distinguishes where quality work happens from when evidence is acquired and fed back into later decisions.
Practical Resources
- Build from: Chapter 3: Understanding Software Quality to identify the quality claims that need lifecycle evidence.
- Use the Continuous Quality Planning worksheet to plan discovery, delivery, release, and operational evidence.
- Continue: Chapter 5: Shift Left, Shift Right, Shift Everywhere deepens the feedback-loop view; Case Study 2 applies it to an incident.
Further Reading
- ISO/IEC/IEEE 12207:2026, Systems and software engineering — Software life cycle processes.1
- ISO/IEC 25010:2023, Systems and software engineering — Product quality model.3
- ISO/IEC/IEEE 29119-1:2022, Software and systems engineering — Software testing — Part 1: General concepts.4
- DORA, DORA metrics, for current delivery-performance metric definitions.
- Google SRE Book, Service Level Objectives, for a practical introduction to reliability targets.
- Google SRE Workbook, Postmortem Culture, for learning from incidents without blame.
- IEEE Computer Society, Software Engineering Body of Knowledge topics, for a broad professional reference.
References
Chapter Checklist
Before moving on, confirm that you can:
- Explain why quality work is needed throughout the software development lifecycle.
- Describe quality inputs and outputs for requirements, design, development, testing, deployment, and operations.
- Distinguish defect prevention, defect detection, containment, and learning.
- Explain the role of deployment verification and production evidence in a release decision.
- Identify feedback loops that should connect operational learning to earlier lifecycle decisions.
- Describe how shared ownership preserves clear accountability.
- Explain how a Quality Engineer contributes beyond test execution.
Footnotes
-
International Organization for Standardization, International Electrotechnical Commission, and IEEE. ISO/IEC/IEEE 12207:2026 — Systems and software engineering — Software life cycle processes. Published April 2026. Accessed 2026-08-08. ↩ ↩2 ↩3
-
Google Cloud. DORA metrics. Accessed 2026-08-08. ↩
-
International Organization for Standardization and International Electrotechnical Commission. ISO/IEC 25010:2023 — Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality model. Published 2023. Accessed 2026-08-08. ↩ ↩2
-
International Organization for Standardization, International Electrotechnical Commission, and IEEE. ISO/IEC/IEEE 29119-1:2022 — Software and systems engineering — Software testing — Part 1: General concepts. Published 2022. Accessed 2026-08-08. ↩ ↩2
-
Google. Service Level Objectives. In Site Reliability Engineering. Accessed 2026-08-08. ↩
-
Google. Incident Management Guide. Accessed 2026-08-08. ↩