Traditional functional decomposition techniques may then be used in the design of the methods to complete the required actions. If the high-level design has been completed correctly, the application objects should be relatively independent of one another. It should therefore be possible to complete the development and testing of the methods for each object class as a separate task with each class, its methods and valid interfaces defined and unit-tested before the application is brought together for final integration-testing.