OOD, a form of
software design, is the process of planning a system of interacting objects to solve a software problem. A designer applies implementation constraints to the conceptual model produced in OOA. Such constraints could include the
hardware and
software platforms, the performance requirements, persistent storage and transaction, usability of the system, and limitations imposed by budgets and time. Concepts in the analysis model which is technology independent, are mapped onto implementing classes and interfaces resulting in a model of the solution domain, i.e., a detailed description of
how the system is to be built on concrete technologies. OOD activities include: • Defining objects and their
attributes • Creating
class diagrams from
conceptual models • Using
design patterns • Defining
application frameworks • Identifying persistent objects/data • Designing the object relation mapping if a
relational database is used • Identifying remote objects OOD principles and strategies include: ; Dependency injection:
Dependency injection means if an object depends upon having an instance of some other object, then the needed object is "injected" into the dependent object (for example, being passed a database connection as an argument to the
constructor instead of creating one internally). ; Acyclic dependencies principle: The
acyclic dependencies principle is that dependency graph of packages or components (the granularity depends on the scope of work for one developer) should have no cycles. This is also referred to as having a
directed acyclic graph. For example, package C depends on package B, which depends on package A. If package A depended on package C, you would have a cycle. ; Composite reuse principle: The
composite reuse principle is to favor
polymorphic composition of objects over inheritance.
Artifacts ; Sequence diagram: Extend the
sequence diagram to add specific objects that handle the system events. A sequence diagram shows, as parallel vertical lines, different processes or objects that live simultaneously, and, as horizontal arrows, the messages exchanged between them, in the order in which they occur. ; Class diagram: A
class diagram is a type of static structure
UML diagram that describes the structure of a system by showing the system's classes, its attributes, and the relationships between the classes. The messages and classes identified through the development of the sequence diagrams can serve as input to the automatic generation of the global class diagram of the system. ==See also==