ADLC · Series part 3

The anatomy of the cost, and the two ways understanding gets lost.

No matter how you build software, waterfall, Scrum, SAFe, or the agent pipelines teams are now stitching together, the same phases keep showing up. Two things decide whether a change lands correctly. Whether the requirements were right to begin with, and whether that understanding makes it intact through every handoff. Get either one wrong and design, code, tests and review will cheerfully produce the wrong thing. AI just does it faster. Part 3 of the ADLC series.

Every system gets built in the same order

Peel the labels off any methodology and the sequence underneath is always the same. Someone writes down what should be true, the requirements. Someone figures out what that means for the system, analysis and design. Then come build, test, review, release.

Waterfall does the whole pass once. Agile breaks it into short loops. Refinement, planning, the definition of ready. These are just requirements work wearing different names. The evidence still leans toward the loops. In a study of 1,002 projects, more agile planning tracked with higher success rates and schedules that held up better.

Treat the numbers carefully, though. No one runs the same project twice, so no study cleanly compares the cost of one method against another. The well-known claim that agile succeeds three times as often comes from the Standish reports, and IEEE Software dismantled their definitions back in 2010. What still stands is simpler and more useful. The work has to happen somewhere, and doing it late costs more than doing it early.

No method skips the order. And that order carries a consequence that shapes everything downstream. Each phase feeds on the output of the one before it. Requirements sit at the top with nothing above them to catch a mistake.

requirementsanalysisbuildreviewtestrework WATERFALL requirements and analysis first AGILE the same work, split across sprints STRAIGHT TO CODE no requirements, no analysis so they come back as more review, testing and rework THE WORK DOES NOT GO AWAY requirementsanalysisbuildreviewtestreworkWATERFALL · requirements firstAGILE · same work, every sprintSTRAIGHT TO CODEno requirements, no analysis,so it all comes back biggerTHE WORK DOES NOT GO AWAY
The same phases and numbers as the chart above, arranged three ways. Waterfall does the analysis first, agile repeats the whole cycle every sprint, and both come to the same total. Read the proportions as illustration, not measurement. The anchor is the bottom row, where rework alone is about half the change, which is where the 40 to 50 percent avoidable rework finding lands.

Errors flow downhill and grow

Write a wrong requirement and watch the rest of the chain. Design implements it faithfully. Code implements the design correctly. Tests confirm the wrong behavior with green checks. Review signs off because everything matches what was written.

Every phase did its job. The system is still wrong, and nobody notices until the users do.

That is why the oldest numbers in software engineering focus on the start. Boehm and Basili measured it. A defect fixed after delivery can cost up to 100 times one caught at requirements time (later studies show a smaller gap for small, simple changes, and enterprise changes are rarely either). Avoidable rework swallows 40 to 50 percent of effort, and most of that rework is simply correct execution of an incorrect start.

The AI era produced its own version of the same finding. A 2026 benchmark of 1,304 coding tasks tested what models do when a requirement is ambiguous. Every model got worse, the most advanced ones got worse the most. They produced different implementations of the same unclear requirement and could not spot or resolve the ambiguity on their own. The model does not raise its hand. It picks a reading and builds it.

Cutting analysis is not a saving. The hours you skip at the start come back in review, testing and rework, and they come back larger. This is also where the old iron-triangle squeeze lands. When scope, deadline and budget are all fixed, the first thing to go is the analysis, because it is the only work nobody can see being skipped. The cut does not cancel the work. It simply moves it downstream, where it costs more.

In a landmark field study, developers spent 58 percent of their time understanding rather than writing. The real money in software was never in the typing.

That measurement came before agents, and the share has not dropped. It has only moved. The reading is now mostly of code a model wrote. That is the shift the next section measures.

requirementsanalysisbuildreviewtestrework ONE CHANGE 16 14 12 16 12 30 100 points typing: 12 failures of understanding: 46 of 100 requirements16analysis14build12review16test12rework30build, the typing · 12 of 100review + rework · 46 of 100
One change, in points, following the model from part 2. Typing is the sliver in the middle. The two largest items, review and rework, are both the cost of understanding, paid late.

And the gaps between the phases

A wrong start is only half the story. The other half is what happens to a right one while it travels.

