Цель работы:
- изучение диаграмм пакетов, диаграммы компонентов и диаграммы размещения,
- изучение их применения в процессе проектирования.
Диаграммы пакетов (package diagrams)
Один из важнейших вопросов методологии создания программного обеспечения - как разбить большую систему на небольшие подсистемы? Именно с этой точки зрения изменения, связанные с переходом от структурного подхода к объектно-ориентированному, являются наиболее заметными. Одна из идей заключается в группировке классов в компоненты более высокого уровня. В UML такой механизм группировки носит название пакетов (package).
Диаграммой пакетов является диаграмма, содержащая пакеты классов и зависимости между ними. Строго говоря, пакеты и зависимости являются элементами диаграммы классов, т. е. диаграмма пакетов - это всего лишь форма диаграммы классов. Однако на практике причины построения таких диаграмм различны.
Зависимость между двумя элементами имеет место в том случае, если изменения в определении одного элемента могут повлечь за собой изменение в другом. Что касается классов, то причины зависимостей могут быть самыми разными: один класс посылает сообщение другому; один класс включает часть данных другого класса; один класс ссылается на другой как на параметр операции. Если класс меняет свой интерфейс, то любое сообщение, которое он посылает, может стать неправильным.
В идеальном случае только изменения в интерфейсе класса должны воздействовать на другие классы. Искусство проектирования больших систем включает в себя минимизацию зависимостей, которая снижает воздействие изменений и требует меньше усилий на их внесение.
На рис. 14.1 мы имеем дело с классами предметной области, моделирующими деятельность организации и сгруппированными в два пакета: «Клиенты» и «Заказы».
Рис. 14.1. Классы предметной области, моделирующие деятельность организации
«Приложение сбора заказов» имеет зависимости с обоими пакетами предметной области. «Пользовательский интерфейс сбора заказов» имеет зависимости с «Приложением сбора заказов» и «Библиотекой GUI».
Зависимость между двумя пакетами существует в том случае, если имеется какая-либо зависимость между любыми двумя классами в пакетах. Например, если любой класс в пакете «Список рассылки» зависит от какого-либо класса в пакете «Клиенты», то между соответствующими пакетами существует зависимость.
Пакеты являются жизненно необходимым средством для больших проектов. Их следует использовать в тех случаях, когда диаграмма классов, охватывающая всю систему в целом и размещенная на единственном листе бумаги формата А4, становится трудночитаемой.
Пакеты не дают ответа на вопрос, каким образом можно уменьшить количество зависимостей в разрабатываемой системе, однако они помогают выделить эти зависимости. Сведение к минимуму количества зависимостей позволяет снизить связанность компонентов системы. Но эвристический подход к этому процессу далек от идеала.
Пакеты особенно полезны при тестировании. Каждый пакет при тестировании может содержать один или несколько тестовых классов, с помощью которых проверяется поведение пакета.
Диаграммы компонентов (component diagrams)
Компоненты на диаграмме компонентов представляют собой физические модули программного кода (рис. 14.2). Обычно они в точности соответствуют пакетам на диаграмме пакетов (см. рис. 14.1); таким образом, диаграмма компонентов отражает выполнение каждого пакета в системе.
Рис. 14.2.
Зависимости между компонентами должны совпадать с зависимостями между пакетами. Эти зависимости показывают, каким образом одни компоненты взаимодействуют с другими. Направление данной зависимости показывает уровень осведомленности о коммуникации. Если на панелях инструментов диаграмм размещения отсутствуют некоторые значки, то их можно настроить вызвав диалоговое окно View/Toolbar/Configure/Toolbars/Component Diagrams
Таблица 14.1. Описание кнопок панели инструментов диаграмм компонентов Rational Rose
Кнопка | Описание | Название |
|
Выбор элемента модели | Select tool |
Ввод текста | Text Box | |
Комментарий | Note | |
Связь комментария с элементом | Anchor Note to Item | |
Компонент | Component | |
Пакет | Package | |
Зависимость | Dependency | |
Тело задания | Task Body | |
Спецификация задания | Task Specification | |
Тело пакета | Package Body | |
Спецификация пакета | Package Specification | |
Главная программа | Main Program | |
Спецификация подпрограммы | Subprogram Specification | |
Тело попдпрограммы | Subprogram Body |
Диаграммы размещения (deployment diagrams)
Диаграмма размещения отражает физические взаимосвязи между программными и аппаратными компонентами системы. Она является хорошим средством для того, чтобы показать маршруты перемещения объектов и компонентов в распределенной системе.
Каждый узел на диаграмме размещения представляет собой некоторый тип вычислительного устройства - в большинстве случаев часть аппаратуры. Эта аппаратура может быть простым устройством или датчиком, а может быть и большим компьютером.
На рис. 14.3 изображен персональный компьютер (ПК), связанный с UNIX-сервером посредством протокола TCP/IP. Соединения между узлами показывают коммуникационные каналы, с помощью которых осуществляются системные взаимодействия.
Рис. 14.3.
На практике данные диаграммы применяются не слишком часто. В целом эти диаграммы полезно применять, чтобы выделить особенные физические характеристики данной системы. По мере распространения распределенных систем важность данных диаграмм возрастает.
Таблица 14.2. Описание кнопок панели инструментов диаграмм размещения Rational Rosee
Кнопка | Описание | Название |
|
Выбор элемента модели | Select tool |
Ввод текста | Text Box | |
Комментарий | Note | |
Связь комментария с элементом | Anchor Note to Item | |
Процессор | Processor | |
Соединение | Connection | |
Устройство | Device |
Примеры
Проводить сравнение диаграмм пакетов, компонентов и размещения в общем случае бессмысленно, так как эти диаграммы не существуют сами по себе, а являются интерпретацией некоторой диаграммы классов, для которой и уместно проводить сравнение с другими диаграммами классов.
Диаграммы пакетов содержат один тип элементов - пакет и один тип связей - зависимость, поэтому численная оценка для диаграммы пакетов не столь важна, как для диаграммы классов.
На рис. 14.4 изображена диаграмма пакетов подсистемы «Служба занятости в рамках вуза» системы «Дистанционное обучение». Численная оценка для нее равна:
Рис. 14.4. Диаграмма пакетов
Диаграммы компонентов и размещения строятся и используются на этапе реализации и сопровождения, когда базовая архитектура системы уже обычно определена; поэтому они однозначно получаются из диаграммы классов и для них достаточно привести по одному примеру.
Рис. 14.5. Диаграмма компонентов
На рис. 14.5 изображена диаграмма компонентов, построенная на основе диаграммы пакетов, изображенной на рис. 14.4. На рис. 14.6 изображена диаграмма размещения подсистемы «Служба занятости в рамках вуза». Оценка для данной диаграммы компонентов равна:
Оценка для диаграммы размещения равна:
Рис. 14.6. Диаграмма размещения
Упражнения
Упражнение 1. Создание диаграммы размещения системы регистрации
Распределенная конфигурация системы моделируется с помощью диаграммы размещения. Ее основные элементы:
- узел (node) - вычислительный ресурс (процессор или другое устройство (дисковая память, контроллеры различных устройств и т.д.). Для узла можно задать выполняющиеся на нем процессы;
- соединение (connection) - канал взаимодействия узлов (сеть).
Пример: сетевая конфигурация системы регистрации (без процессов) (рис. 14.7).
Рис. 14.7. Сетевая конфигурация системы регистрации
Распределение процессов по узлам сети производится с учетом следующих факторов:
- используемые образцы распределения (трехзвенная клиент - серверная конфигурация, «толстый» клиент, «тонкий» клиент, равноправные узлы (peer-to-peer) и т.д.);
- время отклика;
- минимизация сетевого трафика;
- мощность узла;
- надежность оборудования и коммуникаций. Пример: распределение процессов по узлам (рис. 14.8).
Рис.
14.8. Сетевая конфигурация системы регистрации с распределением
Для того чтобы открыть диаграмму размещения, надо дважды щелкнуть мышью по представлению Deployment View (представлению размещения) в браузере.
Для того чтобы поместить на диаграмму процессор:
- На панели инструментов диаграммы нажмите кнопку Processor.
- Щелкните по диаграмме размещения в том месте, куда хотите поместить процессор.
- Введите имя процессора.
В спецификациях процессора можно ввести информацию о его стереотипе, характеристиках и планировании. Стереотипы применяются для классификации процессоров (например, компьютеров под управлением UNIX или ПК). Характеристики процессора - это его физическое описание. Оно может, в частности, включать скорость процессора и объем памяти.
Поле планирования (scheduling) процессора содержит описание того, как осуществляется планирование его процессов
- Preemptive (с приоритетом). Высокоприоритетные процессы имеют преимущество перед низкоприоритетными.
- Non preemptive (без приоритета). У процессов не имеется приоритета. Текущий процесс выполняется до его завершения, после чего начинается следующий.
- Cyclic (циклический). Управление передается между процессами по кругу. Каждому процессу дается определенное время на его выполнение, затем управление переходит к следующему процессу.
- Executive (исполнительный). Существует некоторый вычислительный алгоритм, который и управляет планированием процессов.
- Manual (вручную). Процессы планируются пользователем.
Для того чтобы назначить процессору стереотип.
- Откройте окно спецификации процессора.
- Перейдите на вкладку General.
- Введите стереотип в поле Stereotype.
Для введения характеристик и планирования процессора
- Откройте окно спецификации процессора.
- Перейдите на вкладку Detail.
- Введите характеристики в поле характеристик.
- Укажите один из типов планирования.
Для того чтобы показать планирование на диаграмме:
- Щелкните правой кнопкой мыши по процессору.
- Выберите пункт Show Scheduling в открывшемся меню.
Для того чтобы добавить связь на диаграмму:
- На панели инструментов нажмите кнопку Connection.
- Щелкните по узлу диаграммы.
- Проведите линию связи к другому узлу.
Для того чтобы назначить связи стереотипа:
- Откройте окно спецификации связи.
- Перейдите на вкладку General.
- Введите стереотип в поле Stereotype (Стереотип).
Для того чтобы добавить процесс:
- Щелкните правой кнопкой мыши по процессору в браузере.
- Выберите пункт New > Process в открывшемся меню.
- Введите имя нового процесса.
Для того чтобы показать процессы на диаграмме:
- Щелкните правой кнопкой мыши по процессору.
- Выберите пункт Show Processes в открывшемся меню.
Контрольные вопросы
- Какую проблему проектирования призваны решить диаграммы пакетов?
- В чем отличие диаграмм пакетов от диаграмм классов?
- В чем смысл зависимости между элементами диаграммы пакетов?
- Что такое интерфейс класса?
- По каким признакам классы группируются в пакеты?
- Какие виды элементов модели представлены на диаграмме компонентов?
- Как связаны между собой диаграммы пакетов и диаграммы компонентов?
- Что показывает диаграмма размещения?
- Какие сущности .отображаются на диаграммах-размещения?
- 10. В каких случаях необходимо применение диаграмм размещения?