> [The three important stages of a specification in my opinion]
I would add the following stage:
4) The context. Two contexts are of interest:
a) The main data structures of the software. (For instance the buffers in an editor.)
The relationship between a routine and those data can be tricky.
b) The system of features of the software as explained in the manual for instance. It
is the functional point of view. Which feature the class or routine is precisely