The design model

The design model builds on the analysis model by describing, in greater detail, the structure of the system and how the system will be implemented. Classes that were identified in the analysis model are refined to include the implementation constructs.

The design model is based on the analysis and architectural requirements of the system. It represents the application components and determines their appropriate placement and use within the overall architecture.

In the design model, packages contain the design elements of the system, such as design classes, interfaces, and design subsystems, that evolve from the analysis classes. Each package can contain any number of subpackages that further partition the contained design elements. These architectural layers form the basis for a second-level organization of the elements that describe the specifications and implementation details of the system.

Within each package, sequence diagrams illustrate how the objects in the classes interact, state machine diagrams to model the dynamic behavior in classes, component diagrams to describe the software architecture of the system, and deployment diagrams to describe the physical architecture of the system.

You have created the use case model that describes the requirements for the application and created an analysis model that identifies the application domain requirements and describes how the application will be structured. The next step in the development process is to build on the analysis model by exploring the architecture and implementation choices for the application.

The design phase takes the high-level model created during analysis and adds details to the actual implementation of the system. Using a variety of diagrams, including sequence, state machine, component, and deployment diagrams, you can create a model that describes, in detail, how the application is structured and how it will be implemented. Programming constructs and technologies, such as those used for persistence, distribution, security, and logging, are described. You can further refine the design model by applying design patterns that capture frequently used or complex structures and processes.

When you are ready to move to the implementation phase, the design model can be transformed to application code.

A practice is set of techniques for accomplishing a goal. Usually a part of a larger process, a practice addresses one aspect of the software development lifecycle, such as requirements management, use case-driven development, or change management. The process of creating a design model is included in the following IBM Practices:
The Evolutionary Design Practice is an approach to design that assumes that the design will evolve over time. The practice minimizes documentation, but still provides guidance for making design decisions and communicating those decisions.
The Component-based Software Architecture Practice defines a system's functional architecture by breaking the system up into a number of collaborating components. It focuses on identifying the major abstractions of the system and making decisions on how the system will be built to ensure resilience and maintainability.