Specify Before Implementation
Of course you specify what your code needs to do before you build the implementation. Don't you?
Here are some possible ways that this may be done:
-
Not at all. [Does anyone know how to get a list to start at 0?]
-
Using notation (graphical, textual, mathematical) in a document, such as UML or Z.
-
Using lightweight declarative programming constructs, such as DesignInIdl
-
Using heavyweight declarative programming constructs, such as an Eiffel class with contracts fully defined on all its features.
-
Using tools to describe the behavior required by the component, such as CodeUnitTestFirst.