DesignForTesting, and -- if you're into waterfalls, uml or the like, AnalyzeForTesting. If you put off thinking about testing until you're done implementing, you're too late. Do it right, and you can test the pieces long before you're done. Do it right and the testing can help you find your mistakes early enough to do something about them. See also: UnitTestingIsDesign; similar to TestFirstDesign; compare to TestDrivenDevelopment