Specification as Documentation
Once we have defined the correctness of a software element as the consistency of its implementation with its specification, we should include the specification, as well as the implementation, in the software itself.
This a novel idea:
- we are accustomed to programs as defining the operations that we command our HW/SW machines to execute for us (the how);
- It is less common to treat the description of the software’s purposes (the what) as being part of the software itself.