- •Часть 1. Введение в процесс моделирования 13
- •Глава 1. Зачем мы моделируем 13
- •Глава 2. Введение в язык uml 21
- •Часть 1. Введение в процесс моделирования Глава 1. Зачем мы моделируем
- •Значение моделирования
- •Принципы моделирования
- •Объектное моделирование
- •Глава 2. Введение в язык uml
- •Обзор uml
- •Где используется uml
- •Концептуальная модель uml
- •Строительные блоки uml
- •Правила языка uml
- •Общие механизмы языка uml
- •Архитектура
- •Жизненный цикл разработки по
- •Глава 3. Здравствуй, мир !
- •Ключевые абстракции
- •Механизмы
- •Компоненты
- •Часть II. Основы структурного моделирования Глава 4. Классы
- •Введение
- •Термины и понятия
- •Атрибуты
- •Операции
- •Организация атрибутов и операций
- •Обязанности
- •Другие свойства
- •Типичные приемы моделирования Словарь системы
- •Распределение обязанностей в системе
- •Непрограммные сущности
- •Примитивные типы
- •Глава 5. Отношения
- •Введение
- •Термины и понятия
- •Зависимости
- •Обобщения
- •Ассоциации
- •Другие свойства
- •Типичные приемы моделирования Простые зависимости
- •Одиночное наследование
- •Структурные отношения
- •Глава 6. Общие механизмы
- •Введение
- •Термины и понятия
- •Примечания
- •Другие дополнения
- •Стереотипы
- •Помеченные значения
- •Ограничения
- •Стандартные элементы
- •Типичные приемы моделирования Комментарии
- •Новые строительные блоки
- •Новые свойства
- •Новая семантика
- •Глава 7. Диаграммы
- •Введение
- •Термины и понятия
- •Структурные диаграммы
- •Диаграммы поведения
- •Типичные приемы моделирования
- •Различные уровни абстракции
- •Сложные представления
- •Глава 8. Диаграммы классов
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичные примеры применения
- •Типичные приемы моделирования Простые кооперации
- •Логическая схема базы данных
- •Прямое и обратное проектирование
- •Часть III. Изучение структурного моделирования Глава 9. Углубленное изучение классов
- •Введение
- •Термины и понятия
- •Классификаторы
- •Видимость
- •Область действия
- •Абстрактные, корневые, листовые и полиморфные элементы
- •Кратность
- •Атрибуты
- •Операции
- •Шаблоны классов
- •Стандартные элементы
- •Типичные приемы моделирования Семантика класса
- •Глава 10. Углубленное изучение отношений
- •Введение
- •Термины и понятия
- •Зависимости
- •Обобщения
- •Ассоциации
- •Реализация
- •Типичные приемы моделирования Сети отношений
- •Глава 11. Интерфейсы, типы и роли
- •Введение
- •Термины и понятия
- •Операции
- •Отношения
- •Как разобраться в интерфейсе
- •Типы и роли
- •Типичные приемы моделирования Стыковочные узлы системы
- •Статические и динамические типы
- •Глава 12. Пакеты
- •Введение
- •Термины и понятия
- •Элементы, принадлежащие пакету
- •Видимость
- •Импорт и экспорт
- •Обобщения
- •Стандартные элементы
- •Типичные приемы моделирования Группы элементов
- •Архитектурные виды
- •Глава 13. Экземпляры
- •Введение
- •Термины и понятия
- •Абстракции и экземпляры
- •Операции
- •Состояние
- •Другие особенности
- •Стандартные элементы
- •Типичные приемы моделирования Конкретные экземпляры
- •Экземпляры-прототипы
- •Глава 14. Диаграммы объектов
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичные примеры применения
- •Типичные приемы моделирования Объектные структуры
- •Прямое и обратное проектирование
- •Часть IV. Основы моделирования поведения Глава 15. Взаимодействия
- •Введение
- •Термины и понятия
- •Контекст
- •Объекты и роли
- •Сообщения
- •Последовательности
- •Представление
- •Типичные приемы моделирования Поток управления
- •Глава 16. Прецеденты
- •Введение
- •Термины и понятия
- •Прецеденты и актеры
- •Прецеденты и поток событий
- •Прецеденты и сценарии
- •Прецеденты и кооперации
- •Организация прецедентов
- •Другие возможности
- •Типичные приемы моделирования Поведение элемента
- •Глава 17. Диаграммы прецедентов
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичные примеры применения
- •Типичные приемы моделирования Контекст системы
- •Требования к системе
- •Прямое и обратное проектирование
- •Глава 18. Диаграммы взаимодействий
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Диаграммы последовательностей
- •Диаграммы кооперации
- •Семантическая эквивалентность
- •Типичные примеры применения
- •Типичные приемы моделирования Потоки управления во времени
- •Структура потоков управления
- •Прямое и обратное проектирование
- •Глава 19. Диаграммы деятельности
- •Введение
- •Термины и понятия
- •Общие свойства
- •Наполнение
- •Состояния действия и состояния деятельности
- •Переходы
- •Ветвление
- •Разделение и слияние
- •Дорожки
- •Траектория объекта
- •Типичные примеры применения
- •Типичные приемы моделирования Рабочий процесс
- •Операция
- •Прямое и обратное проектирование
- •Часть V. Более сложные аспекты поведения Глава 20. События и сигналы
- •Введение
- •Термины и понятия
- •Виды событий
- •Сигналы
- •События вызова
- •События времени и изменения
- •Посылка и получение событий
- •Типичные приемы моделирования Семейства сигналов
- •Исключения
- •Глава 21. Автоматы
- •Введение
- •Термины и понятия
- •Контекст
- •Состояния
- •Переходы
- •Более сложные аспекты состояний и переходов
- •Подсостояния
- •Типичные приемы моделирования Жизненный цикл объекта
- •Глава 22. Процессы и нити
- •Введение
- •Термины и понятия
- •Поток управления
- •Классы и события
- •Стандартные элементы
- •Коммуникация
- •Синхронизация
- •Представления с точки зрения процессов
- •Типичные приемы моделирования Несколько потоков управления
- •Межпроцессная коммуникация
- •Глава 23. Время и пространство
- •Введение
- •Термины и понятия
- •Местоположение
- •Типичные приемы моделирования Временные ограничения
- •Распределение объектов
- •Мигрирующие объекты
- •Глава 24. Диаграммы состояний
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичные примеры использования
- •Типичные приемы моделирования Реактивные объекты
- •Прямое и обратное проектирование
- •Часть VI. Архитектурное моделирование Глава 25. Компоненты
- •Введение
- •Термины и понятия
- •Компоненты и классы
- •Компоненты и интерфейсы
- •Заменяемость двоичного кода
- •Виды компонентов
- •Организация компонентов
- •Стандартные элементы
- •Типичные приемы моделирования Исполняемые программы и библиотеки
- •Интерфейс прикладного программирования
- •Исходный код
- •Глава 26. Развертывание
- •Введение
- •Термины и понятия
- •Узлы и компоненты
- •Организация узлов
- •Соединения
- •Типичные приемы моделирования Процессоры и устройства
- •Распределение компонентов
- •Глава 27. Кооперации
- •Введение
- •Термины и понятия
- •Структуры
- •Поведение
- •Организация коопераций
- •Типичные приемы моделирования Реализация прецедента
- •Реализация операции
- •Механизм
- •Глава 28. Образцы и каркасы
- •Введение
- •Термины и понятия
- •Образцы и архитектура
- •Механизмы
- •Каркасы
- •Типичные приемы моделирования Образцы проектирования
- •Архитектурные образцы
- •Глава 29. Диаграммы компонентов
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичные примеры применения
- •Типичные приемы моделирования Исходный код
- •Исполняемая версия
- •Физическая база данных
- •Адаптивные системы
- •Прямое и обратное проектирование
- •Глава 30. Диаграммы развертывания
- •Введение
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Типичное применение
- •Типичные приемы моделирования Встроенная система
- •Клиент-серверная система
- •Полностью распределенная система
- •Прямое и обратное проектирование
- •Глава 31. Системы и модели
- •Введение
- •Термины и понятия
- •Системы и подсистемы
- •Модели и представления
- •Трассировка
- •Типичные приемы моделирования Архитектура системы
- •Системы систем
- •Часть VII. Подведем итоги Глава 32. Применение uml
- •Переход к uml
- •Рекомендуемая литература
- •Диаграммы
- •Приложение в Стандартные элементы uivil
- •Стереотипы
- •Помеченные значения
- •Ограничения
- •Приложение с. Рациональный Унифицированный Процесс
- •Характеристики процесса
- •Фазы и итерации
- •Итерации
- •Циклы разработки
- •Рабочие процессы
- •Артефакты
- •Другие артефакты
- •Глоссарий
Интерфейс прикладного программирования
Если вы - разработчик, собирающий систему из компонентов, то вам часто нужно знать интерфейсы прикладного программирования (API - Application Programming Interface), которыми можно пользоваться для «склейки» разных частей API - это способы стыковки различных программ в системе, моделируемые с помощью интерфейсов и компонентов.
API - это, по сути дела, интерфейс, реализуемый одним или несколькими компонентами. Разработчику интересен только сам интерфейс, а не то, каким именно компонентом он реализован, - конечно, при условии, что какой-то компонент его все-таки реализует. Но с точки зрения управления конфигурацией системы особенности реализации важны, поскольку, когда вы публикуете API, необходимо быть уверенным в том, что присутствует хоть какая-то реализация этого API. UML позволяет вам моделировать обе точки зрения.
Операций, ассоциированных с любым семантически богатым API, существует довольно много, и нет необходимости визуализировать их все сразу. Вместо этого следует оставить операции на заднем плане модели и пользоваться интерфейсами как дескрипторами, с помощью которых эти операции можно отыскать. При желании построить исполняемую систему, использующую данный API, вам потребуется добавить ряд деталей, чтобы имеющиеся в вашем распоряжении средства разработки могли успешно откомпилировать код. Помимо сигнатур всех операций, вы, наверное, захотите привести примеры, поясняющие, как следует использовать каждый интерфейс.
Моделирование API производится так:
1. Идентифицируйте стыковочные узлы в своей системе и промоделируйте каждый из них в виде интерфейса, собрав вместе соответствующие атрибуты и операции.
2. Раскрывайте только те свойства интерфейса, которые важно визуализировать в данном контексте. Остальные свойства спрячьте, поместив их в спецификацию интерфейса для справки.
3. Реализацию каждого API моделируйте только в той мере, насколько это важно для понимания конфигурации конкретной физической реализации системы
На рис. 25.7 раскрыты API исполняемо программы, фигурирующей на двух предыду .щих рисунках. Вы видите четыре интерфейс;
lApplication, IModels,IRenderim и IScripts.
Исходный код
Чаще всего компоненты используются ДЛ< моделирования физических частей, состав ляющих реализацию. Сюда же относите! моделирование вспомогательных элементе!
развернутой системы: таблиц, файлов, документов и API. Другое назначение компонентов - моделирование конфигурации всех файлов, содержащих исходный код, из которых с помощью средств разработки были созданы исполняемые части. Это компоненты, являющиеся рабочими продуктами процесса разработки.
Графическое моделирование исходного кода особенно полезно для визуализации зависимостей между различными файлами при компиляции, а также для управления разбиением файлов на относительно независимые группы и последующим их объединением в ходе ветвления процесса разработки. Таким образом, компоненты UML можно использовать в качестве графического интерфейса к средствам контроля версий и управления конфигурацией.
Для большинства систем состав файлов с исходным кодом диктуется требуемыми средой разработки решениями, которые вы приняли относительно структурирования файлов. В этих файлах хранятся детали реализации классов, интерфейсов, коопераций и других логических элементов, которые впоследствии преобразуются в физические двоичные компоненты с помощью средств разработки. Как правило, средства разработки определяют способ организации исходного кода (например, для каждого класса обычно используется один или два файла), но необходимость в визуализации отношений между файлами все равно остается. Методы группировки файлов в пакеты и методы управления версиями диктуются решениями о стратегии внесения изменений в систему.
Моделирование исходного кода осуществляется следующим образом:
1. В зависимости от того, какие ограничения накладывают средства разработки, смоделируйте файлы, в которых будут храниться все логические элементы, а также зависимости между ними при компиляции.
2. Если нужно привязать модели к средствам контроля версий и управления конфигурацией, включите для каждого управляемого файла помеченные значения, такие как номер версии, имя автора и информацию о выборке и возврате файла в депозитарий.
3. По мере возможности оставляйте управление отношениями между файлами инструментам разработки, используя UML только для визуализации и документирования отношений.
Например, на рис. 25.8 показаны некоторые исходные файлы, из которых строится библиотека render. dll. Вы видите четыре заголовочных файла (render. h, rengine. h, poly. h и colortab. h), представляющих спецификации некоторых классов, а также файл render. срр, представляющий собой реализацию одного из этих классов.
По мере увеличения размера модели вы обнаружите, что многие файлы с исходными текстами объединяются в концептуально и семантически связанные группы. Скорее всего, система разработки поместит эти группы файлов в отдельные каталоги. В UML для моделирования таких групп можно использовать пакеты (см. главу 12).
UML позволяет визуализировать отношение между классом и соответствующим исходным файлом, а также отношение между исходным файлом и исполняемой программой или библиотекой. Для этого используются отношения трассировки (см. главы 5 и 10). Однако такие детали требуется прорабатывать сравнительно редко.
Советы
Моделируя компоненты в UML, помните, что вы моделируете физические аспекты системы. Хорошо структурированный компонент обладает следующими свойствами:
предоставляет четкую абстракцию некоторой сущности, которая является частью физического аспекта системы;
предоставляет реализацию небольшого, хорошо определенного набора интерфейсов;
включает набор классов, которые, действуя совместно, реализуют семантику интерфейсов изящно и экономно;
слабо связан с другими компонентами; как правило, компоненты моделируются только совместно с отношениями зависимости и реализации.
Изображая компонент в UML, руководствуйтесь следующими правилами:
применяйте свернутую форму интерфейса, если только не возникает острой необходимости раскрыть операции, предлагаемые этим интерфейсом;
показывайте только те интерфейсы, которые необходимы для понимания назначения компонента в данном контексте;
в тех случаях, когда вы используете компоненты для моделирования библиотек и исходного кода, указывайте помеченные значения, относящиеся к контролю версий.