Table Of ContentUML Distilled
A Brief Guide to the Standard
Object Modeling Language
Third Edition
Martin Fowler
UML Основы
Краткое руководство
по стандартному языку
объектного моделирования
Третье издание
Мартин Фаулер
Санкт(cid:7)Петербург
2005
Мартин Фаулер
UML. Основы, 3(cid:8)е издание
Перевод А. Петухова
Главный редактор А.Галунов
Зав. редакцией Н.Макарова
Научный редактор В.Шальнев
Редактор В.Овчинников
Корректура О.Макарова
Верстка Н.Гриценко
Фаулер M.
UML. Основы, 3(cid:20)е издание. – Пер. с англ. – СПб: Символ(cid:20)Плюс, 2004. – 192 с.,
ил.
ISBN 5(cid:20)93286(cid:20)060(cid:20)Х
Третье издание бестселлера Фаулера «UML. Основы» охватывает UML2– вер(cid:20)
сию, которая существенно отличается от всех предыдущих. Но основная фор(cid:20)
мула успеха этой книги не претерпела изменений. До сих пор она, бесспорно,
остается лучшим кратким и точным руководством по применению UML.
Главное достоинство книги заключается в кратком и сжатом изложении сути
UML и особенностей применения этого языка в современном процессе разра(cid:20)
ботки ПО. В книге описаны все главные типы диаграмм UML, рассказано, для
чего они предназначены и какие нотации применяются при их создании и чте(cid:20)
нии. Это диаграммы классов, последовательности, объектов, пакетов, развер(cid:20)
тывания, прецедентов, состояний, деятельности, составных структур, компо(cid:20)
нентов, обзора взаимодействия, коммуникационные и временные.
Фаулер не только в ясной и доступной манере описывает ключевые аспекты
языка UML, но и четко показывает ту роль, которую UML играет в процессе
разработки. Замечательные примеры моделирования являются результатом
многолетнего опыта работы автора в области проектирования и моделирования.
ISBN 5(cid:2)93286(cid:2)060(cid:2)Х
ISBN 0(cid:2)321(cid:2)19368(cid:2)7 (англ)
© Издательство Символ(cid:20)Плюс, 2004
Original English language title: UML Distilled: A Brief Guide to the Standard Object
Modeling Language, Third Edition by Martin Fowler, Copyright © 2004 by Pearson
Education, Inc. All Rights Reserved. Published by arrangement with the original pub(cid:20)
lisher, Pearson Education, Inc., publishing as ADDISON WESLEY.
Все права на данное издание защищены Законодательством РФ, включая право на полное или час(cid:20)
тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна(cid:20)
ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм.
Издательство«Символ(cid:20)Плюс».199034,Санкт(cid:20)Петербург,16линия,7,
тел.(812) 324(cid:20)5353, edit@symbol.ru. Лицензия ЛП N 000054 от 25.12.98.
Налоговая льгота – общероссийский классификатор продукции
ОК 005(cid:20)93, том 2; 953000 – книги и брошюры.
Подписано в печать 9.12.2004. Формат 70х1001 /16. Печать офсетная.
Объем 12 печ.л. Тираж 2000 экз. Заказ N
Отпечатано с готовых диапозитивов в ГУП «Типография «Наука»
199034, Санкт(cid:20)Петербург, 9 линия, 12.
Посвящается Синди
Оглавление
Отзывы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Предисловие к третьему изданию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Предисловие к первому изданию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
От автора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Что такое UML?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Способы применения UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Как мы пришли к UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Нотации и метамодели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Диаграммы UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Что такое допустимый UML?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
Смысл UML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
UML не достаточно . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
С чего начать. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
2. Процесс разработки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Процессы итеративные и водопадные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Прогнозирующее и адаптивное планирование . . . . . . . . . . . . . . . . . . . . . . . . .49
Гибкие процессы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Унифицированный процесс от Rational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Настройка процесса под проект. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
Настройка UML под процесс. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Выбор процесса разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
3. Диаграммы классов: основы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Свойства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Атрибуты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Кратность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Программная интерпретация свойств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
8 Оглавление
Двунаправленные ассоциации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Операции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Обобщение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Примечания и комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Зависимость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Правила ограничений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Когда применяются диаграммы классов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
4. Диаграммы последовательности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Создание и удаление участников. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Циклы, условия и тому подобное . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Синхронные и асинхронные вызовы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
Когда применяются диаграммы последовательности . . . . . . . . . . . . . . . . . . .89
5. Диаграммы классов: дополнительные понятия. . . . . . . . . . . . . . . . . . . . . .92
Ключевые слова. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
Ответственности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Статические операции и атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Агрегация и композиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
Производные свойства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Интерфейсы и абстрактные классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Read(cid:20)Only и Frozen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
Объекты(cid:20)ссылки и объекты(cid:20)значения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
Квалифицированные ассоциации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
Классификация и обобщение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Множественная и динамическая классификация . . . . . . . . . . . . . . . . . . . . .103
Класс(cid:20)ассоциация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Шаблон класса (параметризованный класс) . . . . . . . . . . . . . . . . . . . . . . . . . .108
Перечисления. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Активный класс. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Видимость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Сообщения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
6. Диаграммы объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Когда применяются диаграммы объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
7. Диаграммы пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Пакеты и зависимости. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Аспекты пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Реализация пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Оглавление 9
Когда применяются диаграммы пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
8. Диаграммы развертывания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
Когда применяются диаграммы развертывания. . . . . . . . . . . . . . . . . . . . . . .122
9. Прецеденты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Содержимое прецедентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
Диаграммы прецедентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Уровни прецедентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Прецеденты и возможности (или пожелания). . . . . . . . . . . . . . . . . . . . . . . . .128
Когда применяются прецеденты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
10. Диаграммы состояний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
Внутренние активности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
Состояния активности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Суперсостояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Параллельные состояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Реализация диаграмм состояний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Когда применяются диаграммы состояний . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
11. Диаграммы деятельности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Декомпозиция операции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Разделы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Сигналы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Маркеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Потоки и ребра. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Контакты и преобразования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Области расширения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Окончание потока . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Описания объединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
И еще немного . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150
Когда применяются диаграммы деятельности . . . . . . . . . . . . . . . . . . . . . . . .150
Где найти дополнительную информацию. . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
12. Коммуникационные диаграммы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
Когда применяются коммуникационные диаграммы. . . . . . . . . . . . . . . . . .154
13. Составные структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Когда применяются составные структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
10 Оглавление
14. Диаграммы компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Когда применяются диаграммы компонентов. . . . . . . . . . . . . . . . . . . . . . . . .160
15. Кооперации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Когда применяются кооперации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
16. Диаграммы обзора взаимодействия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Когда применяются диаграммы обзора взаимодействия . . . . . . . . . . . . . . .164
17. Временные диаграммы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Когда применяются временные диаграммы. . . . . . . . . . . . . . . . . . . . . . . . . . .167
A. Отличия версий языка UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Библиография . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Алфавитный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180