Many software development failures are due to lack of understanding and controlling the complexity given cost, people and time constraints.
Processes helps the controlling part but sometimes gives a wrong illusion that things are under control and thus hurts the understanding part: people stop bothering to think.
Building large software is really delicate work. You need to have a correct decomposition (thus to reduce the level of complexity) and have a good control of flexibility and complexity trade off on the component level.
It is somehow like solving a formula with many parameters. You can not just look at one or two of them.