Диаграммы пакетов, компонентов и размещения

Цель работы: 

  • изучение диаграмм пакетов, диаграммы компонентов и диаграммы размещения,
  • изучение их применения в процессе проектирования.

Один из важнейших вопросов методологии создания программного обеспечения - как разбить большую систему на небольшие подсистемы? Именно с этой точки зрения изменения, связанные с переходом от структурного подхода к объектно-ориентированному, являются наиболее заметными. Одна из идей заключается в группировке классов в компоненты более высокого уровня. В UML такой механизм группировки носит название пакетов (package).

Диаграммой пакетов является диаграмма, содержащая пакеты классов и зависимости между ними. Строго говоря, пакеты и зависимости являются элементами диаграммы классов, т. е. диаграмма пакетов - это всего лишь форма диаграммы классов. Однако на практике причины построения таких диаграмм различны.

Зависимость между двумя элементами имеет место в том случае, если изменения в определении одного элемента могут повлечь за собой изменение в другом. Что касается классов, то причины зависимостей могут быть самыми разными: один класс посылает сообщение другому; один класс включает часть данных другого класса; один класс ссылается на другой как на параметр операции. Если класс меняет свой интерфейс, то любое сообщение, которое он посылает, может стать неправильным.

В идеальном случае только изменения в интерфейсе класса должны воздействовать на другие классы. Искусство проектирования больших систем включает в себя минимизацию зависимостей, которая снижает воздействие изменений и требует меньше усилий на их внесение.

На рис. 14.1 мы имеем дело с классами предметной области, моделирующими деятельность организации и сгруппированными в два пакета: «Клиенты» и «Заказы».

14-1.jpg (25288 bytes)

 

Рис. 14.1. Классы предметной области, моделирующие деятельность организации

«Приложение сбора заказов» имеет зависимости с обоими пакетами предметной области. «Пользовательский интерфейс сбора заказов» имеет зависимости с «Приложением сбора заказов» и «Библиотекой GUI».

Зависимость между двумя пакетами существует в том случае, если имеется какая-либо зависимость между любыми двумя классами в пакетах. Например, если любой класс в пакете «Список рассылки» зависит от какого-либо класса в пакете «Клиенты», то между соответствующими пакетами существует зависимость.

Пакеты являются жизненно необходимым средством для больших проектов. Их следует использовать в тех случаях, когда диаграмма классов, охватывающая всю систему в целом и размещенная на единственном листе бумаги формата А4, становится трудночитаемой.

Пакеты не дают ответа на вопрос, каким образом можно уменьшить количество зависимостей в разрабатываемой системе, однако они помогают выделить эти зависимости. Сведение к минимуму количества зависимостей позволяет снизить связанность компонентов системы. Но эвристический подход к этому процессу далек от идеала.

Пакеты особенно полезны при тестировании. Каждый пакет при тестировании может содержать один или несколько тестовых классов, с помощью которых проверяется поведение пакета.

Компоненты на диаграмме компонентов представляют собой физические модули программного кода (рис. 14.2). Обычно они в точности соответствуют пакетам на диаграмме пакетов (см. рис. 14.1); таким образом, диаграмма компонентов отражает выполнение каждого пакета в системе.

14-2.jpg (28461 bytes)

 

Рис. 14.2.

Зависимости между компонентами должны совпадать с зависимостями между пакетами. Эти зависимости показывают, каким образом одни компоненты взаимодействуют с другими. Направление данной зависимости показывает уровень осведомленности о коммуникации. Если на панелях инструментов диаграмм размещения отсутствуют некоторые значки, то их можно настроить вызвав диалоговое окно View/Toolbar/Configure/Toolbars/Component Diagrams

Таблица 14.1. Описание кнопок панели инструментов диаграмм компонентов Rational Rose

Кнопка Описание Название

p14-1.jpg (5415 bytes)

Выбор элемента модели 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

 

Диаграмма размещения отражает физические взаимосвязи между программными и аппаратными компонентами системы. Она является хорошим средством для того, чтобы показать маршруты перемещения объектов и компонентов в распределенной системе.

Каждый узел на диаграмме размещения представляет собой некоторый тип вычислительного устройства - в большинстве случаев часть аппаратуры. Эта аппаратура может быть простым устройством или датчиком, а может быть и большим компьютером.

На рис. 14.3 изображен персональный компьютер (ПК), связанный с UNIX-сервером посредством протокола TCP/IP. Соединения между узлами показывают коммуникационные каналы, с помощью которых осуществляются системные взаимодействия.

14-3.jpg (5221 bytes)

Рис. 14.3.

На практике данные диаграммы применяются не слишком часто. В целом эти диаграммы полезно применять, чтобы выделить особенные физические характеристики данной системы. По мере распространения распределенных систем важность данных диаграмм возрастает.

Таблица 14.2. Описание кнопок панели инструментов диаграмм размещения Rational Rosee

Кнопка Описание Название

p14-2.jpg (2714 bytes)

Выбор элемента модели Select tool
Ввод текста Text Box
Комментарий Note
Связь комментария с элементом Anchor Note to Item
Процессор Processor
Соединение Connection
Устройство Device

 

Проводить сравнение диаграмм пакетов, компонентов и размещения в общем случае бессмысленно, так как эти диаграммы не существуют сами по себе, а являются интерпретацией некоторой диаграммы классов, для которой и уместно проводить сравнение с другими диаграммами классов.

Диаграммы пакетов содержат один тип элементов - пакет и один тип связей - зависимость, поэтому численная оценка для диаграммы пакетов не столь важна, как для диаграммы классов.

