Software development is hard. There are two principle paradigms intended to make it easier. CASE (Computer Assisted Software Engineering) systems seeks to exploit common patterns and machine generate explicit code to handle each process. Object Oriented systems seek to exploit common patterns and handle each process by reusing those common patterns. Correctness and reliability are vital to the success of software systems. A common strategy to ensure these is to test the system after development. The two principle development paradigms offer different strategies.