One of the reasons for the muddy software world we live in is, according to Warnier, that we don’t even know what the real specifications are.

By formulating specifications, which are about function and independent of users, quality control is supposed to be guaranteed. One tries to write down all the possible inputs and all the possible outputs and these are written down in real words; we want the system to be secure or we want the system to be reliable. But those words don’t any longer have an exact precise meaning; they can mean lots of different things. We don’t really know what we want our system to do, says Warnier. Nobody takes the effort to really find out. It’s very complicated to get these things right, and as long as there are no people demanding these things and are willing to pay for it, it is not happening. There’s no need for it because people will buy the crappy software anyway because there is no real alternative.

Nevejan suggests that it is an interesting concept for witnessing, to focus on conditions and specifications as two things you have to create for a system to work. There are conditions that you witness and to which you can be witness if you have some specifications. Otherwise you can’t see the conditions. Warnier may agree or not, because these are definitely not his ideas but Nevejan’s, he states.