Опубликован: 18.09.2006 | Уровень: специалист | Доступ: свободно
Лекция 6:

Архитектура программного обеспечения

UML. Виды диаграмм UML

Для представления архитектуры, а, точнее, различных входящих в нее структур, удобно использовать графические языки. На настоящий момент наиболее проработанным и наиболее широко используемым из них является унифицированный язык моделирования (Unified Modeling Language, UML) [5,6,7], хотя достаточно часто архитектуру системы описывают просто набором именованных прямоугольников, соединенных линиями и стрелками, которые представляют возможные связи.

UML предлагает использовать для описания архитектуры 8 видов диаграмм. 9-й вид UML диаграмм, диаграммы вариантов использования (см. лекцию 4), не относится к архитектурным представлениям. Кроме того, и другие виды диаграмм можно использовать для описания внутренней структуры компонентов или сценариев действий пользователей и прочих элементов, к архитектуре часто не относящихся. В этом курсе мы не будем разбирать диаграммы UML в деталях, а ограничимся обзором их основных элементов, необходимым для общего понимания смысла того, что изображено на таких диаграммах.

Диаграммы UML делятся на две группы — статические и динамические диаграммы.

Статические диаграммы

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

  • Диаграммы классов (class diagrams) показывают классы или типы сущностей системы, характеристики классов ( поля и операции ) и возможные связи между ними. Пример диаграммы классов изображен на рис. 6.5.

    Классы представляются прямоугольниками, поделенными на три части. В верхней части показывают имя класса, в средней — набор его полей, с именами, типами, модификаторами доступа ( public ‘+’, protected ‘#’, private ‘-’ ) и начальными значениями, в нижней — набор операций класса. Для каждой операции показывается ее модификатор доступа и сигнатура.

    На рис. 31 изображены классы Account, Person, Organization, Address, CreditAccount и абстрактный класс Client.

    Класс CreditAccount имеет private поле maximumCredit типа double, а также public метод getCredit() и protected метод setCredit().

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

    Диаграмма классов

    увеличить изображение
    Рис. 6.5. Диаграмма классов

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

    Композиция описывает ситуацию, в которой объекты класса A включают в себя объекты класса B, причем последние не могут разделяться (объект класса B, являющийся частью объекта класса A, не может являться частью другого объекта класса A ) и существуют только в рамках объемлющих объектов (уничтожаются при уничтожении объемлющего объекта).

    Композицией на рис. 6.5 является связь между классами Organization и Address.

    Ссылочная связь (или слабая агрегация ) обозначает, что объект некоторого класса A имеет в качестве поля ссылку на объект другого (или того же самого) класса B, причем ссылки на один и тот же объект класса B могут иметься в нескольких объектах класса A.

    И композиция, и ссылочная связь изображаются стрелками, ведущими от класса A к классу B. Композиция дополнительно имеет закрашенный ромбик у начала этой стрелки. Двусторонние ссылочные связи, обозначающие, что объекты могут иметь ссылки друг на друга, показываются линиями без стрелок. Такая связь показана на рис. 6.5 между классами Account и Client.

    Эти связи могут иметь описание множественности, показывающее, сколько объектов класса B может быть связано с одним объектом класса A. Оно изображается в виде текстовой метки около конца стрелки, содержащей точное число или нижние и верхние границы, причем бесконечность изображается звездочкой или буквой n. Для двусторонних связей множественности могут показываться с обеих сторон. На рис. 6.5 множественности, изображенные для связи между классами Account и Client, обозначают, что один клиент может иметь много счетов, а может и не иметь ни одного, и счет всегда привязан ровно к одному клиенту.

    Наследование классов изображается стрелкой с пустым наконечником, ведущей от наследника к предку. На рис. 6.5 класс CreditAccount наследует классу Account, а классы Person и Organization — классу Client.

    Реализация интерфейсов показывается в виде пунктирной стрелки с пустым наконечником, ведущей от класса к реализуемому им интерфейсу, если тот показан в виде прямоугольника. Если же интерфейс изображен в виде кружка, то связь по реализации показывается обычной сплошной линией (в этом случае неоднозначности в ее толковании не возникает). Такая связь изображена на рис. 6.5 между классом Account и интерфейсом AccountInterface.

    Один класс использует другой, если этот другой класс является типом параметра или результата операции первого класса. Иногда связи по использованию показываются в виде пунктирных стрелок. Пример такой связи между классом Person и перечислимым типом AddressKind можно видеть на рис. 6.5.

    Ссылочные связи, реализованные в виде ассоциативных массивов или отображений (map) — такая связь в зависимости от некоторого набора ключей определяет набор ссылок-значений — показываются при помощи стрелок, имеющих прямоугольник с перечислением типов и имен ключей, примыкающий к изображению класса, от которого идет стрелка. Множественность на конце стрелки при этом обозначает количество ссылок, соответствующее одному набору значений ключей.

    На рис. 6.5 такая связь ведет от класса Person к классу Address, показывая, что объект класса Person может иметь один адрес для каждого значения ключа kind, т.е. один домашний и один рабочий адреса.

    Диаграммы классов используются чаще других видов диаграмм.

Владислав Нагорный
Владислав Нагорный
Высшее образование
Лариса Парфенова
Лариса Парфенова
Экстерн
Оксана Пагина
Оксана Пагина
Россия, Москва
Надежда Белякова
Надежда Белякова
Россия