I never worked anywhere that was truly waterfall and I've been in the industry for almost 30 years. The best projects I worked on have been iterative with some sort of upfront design phase for each iteration, where an "iteration" was a large chunk... like a couple months... You might hear this referred to as the "spiral" model. There are many shades of gray between "waterfall" and true "agile" and I'd argue that neither extreme actually works.
I have been involved in numerous "waterfall" software projects and the majority were successful. This is because the "waterfall" process was never as the Agile proponents describe it. Successful "waterfall" projects are always iterative.
Unlike other kind of engineering software is much more iterative and flexible, so designing a process around this makes more sense.