На рис. 14.4 изображена диаграмма пакетов подсистемы «Служба занятости в рамках вуза» системы «Дистанционное обучение». Численная оценка для нее равна:

14-4.jpg (11181 bytes)

 

Рис. 14.4. Диаграмма пакетов

Диаграммы компонентов и размещения строятся и используются на этапе реализации и сопровождения, когда базовая архитектура системы уже обычно определена; поэтому они однозначно получаются из диаграммы классов и для них достаточно привести по одному примеру.

14-5.jpg (13178 bytes)

Рис. 14.5. Диаграмма компонентов

На рис. 14.5 изображена диаграмма компонентов, построенная на основе диаграммы пакетов, изображенной на рис. 14.4. На рис. 14.6 изображена диаграмма размещения подсистемы «Служба занятости в рамках вуза». Оценка для данной диаграммы компонентов равна:

f14-5.jpg (5897 bytes)

Оценка для диаграммы размещения равна:

f14-6.jpg (5713 bytes)

14-6.jpg (16238 bytes)

 

Рис. 14.6. Диаграмма размещения 

Упражнение 1. Создание диаграммы размещения системы регистрации

Распределенная конфигурация системы моделируется с помощью диаграммы размещения. Ее основные элементы: 

  • узел (node) - вычислительный ресурс (процессор или другое устройство (дисковая память, контроллеры различных устройств и т.д.). Для узла можно задать выполняющиеся на нем процессы;
  • соединение (connection) - канал взаимодействия узлов (сеть). 

Пример: сетевая конфигурация системы регистрации (без процессов) (рис. 14.7).

14-7.jpg (21572 bytes)

Рис. 14.7. Сетевая конфигурация системы регистрации

Распределение процессов по узлам сети производится с учетом следующих факторов: 

  • используемые образцы распределения (трехзвенная клиент - серверная конфигурация, «толстый» клиент, «тонкий» клиент, равноправные узлы (peer-to-peer) и т.д.);
  • время отклика;
  • минимизация сетевого трафика;
  • мощность узла;
  • надежность оборудования и коммуникаций. Пример: распределение процессов по узлам (рис. 14.8).

 

14-8.jpg (34717 bytes)

 

Рис.

14.8. Сетевая конфигурация системы регистрации с распределением

Для того чтобы открыть диаграмму размещения, надо дважды щелкнуть мышью по представлению Deployment View (пред­ставлению размещения) в браузере.
Для того чтобы поместить на диаграмму процессор:

  1. На панели инструментов диаграммы нажмите кнопку Processor.
  2. Щелкните по диаграмме размещения в том месте, куда хотите поместить процессор.
  3. Введите имя процессора.

В спецификациях процессора можно ввести информацию о его стереотипе, характеристиках и планировании. Стереотипы применяются для классификации процессоров (например, ком­пьютеров под управлением UNIX или ПК). Характеристики процессора - это его физическое описание. Оно может, в частности, включать скорость процессора и объем памяти.

Поле планирования (scheduling) процессора содержит описание того, как осуществляется планирование его процессов

  • Preemptive (с приоритетом). Высокоприоритетные процессы имеют преимущество перед низкоприоритетными.
  • Non preemptive (без приоритета). У процессов не имеется приоритета. Текущий процесс выполняется до его завершения, после чего начинается следующий.
  • Cyclic (циклический). Управление передается между процессами по кругу. Каждому процессу дается определенное время на его выполнение, затем управление переходит к следующему процессу.
  • Executive (исполнительный). Существует некоторый вычислительный алгоритм, который и управляет планированием процессов.
  • Manual (вручную). Процессы планируются пользователем.

Для того чтобы назначить процессору стереотип.

  1. Откройте окно спецификации процессора.
  2. Перейдите на вкладку General.
  3. Введите стереотип в поле Stereotype.

Для введения характеристик и планирования процессора

  1. Откройте окно спецификации процессора.
  2. Перейдите на вкладку Detail.
  3. Введите характеристики в поле характеристик.
  4. Укажите один из типов планирования.

Для того чтобы показать планирование на диаграмме:

  1. Щелкните правой кнопкой мыши по процессору.
  2. Выберите пункт Show Scheduling в открывшемся меню.

Для того чтобы добавить связь на диаграмму:

  1. На панели инструментов нажмите кнопку Connection.
  2. Щелкните по узлу диаграммы.
  3. Проведите линию связи к другому узлу.

Для того чтобы назначить связи стереотипа:

  1. Откройте окно спецификации связи.
  2. Перейдите на вкладку General.
  3. Введите стереотип в поле Stereotype (Стереотип).

Для того чтобы добавить процесс:

  1. Щелкните правой кнопкой мыши по процессору в браузере.
  2. Выберите пункт New > Process в открывшемся меню.
  3. Введите имя нового процесса.

Для того чтобы показать процессы на диаграмме:

  1. Щелкните правой кнопкой мыши по процессору.
  2. Выберите пункт Show Processes в открывшемся меню.
  1. Какую проблему проектирования призваны решить диаграммы пакетов?
  2. В чем отличие диаграмм пакетов от диаграмм классов?
  3. В чем смысл зависимости между элементами диаграммы пакетов?
  4. Что такое интерфейс класса?
  5. По каким признакам классы группируются в пакеты?
  6. Какие виды элементов модели представлены на диаграмме компонентов?
  7. Как связаны между собой диаграммы пакетов и диаграммы компонентов?
  8. Что показывает диаграмма размещения?
  9. Какие сущности .отображаются на диаграммах-размещения?
  10. 10. В каких случаях необходимо применение диаграмм размещения?