A requirement is written by someone who understood the business need. An analyst turns it into a specification. An architect turns that into a design. A developer reads a ticket. A tester reads acceptance criteria. Every step is a re-telling, and every re-telling keeps the instruction while dropping the reasoning.

What falls into the gaps is always the same. Why the rule exists, what must not change, which edge cases were already argued and settled. None of it is in the ticket, so the constraints that were obvious to the person who asked become invisible to the person building it.

This has been measured too. A Lund University case study of large-scale development traced communication gaps between requirements and the later phases to unmet expectations, quality problems and wasted effort. The same group’s work on distances in requirements communication found that the further apart the roles sit, the more effort a shared understanding takes.

Agents do not close these gaps. They inherit them. A brief is just one more re-telling, and an agent begins each task with no memory of the last one, so the gap between phases becomes a gap between prompts.

EACH HANDOFF IS A RE-TELLING REQUIREMENTSDESIGNBUILDTEST why the rule exists what must not change the cases already settled the what survives, the why does not EACH HANDOFF RE-TELLS IT REQUIREMENTSDESIGNBUILDTEST why it exists what must not change cases settled the what survives, the why does not
What falls into the gaps. Each phase hands its output to the next, and each handoff keeps the instruction while dropping the reasoning behind it. By the time a change reaches code, the constraints that were obvious to the person who asked are invisible to the person building it.

AI made every phase faster, except the one that matters

Agents now draft the design, write the code, generate the tests, even summarize the review. Every downstream phase got faster. The first one did not get more accurate.

An agent gives you exactly what you asked for. If the requirement is wrong, or written against a stale picture of the system, the agent builds the wrong thing with perfect confidence, and at speed.

The record shows what that produces. METR’s randomized trial found experienced developers 19 percent slower with AI on mature codebases, even while feeling faster. Faros AI’s telemetry from 22,000 developers shows tasks completed up 33.7 percent, review time up 441.5 percent, and incidents per pull request up 242.7 percent. When Stanford’s productivity group analyzed commits from more than 100,000 engineers, the net gain settled near 15 to 20 percent. AI helps most where little context is needed, and least where deep understanding is required.

A 2026 review of the evidence put it bluntly. What limits AI-assisted delivery is how well the system is specified, not how smart the model is. Garbage in, garbage out has survived every model generation. It just got faster.

requirementsanalysisbuildreviewtestrework YESTERDAY before AI 16% 14% 12% 16% 12% 30% 100% cost of one change TODAY with AI 16% 8% 4% 20%↑ 8% 35%↑ 91% of yesterday’s cost ↓ analysis and development got cheaper ↑ review and rework grew requirementsanalysisbuildreviewtestreworkYESTERDAY · before AI16%14%12%16%12%30%100% cost of one changeTODAY · with AI16%20%35%91% of yesterday’s cost↓ analysis and build got cheaper↑ review and rework grew
What assistants moved. The parts that were already small got cheaper, review and rework grew. The 91 percent total is our model from part 2. The direction matches the published research.

Why the start keeps being wrong

To write a correct requirement for a change, you need a correct picture of the system as it is today. That picture is the problem.

A change request lands on a system older than the team that runs it. An agent sweeps the code and returns a confident summary in minutes. The wiki was refreshed by AI last month and still describes a rule deleted in the spring. The copilot’s answer is almost right. So somebody books the one architect who still remembers why the discount logic checks the calendar before the price, because that architect is the only source anyone will put their name under.

In 1985 Peter Naur argued that a program is a theory. It is the understanding, held by people, of how the code and the business fit together. The code alone cannot carry it. Teams write that understanding down, file it, and believe it is kept. But the system keeps changing underneath the pages, and nothing checks them against the code. Keeping an unchecked copy feels like keeping the knowledge. It is not.

Every phase can only be as right as the requirements. And the requirements can only be as right as the picture of the system they were written against.

You can see the cost in current data. Atlassian’s 2025 developer experience report found two-thirds of developers saving ten or more hours a week with AI, half losing ten or more to organizational friction, and finding information at the top of the friction list, ahead of technical debt for the first time. The hours AI hands back are spent rebuilding the picture, change after change.

