Traditional software development does not support iteration, reuse or a unifying model to integrate phases of the program life cycle, but the object- oriented paradigm addresses all these issues. Boundaries between phases are blurred in the object-oriented software life cycle because objects are the items of interest in all phases. Both the analysis and design phases identify objects and the relationships between objects, providing a continuity that creates a seamless interface between phases. The object-oriented development process is iterative, replacing the 'waterfall' model of software development with a 'fountain' model. Individual software components are designed to represent concepts that will eventually be executable forms; the Abstract Data Type (ADT) is the way the object-based paradigm captures the conceptual information.