Table of ContentsReliable programming How to write programs that work A reliable design is... Modular design Testing pieces separately Robust design Programming without limits Deterministic design Isolating indeterminacy Testable design Assertions Logging A reliable implementation is... Well specified implementation Clean implementation Explaining programs Edge cases Proving programs Systematic testing What is most important to test? Unit testing Debugging A necessary nuisance How to avoid making things worse A special state of mind How not to do it A more productive approach Simplifying the bug hunt Once you think you've found it Debugging tools Did fixing it break anything else? Ensuring that bugs stay fixed Example: compiler test library (1988) When does a compiler test work? Running batches of tests Summary |
Author: Andrew Koenig
Email: ark@research.att.com Home Page: http://www.research.att.com/info/ark |