understand build TODAY per change CHANGE 1CHANGE 2CHANGE 3CHANGE 4 goes stale ×goes stale ×goes stale ×goes stale × WITH A MODEL understanding carried forward, kept verified understandbuildTODAY · every change pays againgoes stale ×goes stale ×goes stale ×goes stale ×WITH A MODEL · bought onceunderstanding carried forward
The same understanding, bought four times. Today every change pays the full price and keeps a copy nobody can trust, so the next change pays again. Keep a verified model of the system and the first change pays for the understanding once, while every later change reuses it.

Start right, and everything downstream inherits it

There is a way to make the first phase trustworthy. Keep the picture of the system as a living model. Every rule, screen and interface is written down as a statement, every statement is linked to the code that implements it, and every link is checked automatically.

Requirements for the next change then start from a verified picture instead of stale pages and one architect’s memory. Design consumes correct requirements. Code consumes correct design. Tests check the intended behavior. Review compares what was approved against what was delivered. The whole chain inherits the correction from the top.

An afternoon with your tracker

None of this requires believing our percentages. Pull the last twenty closed change requests and trace every hour of rework to its origin. Was it a requirement that was wrong, a picture of the system that was stale, or a genuine change of mind?

If most of it traces to the first two, your delivery does not have a coding problem. It has a starting problem, and no amount of AI downstream will fix it.

What this looks like with POLYREQ

This is the problem we built POLYREQ for. It holds the picture of your system as a specification graph. Every requirement, rule, screen and interface is a statement, every statement is linked to the code that implements it, and every link is re-checked as the code moves, so drift shows up as a signal instead of a surprise.

That changes the first phase. A new change request is written against the current state of the system rather than a document someone hopes is still true. The impact map is a query, so the affected rules, screens, integrations and owners appear in minutes, and the change can be priced before anyone commits to a date.

It also closes the gaps between the phases. Nobody re-tells the change down a chain, because business, analysts, engineers and agents all read the same graph. The reasoning travels with the statement, so what must not change is attached to the thing being changed rather than remembered by whoever wrote the ticket.

Agents then get briefs instead of guesses. What to change, what must not change, what evidence to bring back. When the work lands, approved and delivered are compared against the same graph, so the record stays current because it was never separate from the work.

The phases themselves do not change. Requirements, analysis, build, review, test. What changes is that the first one starts from something checked, and everything after it inherits that.

requirementsanalysisbuildreviewtestrework YESTERDAY before AI 16%14%12%16%12%30% 100% cost of one change TODAY with AI 16%8%4%20%↑8%35%↑ 91% of yesterday’s cost TOMORROW POLYREQ 7%4%3%5%4%7% no longer re-bought on every change 30% of yesterday’s cost requirementsanalysisbuildreviewtestrework YESTERDAY · before AI 16%14%12%16%12%30% 100% cost of one change TODAY · with AI 16%20%↑35%↑ 91% of yesterday POLYREQ 30% of yesterday the rest is no longer re-bought
The same change, three ways. The first two rows are where delivery is today. The third is the model from part 2, where the understanding is kept and verified instead of re-bought, so the phases that pay for it shrink.

That 30 percent is a model, not a measurement. The rework cut carries most of it, so if you halve that cut the number lands near 40. Either way, fixing the start and closing the gaps is worth more than accelerating everything after them.

Key takeaways

  • Every methodology runs the same phases, and requirements come first. Every later phase can only be as right as they are.
  • Saving on analysis is not a saving. A mistake costs up to 100 times more after delivery, and avoidable rework, 40 to 50 percent of effort, is mostly the analysis you skipped coming back.
  • Understanding also leaks between the phases. Every handoff keeps the instruction and drops the reasoning behind it.
  • AI speeds up the phases after requirements. It cannot repair the first one, it inherits the gaps, and it amplifies whatever it is given.
  • Requirements keep starting wrong because they are written against a picture of the system nobody can trust. It is saved, even AI-refreshed, but never checked against the code.
  • Keep that picture verified and every phase downstream inherits the correction. Trace your own rework to its origin and see where it points.

Start every change from the truth.

POLYREQ keeps a verified picture of your system, linked to the code and checked on every change, so requirements start correct and everything downstream inherits it.

Load your system into POLYREQ →
← All posts