> Why not aspire to levels of completeness and rigor comparable to civil engineering?
Because it takes 11 years to upgrade one feature. https://en.wikipedia.org/wiki/Eastern_span_replacement_of_th...
In all seriousness, you could have any level of 'rigor' you want, but you probably don't want to pay for it. I used to work at a hardware company that used custom ASICs. Each new hardware platform used a handful of new ASICs and took around five years to develop. And if you made a mistake in an ASIC it was costly to fix--sometimes you could modify a metal mask, but a full respin was approaching $1M. In that environment, you do everything you can to not make a mistake.
I was always glad I was in software. I used to joke that if I made a mistake, it cost around one cent of electricity to recompile.
But over time, they started to treat software development like they did ASIC development. It took forever to get a feature implemented, Seriously, even tiny things that were like "I've got an UI idea that I can code it in a couple of days and see how it works out, if it sucks no harm no foul" were turned into six month orgies of spec writing, endless meetings, multiple layers of buyoff, and just overall inefficiencies.