The fundamental problem with software design verification is that marginal reductions in the number of defects have an essentially exponential cost. The market has declared that it is unwilling to pay ten times as much for software as they do in exchange for not having to patch as many bugs. There are companies and applications that actually do a proper rigorous design verification, going as far as doing module level proofs of correctness, but this is extremely complicated and costs a fortune. The only people that can afford software applications that reliable is the military and similar. A defect in a single line of code can cause a million line application to subtly fail in ways that are nearly impossible to detect. Proving the correctness of an application that large is an exercise in the intractable.
So it boils down to economics. Virtually no one can afford to eliminate all defects in non-trivial software applications, certainly not for the consumer market. It is the nature of the beast. Comparing it to conventional engineering is apples and oranges.