&gt; Most software is poorly defined to begin with and so the programmer is responsible for figuring out what the program should do in the absence of a spec. That&#x27;s one class of bug.<p>This is exactly my point.  The fact that the programmer knows what the program should do implies that there exists knowledge outside of the program of what it should do.  This knowledge consititutes the requirements, whether they be written or not.