N ever is planning a bigger headache than it is when we design software to control large computer electronic systems. It's very hard to design a system along with its software. They depend on each other. They must grow together. Yet they're created by quite different people.
Trouble starts when the government writes contracts with software designers.
We spell out just how the software will look, years in the future. That way, we expect to get just what we pay for, with no padding or fudging. We call that the waterfall model, because work cascades down from one stage to the next. The pieces are supposed to mesh with the certainty of gravity. Of course they never do.