Chapter 6.  Design

Table of Contents

6.1. The Design Process (To be written)
6.1.1. Class, Responsibilities, and Collaborators (CRC) Cards
6.1.2. Package Diagram (To be written)
6.1.3. Realization Class Diagrams (To be written)
6.1.4. Sequence Diagrams and Collaboration Diagrams (To be written)
6.1.5. Statechart Diagrams and Activity Diagrams (To be written)
6.1.6. Deployment Diagram (To be written)
6.1.7. Documents (To be written)
6.2. Package Diagrams (To be written)
6.2.1. The Package Diagram (To be written)
6.2.2. Advanced Package Diagrams (To be written)
6.3. Creating Package Diagrams in ArgoUML
6.3.1. Packages
6.3.2. Relationships between packages (To be written)
6.3.3. Advanced Package Features (To be written)
6.4. More on Class Diagrams (To be written)
6.4.1. The Class Diagram (To be written)
6.4.2. Advanced Class Diagrams (To be written)
6.5. More on Class Diagrams in ArgoUML (To be written)
6.5.1. Classes (To be written)
6.5.2. Class Attributes and Operations (To be written)
6.5.3. Advanced Class Features
6.6. Sequence and Collaboration Diagrams (To be written)
6.6.1. More on the Sequence Diagram (To be written)
6.6.2. The Collaboration Diagram (To be written)
6.6.3. Advanced Collaboration Diagrams (To be written)
6.7. Creating Collaboration Diagrams in ArgoUML (To be written)
6.7.1. Collaboration Diagrams (To be written)
6.7.2. Messages (To be written)
6.7.3. Advanced Collaboration Diagrams (To be written)
6.8. Statechart Diagrams (To be written)
6.8.1. The Statechart Diagram (To be written)
6.8.2. Advanced Statechart Diagrams (To be written)
6.9. Creating Statechart Diagrams in ArgoUML (To be written)
6.9.1. Statechart Diagrams (To be written)
6.9.2. States (To be written)
6.9.3. Transitions (To be written)
6.9.4. Actions (To be written)
6.9.5. Advanced Statechart Diagrams (To be written)
6.10. Activity Diagrams (To be written)
6.10.1. The Activity Diagram (To be written)
6.11. Creating Activity Diagrams in ArgoUML (To be written)
6.11.1. Activity Diagrams (To be written)
6.11.2. Action States (To be written)
6.12. Deployment Diagrams (To be written)
6.12.1. The Deployment Diagram (To be written)
6.13. Creating Deployment Diagrams in ArgoUML (To be written)
6.13.1. Nodes (To be written)
6.13.2. Components (To be written)
6.13.3. Relationships between nodes and components (To be written)
6.14. System Architecture (To be written)
6.15. Case Study (To be written)
6.15.1. CRC Cards (To be written)
6.15.2. Packages (To be written)
6.15.3. Class Diagrams (To be written)
6.15.4. Sequence Diagrams (To be written)
6.15.5. Collaboration Diagrams (To be written)
6.15.6. Statechart Diagrams (To be written)
6.15.7. Activity Diagrams (To be written)
6.15.8. The Deployment Diagram (To be written)
6.15.9. The System Architecture (To be written)

We now have the problem we are trying to solve specified in the language of a putative solution. In the Design Phase, we construct all the details of that solution.

The blurred boundary between Analysis and Design is reflected in their use of many of the same UML tools. In this chapter we will mostly be reusing UML technology we have already met once. The big step is casting everything into concrete terms. We move from the abstract concepts of analysis to their concrete realization.

Once again the recursive, and iterative nature of our process means we will come back to the Design phase many times in the future.

6.1.  The Design Process (To be written)

The design process extends the modeling effort beyond the business concerns and into the solutions space. It is during this effort that you decide whether you are going to use Java, C++, J2EE, CORBA, SOAP, Dial up line, internet connection dedicated line, XML, etc. Many of these decisions will impact directly the PSM model, others may only be reflected in the documents produced.

...

6.1.1.  Class, Responsibilities, and Collaborators (CRC) Cards

Strength of CRC cards during Design

  • Spreading Objet-Oriented Design Expertise

  • Design Reviews

  • Framework for Implementation

  • Informal Notation

  • Choice of supporting software components

  • Performance Requirements

In this phase developers replace some of the domain experts in the group, but there should always be at least one domain expert in the group.

The focus of the group moves from what is to be done to how to do it. The classes from the solution domain are added to those defined in the analysis phase. Think about what classes are needed to make the system work. Do you need a List class to hold objects? Do you need classes to handle exceptions? Do you need wrapper classes for other subsystems? New classes that are looked for in this part, are classes that support the implementation of the system.

During the design phase the distinction between class and object becomes important. Think about the objects in your scenarios. Who creates the objects? What happens when it is created and destroyed? What is the lifetime of the object vs. the lifetime of the information held be the object?

Now is the time to look at what information the objects hold compared to what is requested from other classes or computed on the fly. Use the back of the card to record the attributes found for the classes. Break you responsibilities into subresponsibilities and list the subresponsibilities indented under the main responsibilities. Move the collaborators next to the subresponsibilities that use them.

After the Collaborator class on your card list the responsibility of the used class that is used in the collaboration. After the collaborating responsibilities on your cards, list the data passed back by the collaborating object in parenthesis.

Redo the scenarios you did in the analysis phase, but know take into consideration all of the design heuristics discussed. Make up your own scenarios and try them.

6.1.2.  Package Diagram (To be written)

To be written...

6.1.3.  Realization Class Diagrams (To be written)

To be written...

6.1.4.  Sequence Diagrams and Collaboration Diagrams (To be written)

To be written...

6.1.5.  Statechart Diagrams and Activity Diagrams (To be written)

To be written...

6.1.6.  Deployment Diagram (To be written)

To be written...

6.1.7.  Documents (To be written)

System Architecture. To be written...