In practice the solution is to accept the fact that
specs, no matter
 how much they are labored over, are for most efforts soft, and
 then describe mechanism to deal with uncertainty as part of the
 development process.  Rapid prototype, stepwise refinement,
 the understanding that one cannot test their way to correctness and
 a willingness to throw at least one implementation completely
 away, coupled with small, agile teams that work with an active
 user community empirically produce more correct results in less
 time that alternative techniques. 
This all sounds very familiar...
  Not like any of this is new.  Brooks described this
eons ago
 in _The Mythical Man Month_... 
Ah, now I know why... insert <EWOK_WORSHIP_SOUND_EMOTICON> here.
I can't tell you how many managers I've wanted to strangle
using the prototype code they demanded I push into production...
-dq