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