From news:comp.object :
The only formal specification I've ever seen which a program could be proven against was an algebraic (sp?) one. Even for simple examples, they tend to become quite complex to read --IljaPreuss?
It is possible, with practice, to write specifications in a "contract" style that can be converted to formal notation as needed. --Myles
I do it the other way round.
Write the formal specification first, then simply convert the spec into a set of DesignByContract artifacts. Then I use the same spec to quickly derive the set of tests required for the s/w (this process is known as specification-directed testing) .
--StevenPerryman?