Not all military overruns are caused by mismanagement or someone behaving badly.
Let’s say you are building a new fighter jet. It’s going to take years to develop this new jet, so if you make your jet out of the technology that you currently have, your jet is going to be old technology when it finally rolls off of the production line. So instead you design for the next generation of technology. Guess right, and everything comes together as it should. Guess wrong on how much you’re going to be able to push the limits of the next generation technology, and now you’ve got something that doesn’t work. You need to pour more money into solving the problems. So now you have cost overruns and schedules slipping, and no one did anything wrong.
I personally experienced this on my first job out of college. I worked on the radar and flir systems for a new jet. There had been a few screw-ups in the project with companies developing certain sub-systems being unable to deliver, so that caused some schedule slips and budget overruns right from the start. But the new stealth technology that they were developing really hit a lot of snags that no one had been predicting. This made the jet massively over budget and massively behind schedule. In the end, the jet ended up getting canceled, and I got laid off (and got out of defense work, and was much happier anyway in the long run).
If they had made the jet using proven technology that they knew worked, it would not have been stealthy and there wouldn’t have been much of a point to making it. So they gambled. In this case, they lost. Stuff happens.
I also worked on the fire control system for a helicopter. In this case, we started with a current generation CPU board that wasn’t fast enough and didn’t have enough memory to do what we wanted it to do. But we started developing code on it anyway. Meanwhile, a different group went about designing the next generation CPU. We were pretty far along in development when the new CPU board finally became available, and now we could finally test out a lot of code that had been written but wouldn’t work properly on the CPU board that we had started with. In this case, it all worked out. We had correctly guessed how much CPU technology would advance during development.
Sometimes you get lucky, sometimes you don’t.
And sure, sometimes someone bid the project incorrectly, or there were some shady back room deals going on, all kinds of stuff. The point is, not all cost overruns are caused by bad management and broken procurement systems. Some of it is just luck.