Why Don't People Use Formal Methods?
It's also a lot easier to do change management on an abstract model of the software you're working on than the design of that one program itself, because the design choices made by other sister programs can be immensely helpful.  It's the inversion of making decisions in a vacuum.  What do you call that?---Edit for "random" keywords:  model-driven engineering with domain-specific meta-modelling languages