Software Development
What is a software delivery process: a practical guide
TL;DR: A software delivery process is the whole path from idea to measured business outcome. Deployment is one step inside it. Get the process clear before you automate it, then measure lead time and change failure rate to prove it works.
A software delivery process is the whole path a product takes. Idea, build, test, release, then measuring what it did for the business. It is bigger than deployment. Deployment is one step inside delivery. Delivery is the entire system around it.
Here are the core phases:
- Discovery: define the problem, check the idea is real, set what success looks like
- Plan: scope it, rank it, write the acceptance tests
- Build and integrate: write code, run CI, merge often
- Test and validate: automated tests, exploratory testing, security scans
- Release readiness: staging, sign-off, runbooks, a rollback plan
- Deploy: push to production, control it with feature flags or staged rollouts
- Operate and observe: monitor, alert, measure
- Iterate or retire: act on the data, improve it, or turn it off
Why does this matter? Teams that treat delivery as a business function, not just a pipeline, can tie engineering output straight to numbers the board cares about.
What does each phase involve?
The delivery lifecycle gives a team one shared language for the order of work. The table maps each phase to what goes in, what comes out, and who leads it.
| Phase | Inputs | Outputs | Lead owners |
| Discovery | Business problem, user research, market data | Problem statement, success criteria, feasibility note | Product Owner, CTO |
| Planning | Success criteria, backlog, capacity | Sprint plan, acceptance tests, risk register | Product Owner, Dev Lead |
| Build and integrate | Approved stories, design specs | Merged code, CI artefacts, unit tests | Developers, DevOps |
| Test and validate | CI artefacts, acceptance tests | Test reports, defect log, scan results | QA, Security |
| Release readiness | Tested build, runbook, rollback plan | Release candidate, signed checklist | DevOps, QA, Product Owner |
| Deploy | Release candidate, feature flags | Live feature, deploy log, release notes | DevOps, SRE |
| Operate and observe | Live system, dashboards | Incident log, delivery metrics, performance data | SRE, Dev Lead |
| Iterate or retire | Metrics, user feedback, business KPIs | Backlog updates, deprecation plan | Product Owner, CTO |
Every phase makes something real. Discovery produces a problem statement and success criteria you can measure, not just a brief. Planning produces acceptance tests written before anyone codes. That one habit cuts more late rework than any tool will.
Role clarity matters at each handoff. The Product Owner owns the what and the why. DevOps owns the pipeline and the deploy mechanics. QA and security join at planning, not at the end. An SRE takes over once the thing is live. The international standard for software lifecycle processes, ISO/IEC/IEEE 12207, sets out these phases and says to tailor them to your context rather than apply them rigidly.
Which delivery model fits your team?
Three models dominate. Waterfall, Agile, and DevOps with continuous delivery. Each gives you a different release rhythm and a different risk profile.
Waterfall runs the phases in a line. Requirements, design, build, test, deploy. Each finishes before the next starts. It suits fixed, well-understood requirements and heavy documentation needs, like some government contracts. The catch is that feedback arrives late, so changing course costs a lot.
Agile breaks work into short sprints, usually one to two weeks. You ship working software often and adjust on real feedback. It suits product teams where the requirements move and speed matters. The catch is it needs disciplined backlog work and stakeholders who show up. Without both, sprints turn into tiny waterfalls.
DevOps and continuous delivery automate the path from commit to production. Continuous integration is the base habit here: everyone merges to main often, and every merge gets built and tested. It suits mature teams with real automation and shared ownership. The catch is upfront cost in pipeline work and a culture shift.
| Decision criterion | Waterfall | Agile | DevOps and CD |
| Risk tolerance | Low, fixed scope | Medium | High, fast feedback absorbs risk |
| Release cadence | Months | Weeks | Days to hours |
| Compliance needs | High, audit trails and sign-off | Medium | Medium to high, automated gates |
| Team size | Any | Small to medium | Medium to large |
| Requirement stability | High | Low to medium | Low |
| Team maturity | Low to medium | Medium | High |
Most teams end up hybrid. A regulated Australian fintech might run Agile sprints but still need a formal release gate with documented sign-off. That is not a broken method. That is sensible.
Core principles that make delivery reliable
These are the practices that cut real risk and shorten feedback loops.
- CI/CD automation: every commit triggers a build, a test run, and sometimes a deploy. It kills the "works on my machine" problem and keeps a deployable artefact ready at all times.
- Small batches: ship often, in small pieces. Small batches mean a small blast radius when something breaks.
- Shift left on testing and security: run tests and scans early, not just before release. A defect caught in development costs a fraction of one caught in production.
- Infrastructure as code: define your infrastructure in version-controlled code with Terraform or Pulumi. Environments become repeatable and stop drifting apart.
- Observability: instrument the system with structured logs, tracing, and metrics. Good alerting tells you about a problem before a customer does.
- Feature flags: split deploy from release. Push code to production but control who sees it. That gives you canary releases and instant rollback with no redeploy.
- Release orchestration: sequence multi-service deploys with health checks and automatic rollback triggers.
Here is the important bit. Fix your process before you automate it. If your manual release is broken, a pipeline just runs the broken thing faster.
A realistic start: put CI on your busiest repo, write automated tests for new code only, add a feature flag to one upcoming feature, and set up uptime monitoring on one service. That is a 90-day plan, not a multi-year program.
Which tools should Australian teams consider?
What you pick depends on pipeline maturity, data residency rules, and whether you can run your own infrastructure.
Source control: Git is the standard. GitHub, GitLab, and Bitbucket all offer Australian hosting or data residency options, which matters for teams handling personal data under the Privacy Act.
CI/CD servers: GitHub Actions, GitLab CI, CircleCI, and Jenkins. The first two are managed. Jenkins is self-hosted and suits hard data sovereignty rules.
Containers: Docker to package, Kubernetes to orchestrate at scale, via AWS EKS, Azure AKS, or Google GKE. All three have Australian regions.
Infrastructure as code: Terraform and Pulumi if you want to stay cloud-agnostic. CloudFormation and Azure Bicep if you do not.
Feature flags: LaunchDarkly and Unleash are the common picks.
Testing: Jest and Vitest for unit tests, Playwright and Cypress for browser tests, k6 for load.
Observability: Datadog, New Relic, or Grafana with Prometheus. CloudWatch and Azure Monitor if you are already on those clouds.
Security scanning: Snyk for dependencies and code, OWASP ZAP for dynamic testing.
One Australian note. AWS Sydney, Azure Australia East, and Google Cloud Sydney all give you in-region compute and storage. If your workload falls under the Australian Privacy Principles or government security rules, check that your pipeline and monitoring tools keep logs and artefacts onshore too. People check the app and forget the tooling.
How do you measure delivery performance?
Four metrics are the industry standard, and they come from the DORA research program. They hold up because they correlate with both engineering and business outcomes.
| Metric | What it measures | High | Medium | Low |
| Deployment frequency | How often you ship to production | Multiple times a day | Weekly to monthly | Monthly or less |
| Lead time for changes | Commit to production | Under an hour | A day to a week | A week to a month |
| Time to restore | How fast you recover from an incident | Under an hour | Under a day | A day to a week |
| Change failure rate | Deploys that cause an incident | 0 to 15% | 16 to 30% | 46 to 60% |
Past those four, cycle time and throughput help, plus customer-side numbers like feature adoption. Google Cloud has a good guide to putting the four keys in place if you want the mechanics.
Tooling makes this practical. Datadog, LinearB, and Jellyfish can work out lead time and deploy frequency straight from your Git and CI data, so nobody tracks it by hand. The same thinking applies to how you measure the product itself, and AI-Led has a solid piece on picking growth metrics that do not flatter you.
Common delivery mistakes and how to avoid them
Most delivery failures are predictable. The same handful show up everywhere.
- Treating deployment as delivery: shipping code is not delivering value. A feature nobody uses is not a win. Set success criteria before the build starts.
- Big-bang releases: months of changes in one release multiplies risk, and one defect blocks everything. Canary and blue-green deploys shrink the blast radius.
- Weak test automation: manual-only testing becomes a bottleneck before every release.
- No observability: teams without dashboards hear about production problems from support tickets. Instrument it before you need it.
- Fuzzy success criteria: stories without acceptance tests produce features that work and still miss the point.
- Ignoring maintenance: upkeep is a delivery phase, not an afterthought. Budget for it or watch technical debt slow every release after this one.
Red flags worth acting on: deploy frequency falling month on month, recovery time over a week, change failure rate above 30%, or developers spending more time on manual release chores than on features.
Delivery vs deployment: what is the real difference?
Deployment moves a build artefact from one environment to another. Delivery is the whole process that gets value to users and proves it worked. Atlassian has a clear breakdown of how integration, delivery, and deployment differ.
The difference is practical. You can deploy to production many times before users see anything. Feature flags make that normal. Code ships, the flag stays off, and the business decides when to turn it on. Technical risk and business timing stop being the same decision.
An example. A payments team deploys a new checkout to production on Tuesday, flag off. QA validates it in production on Wednesday. The product manager lines up messaging on Thursday. The flag goes on Friday morning. Four deploys happened. One release happened.
Ownership follows that split. DevOps and SRE own deploy mechanics and rollback. Product owns the release call. Blur the two and you get accountability gaps, usually right when a release causes a business problem that had nothing to do with the deploy.
How to start improving today
This order matters. Each step sets up the next.
- Find your baseline. Map the current process end to end. Measure your metrics roughly. You cannot improve what you never measured.
- Put CI on one repo. Pick the one that ships most or breaks most. Add automated builds and unit tests.
- Automate tests for new code only. Do not try to backfill everything. Coverage grows on its own.
- Add a feature flag to one feature. Now your next deploy and your next release are separate things.
- Set up basic observability on one service. Uptime, error alerts, one dashboard. It does not need to be complete.
- Run a retro on the first improved release. Compare lead time and failure rate to your baseline. Show someone.
- Scale what worked. Extend CI/CD, flags, and monitoring to more services. Add infrastructure as code where you change things most.
- Add governance gates. For regulated work, put compliance checks in the pipeline, confirm data residency, and document change management for audits.
A 90-day version:
- Weeks 1 to 2: measure the baseline, CI on one repo
- Weeks 3 to 4: automated tests for new code
- Weeks 5 to 6: one feature flag, basic monitoring
- Weeks 7 to 8: first retro, share the numbers with leadership
- Weeks 9 to 12: extend to two more services, document change management
For technology leaders working out where to spend first, CI and observability pay back fastest. If your team is small and stretched, The Orchestrators has a good guide to delivery that runs without constant supervision.
How Devwiz runs software delivery
Devwiz has shipped 200+ apps, including work for the NSW Government, Briometrix, Vivid, and Huskee. The shape of an engagement is consistent: discovery before development, CI from the start, and monitoring live before users are.
A typical engagement runs like this:
- Discovery: problem definition, success criteria, technical feasibility, data handling rules confirmed
- Planning: backlog ranked, acceptance tests written, pipeline scaffolded
- Build: AI-assisted coding, frequent merges to main, automated tests on every commit
- Test and release readiness: automated suite, security scanning, staging validation
- Deploy: feature-flagged rollout, dashboards live before the feature is
- Operate and iterate: production data feeds the next planning round
The CARED platform shows what that looks like on a regulated build. It is a national NDIS allied health platform on the Microsoft cloud: four mobile apps, three web platforms, and integrations into the healthcare and government systems it has to talk to, with NDIS-compliant reporting built in rather than bolted on.
The white-label AI SaaS build is the other end of the range. A founder proved the offer with a fast, frontend-heavy app. We rebuilt the spine as a multi-tenant white-label platform on Supabase, OpenRouter, and Clerk, with row-level security keeping every tenant properly isolated. Speed stayed. The guts changed.
For a closer look at how we run a build end to end, see the AI build process, step by step, and what a proper handover should include.
Key takeaways
| Point | Details |
| Delivery is broader than deployment | Deployment is one step. Delivery spans strategy, build, test, release, and measurement. |
| Four metrics are the standard | Deploy frequency, lead time, time to restore, and change failure rate give you a benchmark. |
| Small batches cut risk | Canary and blue-green deploys with feature flags shrink blast radius and make rollback instant. |
| Start with CI and observability | CI on one repo and monitoring on one service is the 90-day move that pays back fastest. |
| Fix the process before the tooling | A pipeline built on a broken process just runs it faster. |
Why most teams get this wrong first
The usual advice is to start with tooling. Pick a CI platform, containerise everything, and the rest follows. That is backwards. The teams that improve fastest start with process clarity.
The common failure looks like this. A team adopts a pipeline before agreeing what "done" means. Builds pass. Deploys succeed. Features ship. And the numbers that matter, adoption and support volume and revenue, do not move. They automated the pipeline and never fixed the delivery.
The second problem is maintenance, and it gets almost no airtime. Most delivery talk stops at first release. Very few teams budget for the patching and small improvements that keep a live system healthy. That gap compounds. A system with no monitoring and no maintenance budget eventually eats more engineering time in firefighting than in building.
One rule to take away. Before you buy any new delivery tool, write down your current lead time and change failure rate. If you cannot measure them, that is the first thing to fix. Measurement is what makes every improvement after it visible, and defensible when someone asks what changed.
Devwiz builds software that ships and keeps shipping
If you are a founder, CTO, or business owner who needs a platform built to production standards instead of a proof of concept, that is the work we do. Discovery, a real pipeline, AI-assisted development, and monitoring in place from day one.
We have shipped custom AI platforms and production apps for Australian government agencies and growth-stage companies. CARED and the white-label AI SaaS build are two examples of what that looks like in practice.
Want software built properly, with a delivery process that connects engineering work to business outcomes? Talk to the Devwiz team about your next build.
Frequently asked questions
What does software delivery mean?
Software delivery is the whole process of taking a product from idea through build, testing and release to users, then measuring what it did for the business. It is broader than deployment, which is just the technical act of moving code to a server.
What are the phases of software delivery?
Discovery, planning, build and integrate, test and validate, release readiness, deploy, operate and observe, then iterate or retire. Each phase produces something real and has a clear owner.
What is the difference between software delivery and deployment?
Deployment moves a build artefact into an environment. Delivery is the full process that gets a feature to users and proves it worked. A team can deploy to production many times before users see anything, using feature flags to control who sees the feature.
What is an example of a software delivery process?
A payments team writes acceptance tests before building, builds and tests the feature in CI, deploys it to production behind a feature flag, validates it in production, then turns the flag on. That whole sequence is the delivery process.
How do you measure software delivery performance?
Four metrics are the standard: deployment frequency, lead time for changes, time to restore service, and change failure rate. High performers deploy several times a day with lead times under an hour. Measure your baseline first, then improve against it.
About James Killick
10+ years building digital products · 200+ apps shipped since 2015
James is a co-founder of Devwiz and an AI product specialist. Since 2015 he has helped ship 200+ apps for founders, businesses and government, including work for NSW Government, Briometrix and Huskee. He builds AI-first platforms and writes about turning a proven program into software. He also hosts the Up in the AI podcast.
More articles by James · James's personal site · LinkedIn · AI Orchestrators
Tags: Software Delivery, Delivery Process, DevOps


