>>>>> "Albert" == Albert Wagner <alwagner / tcac.net> writes:

    Albert> Exactly what does DBC mean in the context of this thread?
    Albert> -- Small is Beautiful

Design By Contract

In programming languages it is often implemented as enter/exit
condition. Something like this pseudo code:

   def fib(f)
     pre { f > 0 and f.type < Integer }
     n, n1 = 1, 0
     (f-1).times do
       n, n1 = n+n1, n
     end
     return n
     post { n > 0 and n.type < Integer }
   end

In this example just after entering the method, the enter condition
pre{} would be executed if the expression returns false an exception
should be thrown. Just before the method would be left the exit
condition post{} would be executed to check e.g. the result of the
method.

In this stupid example the enter condition would be, that one can only 
ask for the fibonacci numbers if 'f' is greater than zero. The result
has also to be greater then zero. Both numbers 'f' and 'n' has to be
instances of class Integer or one of its subclasses.

So if I feed the method fib with '0', '-1' or even '1.2' execptions
should be raised.

This was only one way how to use DBC in an implementation. The
interesting thing is how to design such contracts (pre/post conds)
together with your app.

HTH,
\cle