Object-oriented analysis and design (OOAD) is a software engineering
approach that models a system as a group of interacting objects. Each
object represents some entity of interest in the system being modeled
and is characterized by its class, its state (data elements), and its
behavior. Various models can be created to show the static structure,
dynamic behavior, and run-time deployment of these collaborating
objects. In OOAD the boundary between analysis and design is blurred.
One reason for this blurring is the similarity of basic constructs
(i.e., objects and classes) that are used in analysis and design. The
fundamental difference between OOA and OOD is that OOA models the
problem domain, leading to an understanding and specification of the
problem, while OOD models the solution to the problem. That is analysis
deal with the problem domain, while design deals with the solution
domain. However, in OOAD it is believed that the problem domain
representation created by OOA is generally subsumed in the solution
domain representation. That is, the solution domain representation,
created by OOD, generally contains much of the representation created by
OOA.