UML 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, [email protected]. Лицензия ЛП 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