&gt; ...if the code is over some quality level (which can be measured with bugs count) then the source itself is implementation documentation.<p>Oh, you summer child.<p>In <i>any</i> complex software project, there&#x27;s <i>always</i> a difference between the contract described by the system&#x27;s specification and the contract described by the software as implemented.<p>The big difference between the <i>explicit</i> contract of the documentation and <i>implicit</i> contract of the code is that -in areas on which the documentation is silent- the contract described by the code is subject to change at <i>any</i> time, without warning.  Raymond Chen [0] has spilled <i>much</i> ink over customers who have gotten badly burned by changes in the implicit contract some time after they made use of something that the <i>code</i> permitted, but the <i>documentation</i> did not describe as possible and&#x2F;or supported.<p>[0] Microsoft most notable backwards-compatibility guru