View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearchHelp Guide

Fowler's Appendix on Techniques and Their Uses

Martin Fowler talks about where to apply certain UML diagrams during the different phases of design. I am merelt retyping Appendix A of UML Distilled.

Oops. Swiki problem. Please scroll down. \/



Activity Diagram

Shows behavior with control structure. Can show many objects over many use cases, many objects in single use case, or implementatiuon of method. Encourages parallel behavior.

Class Diagram

Shows static structure of concepts, types, and classes. Concepts show how users think about the world; types show interfaces of software components; classes show implementation of software components.

CRC Cards

Helps get to essence of class's purpose. Good for exploring how to implement use case. Use if getting bogged down with details or if learning object approach to design.

Deployment Diagram

Shows physical layout of components on hardware nodes.

Design by Contract

Provides rigorous definition of operation's purpose and class's legal state. Encode these in class to enhance debugging.

Interaction Diagram

Shows how several objects collaborate in single use case.

Package Diagram

Shows groups of classes and dependencies among them.


Offers useful bits of analysis, design, and coding techniques. Good examples to learn from; starting point for designs.


Helps in making changes to working program to improve structure. Use when code is getting in the way of the design.

State Diagram

Shows how single object behaves across many use cases.

Use Case

Elicits requirements from users in meaningful chunks. Construction planning is built around delivering some use cases in each iteration. Basis for system testing.