Как настроить смартфоны и ПК. Информационный портал

Общая характеристика языка UML. Виды диаграмм UML Типы диаграмм uml

Аннотация: Предметом этого курса является The UML - унифицированный язык моделирования. В предыдущей лекции было рассказано о том, что же такое UML, о его истории, назначении, способах использования языка, структуре его определения, терминологии и нотации. Было отмечено, что модель UML - это набор диаграмм. В этой лекции мы рассмотрим такие вопросы: почему нужно несколько видов диаграмм; виды диаграмм; ООП и последовательность построения диаграмм

Прежде чем перейти к обсуждению основного материала этой лекции, давайте поговорим о том, зачем вообще строить какие-то диаграммы. Разработка модели любой системы (не только программной) всегда предшествует ее созданию или обновлению. Это необходимо хотя бы для того, чтобы яснее представить себе решаемую задачу. Продуманные модели очень важны и для взаимодействия внутри команды разработчиков, и для взаимопонимания с заказчиком. В конце концов, это позволяет убедиться в "архитектурной согласованности" проекта до того, как он будет реализован в коде.

Мы строим модели сложных систем, потому что не можем описать их полностью, "окинуть одним взглядом". Поэтому мы выделяем лишь существенные для конкретной задачи свойства системы и строим ее модель, отображающую эти свойства. Метод объектно-ориентированного анализа позволяет описывать реальные сложные системы наиболее адекватным образом. Но с увеличением сложности систем возникает потребность в хорошей технологии моделирования. Как мы уже говорили в предыдущей лекции, в качестве такой "стандартной" технологии используется унифицированный язык моделирования ( Unified Modeling Language , UML ), который является графическим языком для спецификации, визуализации, проектирования и документирования систем. С помощью UML можно разработать подробную модель создаваемой системы, отображающую не только ее концепцию, но и конкретные особенности реализации. В рамках UML -модели все представления о системе фиксируются в виде специальных графических конструкций, получивших название диаграмм.

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

Почему нужно несколько видов диаграмм

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

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

Да, не слишком информативно. А что же такое тогда подсистема? Чтобы прояснить ситуацию, обратимся к классикам:

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

Что ж, ничего не попишешь, придется искать определение подсистемы. Там же сказано, что подсистема - это совокупность элементов, часть из которых задает спецификацию поведения других элементов. Ян Соммервилл объясняет это понятие таким образом:

Подсистема - это система, функционирование которой не зависит от сервисов других подсистем. Программная система структурируется в виде совокупности относительно независимых подсистем. Также определяются взаимодействия между подсистемами.

Тоже не слишком понятно, но уже лучше. Говоря "человеческим" языком, система представляется в виде набора более простых сущностей, которые относительно самодостаточны. Это можно сравнить с тем, как в процессе разработки программы мы строим графический интерфейс из стандартных "кубиков" - визуальных компонентов, или как сам текст программы тоже разбивается на модули, которые содержат подпрограммы, объединенные по функциональному признаку, и их можно использовать повторно, в следующих программах.

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

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

Приведем несколько примеров. Знакомые всем нам пластмассовые игрушечные автомобильчики, которыми мы с таким азартом играли в детстве, это не что иное, как материальная искусственная декоративная модель реального автомобиля. Конечно, в таком "авто" нет двигателя, мы не заполняем его бак бензином, в нем не работает (более того, вообще отсутствует) коробка передач, но как модель эта игрушка свои функции вполне выполняет: она дает ребенку представление об автомобиле, поскольку отображает его характерные черты - наличие четырех колес, кузова, дверей, окон, способность ехать и т. д.

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

Уравнение, изображенное выше - тоже модель, но это модель математическая, и описывает она движение материальной точки под действием силы тяжести.

Осталось лишь сказать, что такое диаграмма . Диаграмма - это графическое представление множества элементов. Обычно изображается в виде графа с вершинами (сущностями) и ребрами (отношениями). Примеров диаграмм можно привести множество. Это и знакомая нам всем со школьных лет блок-схема , и схемы монтажа различного оборудования, которые мы можем видеть в руководствах пользователя, и дерево файлов и каталогов на диске, которое мы можем увидеть, выполнив в консоли Windows команду tree , и многое-многое другое. В повседневной жизни диаграммы окружают нас со всех сторон, ведь рисунок воспринимается нами легче, чем текст...

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

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

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

UML 1.5 определял двенадцать типов диаграмм , разделенных на три группы:

  • четыре типа диаграмм представляют статическую структуру приложения;
  • пять представляют поведенческие аспекты системы;
  • три представляют физические аспекты функционирования системы (диаграммы реализации).

Текущая версия UML 2.1 внесла не слишком много изменений. Диаграммы слегка изменились внешне (появились фреймы и другие визуальные улучшения), немного усовершенствовалась нотация , некоторые диаграммы получили новые наименования.

Впрочем, точное число канонических диаграмм для нас абсолютно неважно, так как мы рассмотрим не все из них, а лишь некоторые - по той причине, что количество типов диаграмм для конкретной модели конкретного приложения не является строго фиксированным. Для простых приложений нет необходимости строить все без исключения диаграммы. Например, для локального приложения не обязательно строить диаграмму развертывания. Важно понимать, что перечень диаграмм зависит от специфики разрабатываемого проекта и определяется самим разработчиком. Если же любопытный читатель все-таки пожелает узнать обо всех диаграммах UML , мы отошлем его к стандарту UML (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). Напомним, что цель этого курса - не описать абсолютно все возможности UML , а лишь познакомить с этим языком, дать первоначальное представление об этой технологии.

Итак, мы кратко рассмотрим такие виды диаграмм, как:

  • диаграмма прецедентов ;
  • диаграмма классов;
  • диаграмма объектов ;
  • диаграмма последовательностей;
  • диаграмма взаимодействия;
  • диаграмма состояний;
  • диаграмма активности ;
  • диаграмма развертывания .

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

Диаграмма прецедентов (use case diagram)

Любые (в том числе и программные) системы проектируются с учетом того, что в процессе своей работы они будут использоваться людьми и/или взаимодействовать с другими системами. Сущности, с которыми взаимодействует система в процессе своей работы, называются экторами , причем каждый эктор ожидает, что система будет вести себя строго определенным, предсказуемым образом. Попробуем дать более строгое определение эктора. Для этого воспользуемся замечательным визуальным словарем по UML Zicom Mentor :

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

Графически эктор изображается либо " человечком ", подобным тем, которые мы рисовали в детстве, изображая членов своей семьи, либо символом класса с соответствующим стереотипом , как показано на рисунке. Обе формы представления имеют один и тот же смысл и могут использоваться в диаграммах. "Стереотипированная" форма чаще применяется для представления системных экторов или в случаях, когда эктор имеет свойства и их нужно отобразить (рис. 2.1).

Внимательный читатель сразу же может задать вопрос: а почему эктор, а не актер ? Согласны, слово "эктор" немного режет слух русского человека. Причина же, почему мы говорим именно так, проста - эктор образовано от слова action , что в переводе означает действие . Дословный же перевод слова "эктор" - действующее лицо - слишком длинный и неудобный для употребления. Поэтому мы будем и далее говорить именно так.


Рис. 2.1.

Тот же внимательный читатель мог заметить промелькнувшее в определении эктора слово "прецедент". Что же это такое? Этот вопрос заинтересует нас еще больше, если вспомнить, что сейчас мы говорим о диаграмме прецедентов . Итак,

Прецедент (use-case) - описание отдельного аспекта поведения системы с точки зрения пользователя (Буч).

Определение вполне понятное и исчерпывающее, но его можно еще немного уточнить, воспользовавшись тем же Zicom Mentor "ом:

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

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

  • формирование общих требований к поведению проектируемой системы;
  • разработка концептуальной модели системы для ее последующей детализации;
  • подготовка документации для взаимодействия с заказчиками и пользователями системы.
  • В настоящее время язык UML - это стандартная нотация визуального моделирования программных систем, принятая консорциумом Object Managing Group (OMG) осенью 1997 г., которая поддерживается многими объектно-ориентированными CASE-продуктами.

    Стандарт UML предлагает следующий набор диаграмм для моделирования:

    · диаграмма вариантов использования (use case diagram) – для моделирования бизнес-процессов организации или предприятия и определения требований к создаваемой информационной системе;

    · диаграмма классов (class diagram) – для моделирования статической структуры классов системы и связей между ними;

    · диаграмма поведения системы (behavior diagrams);

    · диаграмма взаимодействия (interaction diagrams);

    · диаграмма последовательности (sequence diagrams) – для моделирования процесса обмена сообщениями между объектами в рамках одного варианта использования;

    · диаграмма кооперации (collaboration diagram) – для моделирования процесса обмена сообщениями между объектами в рамках одного варианта использования;

    · диаграмма состояний (statechart diagram) – для моделирования поведения объектов системы при переходе из одного состояния в другое;

    · диаграмма видов деятельности (activity diagram) – для моделирования поведения системы в рамках различных вариантов использования, или моделирования деятельностей;

    · диаграмма реализации (implementation diagrams):

    · диаграмма компонентов (component diagrams) – для моделирования иерархии компонентов (подсистем) информационной системы;

    · диаграмма развертывания (deployment diagram) – для моделирования физической архитектуры спроектированной информационной системы.

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

    Рис. 1. Интегрированная модель информационной системы в нотации языка UML

    4.2. Диаграмма вариантов использования

    Вариант использования представляет собой последовательность действий, выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (актером). Вариант использования описывает типичное взаимодействие между пользователем и системой. В простейшем случае вариант использования определяется в процессе обсуждения с пользователем тех функций, которые он хотел бы реализоватьв данной информационной системе. На языке UML вариант использования изображают следующим образом:

    Рис.2. Вариант использования

    Актер (actor) – это роль, которую пользователь играет по отношению к системе. Актеры представляют собой роли, а не конкретных людей или наименования работ. Несмотря на то, что на диаграммах вариантов использования они изображаются в виде стилизованных человеческих фигурок, актер может также быть внешней информационной системой, которой необходима некоторая информация от данной системы. Показывать на диаграмме актеров следует только в том случае, когда им действительно необходимы некоторые варианты использования. На языке UML актеры представляют в виде фигур:



    Рис.3. Действующее лицо (актер)

    Актеры делятся на три основных типа:

    · пользователи;

    · системы;

    · другие системы, взаимодействующие с данной;

    Время становится актером, если от него зависит запуск каких-либо событий в системе.

    4.2.1. Связи между вариантами использования и актерами

    В языке UML на диаграммах вариантов использования поддерживается несколько типов связей между элементами диаграммы:

    · коммуникация (communication),

    · включение (include),

    · расширение (extend),

    · обобщение (generalization).

    Связь коммуникации – это связь между вариантом использования и актером. На языке UML связи коммуникации показывают с помощью однонаправленной ассоциации (сплошной линии).

    Рис.4. Пример связи коммуникации

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

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

    Рис.5. Пример связи включения и расширения

    Связь обобщения показывает, что у нескольких актеров или классов имеются общие свойства.

    Рис.6. Пример связи обобщения

    4.3.



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

    Сообщение (message) – это средство, с помощью которого объект-отправитель запрашивает у объекта получателя выполнение одной из его операций.

    Информационное (informative) сообщение – это сообщение, снабжающее объект-получатель некоторой информацией для обновления его состояния.

    Сообщение-запрос (interrogative) – это сообщение, запрашивающее выдачу некоторой информации об объекте-получателе.

    Императивное (imperative) сообщение – это сообщение, запрашивающее у объекта-получателя выполнение некоторых действий.

    Существует два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и диаграммы кооперац (collaboration diagrams).

    4.3.1. Диаграмма последовательности (sequence diagrams)

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

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

    На диаграмме последовательности объект изображается в виде прямоугольника, от которого вниз проведена пунктирная вертикальная линия. Эта линия называется линией жизни (lifeline) объекта . Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.

    Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов. Сообщения появляются в том порядке, как они показаны на странице сверху вниз. Каждое сообщение помечается как минимум именем сообщения. При желании можно добавить также аргументы и некоторую управляющую информацию. Можно показать самоделегирование (self-delegation) – сообщение, которое объект посылает самому себе, при этом стрелка сообщения указывает на ту же самую линию жизни.

    Рис. 7. Пример диаграммы последовательности

    4.3.2. Диаграмма кооперации (collaboration diagram)

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

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

    Рис. 8. Пример диаграммы кооперации

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

    4.4.1. Общие сведения

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

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

    На диаграмме классов изображаются следующие элементы:

    · Пакет (package) - набор элементов модели, логически связанных между собой;

    · Класс (class) - описание общих свойств группы сходных объектов;

    · Интерфейс (interface) - абстрактный класс, задающий набор операций, которые объект произвольного класса, связанного с данным интерфейсом, предоставляет другим объектам.

    4.4.2. Класс

    Класс - это группа сущностей (объектов), обладающих сходными свойствами, а именно, данными и поведением. Отдельный представитель некоторого класса называется объектом класса или просто объектом.

    Под поведением объекта в UML понимаются любые правила взаимодействия объекта с внешним миром и с данными самого объекта.

    На диаграммах класс изображается в виде прямоугольника со сплошной границей, разделенного горизонтальными линиями на 3 секции:

    Верхняя секция (секция имени) содержит имя класса и другие общие свойства (в частности, стереотип).

    В средней секции содержится список атрибутов

    В нижней - список операций класса, отражающих его поведение (действия, выполняемые классом).

    Любая из секций атрибутов и операций может не изображаться (а также обе сразу). Для отсутствующей секции не нужно рисовать разделительную линию и как-либо указывать на наличие или отсутствие элементов в ней.

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

    Рис. 9. Пример диаграммы классов

    4.4.2.1.Стереотипы классов

    Стереотипы классов – это механизм, позволяющий разделять классы на категории.

    В языке UML определены три основных стереотипа классов:

    Boundary (граница);

    Entity (сущность);

    Control (управление).

    4.4.2.2.Граничные классы

    Граничными классами (boundary classes) называются такие классы, которые расположены на границе системы и всей окружающей среды. Это экранные формы, отчеты, интерфейсы с аппаратурой (такой как принтеры или сканеры) и интерфейсы с другими системами.

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

    4.4.2.3.Классы-сущности

    Классы-сущности (entity classes) содержат хранимую информацию. Они имеют наибольшее значение для пользователя, и потому в их названиях часто используют термины из предметной области. Обычно для каждого класса-сущности создают таблицу в базе данных.

    4.4.2.4.Управляющие классы

    Управляющие классы (control classes) отвечают за координацию действий других классов. Обычно у каждого варианта использования имеется один управляющий класс, контролирующий последовательность событий этого варианта использования. Управляющий класс отвечает за координацию, но сам не несет в себе никакой функциональности, так как остальные классы не посылают ему большого количества сообщений. Вместо этого он сам посылает множество сообщений. Управляющий класс просто делегирует ответственность другим классам, по этой причине его часто называют классом-менеджером.

    В системе могут быть и другие управляющие классы, общие для нескольких вариантов использования. Например, может быть класс SecurityManager (менеджер безопасности), отвечающий за контроль событий, связанных с безопасностью. Класс TransactionManager (менеджер транзакций) занимается координацией сообщений, относящихся к транзакциям с базой данных. Могут быть и другие менеджеры для работы с другими элементами функционирования системы, такими как разделение ресурсов, распределенная обработка данных или обработка ошибок.

    Помимо упомянутых выше стереотипов можно создавать и свои собственные.

    4.4.2.5.Атрибуты

    Атрибут – это элемент информации, связанный с классом. Атрибуты хранят инкапсулированные данные класса.

    Так как атрибуты содержатся внутри класса, они скрыты от других классов. В связи с этим может понадобиться указать, какие классы имеют право читать и изменять атрибуты. Это свойство называется видимостью атрибута (attribute visibility).

    У атрибута можно определить четыре возможных значения этого параметра:

    Public (общий, открытый). Это значение видимости предполагает, что атрибут будет виден всеми остальными классами. Любой класс может просмотреть или изменить значение атрибута. В соответствии с нотацией UML общему атрибуту предшествует знак « + ».

    Private (закрытый, секретный). Соответствующий атрибут не виден никаким другим классом. Закрытый атрибут обозначается знаком « – » в соответствии с нотацией UML.

    Protected (защищенный). Такой атрибут доступен только самому классу и его потомкам. Нотация UML для защищенного атрибута – это знак « # ».

    Package or Implementation (пакетный). Предполагает, что данный атрибут является общим, но только в пределах его пакета. Этот тип видимости не обозначается никаким специальным значком.

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

    4.4.2.6.Операции

    Операции реализуют связанное с классом поведение. Операция включает три части – имя, параметры и тип возвращаемого значения.

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

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

    В языке UML операции имеют следующую нотацию:

    Имя Операции (аргумент: тип данных аргумента, аргумент2:тип данных аргумента2,...): тип возвращаемого значения

    Следует рассмотреть четыре различных типа операций:

    Операции реализации;

    Операции управления;

    Операции доступа;

    Вспомогательные операции.

    Операции реализации

    Операции реализации (implementor operations) реализуют некоторые бизнес-функции. Такие операции можно найти, исследуя диаграммы взаимодействия. Диаграммы этого типа фокусируются на бизнес-функциях, и каждое сообщение диаграммы, скорее всего, можно соотнести с операцией реализации.

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

    Операции управления

    Операции управления (manager operations) управляют созданием и уничтожением объектов. В эту категорию попадают конструкторы и деструкторы классов.

    Операции доступа

    Атрибуты обычно бывают закрытыми или защищенными. Тем не менее, другие классы иногда должны просматривать или изменять их значения. Для этого существуют операции доступа (access operations). Такой подход дает возможность безопасно инкапсулировать атрибуты внутри класса, защитив их от других классов, но все же позволяет осуществить к ним контролируемый доступ. Создание операций Get и Set (получения и изменения значения) для каждого атрибута класса является стандартом.

    Вспомогательные операции

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

    Чтобы идентифицировать операции, выполните следующие действия:

    1. Изучите диаграммы последовательности и кооперативные диаграммы. Большая часть сообщений на этих диаграммах является операциями реализации. Рефлексивные сообщения будут вспомогательными операциями.

    2. Рассмотрите управляющие операции. Может потребоваться добавить конструкторы и деструкторы.

    3. Рассмотрите операции доступа. Для каждого атрибута класса, с которым должны будут работать другие классы, надо создать операции Get и Set.

    4.4.2.7.Связи

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

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

    Связь ассоциация

    Ассоциация (association) – это семантическая связь между классами. Их рисуют на диаграмме классов в виде обыкновенной линии.

    Рис. 10. Связь ассоциация

    Ассоциации могут быть двунаправленными, как в примере, или однонаправленными. На языке UML двунаправленные ассоциации рисуют в виде простой линии без стрелок или со стрелками с обеих ее сторон. На однонаправленной ассоциации изображают только одну стрелку, показывающую ее направление.

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

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

    Связь зависимость

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

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

    Рис. 11. Связь зависимость

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

    Связь агрегация

    Агрегации (aggregations) представляют собой более тесную форму ассоциации. Агрегация – это связь между целым и его частью. Например, у вас может быть класс Автомобиль, а также классы Двигатель, Покрышки и классы для других частей автомобиля. В результате объект класса Автомобиль будет состоять из объекта класса Двигатель, четырех объектов Покрышек и т. д. Агрегации визуализируют в виде линии с ромбиком у класса, являющегося целым:

    Рис. 11. Связь агрегация

    В дополнение к простой агрегации UML вводит более сильную разновидность агрегации, называемую композицией. Согласно композиции, объект-часть может принадлежать только единственному целому, и, кроме того, как правило, жизненный цикл частей совпадает с циклом целого: они живут и умирают вместе с ним. Любое удаление целого распространяется на его части.

    Такое каскадное удаление нередко рассматривается как часть определения агрегации, однако оно всегда подразумевается в том случае, когда множественность роли составляет 1..1; например, если необходимо удалить Клиента, то это удаление должно распространиться и на Заказы (и, в свою очередь, на Строки заказа).

    Язык UML - это графический язык моделирования общего назначения, предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых при разработке программных систем.

    Существует много хороших книг в которых описано в деталях про UML (местами даже очень подробно), мне хотелось бы собрать в одном месте основные понятия про диаграммы, сущности и связи между ними для быстрого вспоминания, что-то наподобие шпаргалки.

    В заметке используется материалы из книжек: Иванов Д. Ю., Новиков Ф. А. Унифицированный язык моделирования UML и Леоненков. Самоучитель по UML .

    Для начала определимся с редактором. Под Linux я перепробовал разные UML-редакторы, больше всего мне понравился UMLet , хоть он и написан на Java но шевелится весьма проворно и большинство заготовок сущностей в нем есть. Еще есть ArgoUML кроссплатформенный UML-редактор, написан тоже на Java, функционально-богат но подтормаживает больше.

    Я остановился на UMLet , установим его под Arch Linux и Ubuntu :

    # под Arch Linux yaourt -S umlet # под Ubuntu sudo apt-get install umlet

    В UML все сущности можно разбить на такие типы:

    • структурные;
    • поведенческие;
    • группирующие;
    • аннотационные;

    В UML используются четыре основных типа отношений:

    Зависимость (dependency) - указывает на то, что изменение независимой сущности каким-то образом влияет на зависимую сущность. Графически отношение зависимости изображается в виде пунктирной линии со стрелкой, направленной от зависимой сущности к независимой.

    Ассоциация (association) - имеет место, если одна сущность непосредственно связана с другой (или с другими - ассоциация может быть не только бинарной). Графически ассоциация изображается в виде сплошной линии с различными дополнениями, соединяющей связанные сущности.

    Обобщение (generalization) - это отношение между двумя сущностями, одна из которых является частным (специализированным) случаем другой. Графически обобщение изображается в виде линии с треугольной не закрашенной стрелкой на конце, направленной от частного (подкласса) к общему (суперклассу).

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

    В UML 2 определено 13 типов диаграмм. По стандартам каждая диаграмма должна иметь рамку с прямоугольником (правый нижний угол скошенный) в левом верхнем углу, в котором указывается идентификатор диаграммы (тег) и название.

    Диаграммы для изображения структуры системы :

    • Диаграмма компонентов (component diagram, тег component );
    • Диаграмма размещения (deployment diagram, тег deployment );
    • Диаграмма классов (class diagram, тег class );
    • Диаграмма объектов (object diagram, тег object );
    • Диаграмма структуры внутренней (composite structure diagram, тег class );

    Диаграммы для изображения поведения системы :

    • Диаграмма синхронизации (interaction diagram, тег timing );
    • Диаграмма деятельности (activity diagram, тег activity );
    • Диаграмма последовательности (sequence diagram, тег sd );
    • Диаграмма коммуникации (communication diagram, тег comm );
    • Диаграмма автомата (state machine diagram, тег state machine );
    • Обзорная диаграмма взаимодействия (interaction overview diagram, тег interaction );

    Особняком стоят диаграммы:

    • Диаграмма использования(use case diagram, тег use case);
    • Диаграмма пакетов (package diagram, тег package );

    Диаграмма использования

    Диаграмма использования (use case diagram) - это наиболее общее представление функционального назначения системы.

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

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

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

    Отношение расширения - определяет взаимосвязь экземпляров отдельного варианта использования с более общим вариантом, свойства которого определяются на основе способа совместного объединения данных экземпляров. Так, если имеет место отношение расширения от варианта использования А к варианту использования В, то это означает, что свойства экземпляра варианта использования В могут быть дополнены благодаря наличию свойств у расширенного варианта использования А.

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

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

    Графически данное отношение обозначается сплошной линией со стрелкой в форме не закрашенного треугольника, которая указывает на родительский вариант использования.

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

    Отношение включения между двумя вариантами использования указывает, что некоторое заданное поведение для одного варианта использования включается в качестве составного компонента в последовательность поведения другого варианта использования.

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

    Графически данное отношение обозначается пунктирной линией со стрелкой (вариант отношения зависимости), направленной от базового варианта использования к включаемому.

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

    Диаграмма классов (class diagram) - основной способ описания статической структуры системы.

    На диаграмме классов применяется один основной тип сущностей: классы (включая многочисленные частные случаи классов: интерфейсы, примитивные типы, классы-ассоциации и т.д.), между которыми устанавливаются следующие основные типы отношений: зависимости, ассоциации, обобщения, реализации.

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

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

    Над стрелкой могут находится специальные ключевые слова (стереотипы):

    • "access" - служит для обозначения доступности открытых атрибутов и операций класса-источника для классов-клиентов;
    • "bind" - класс-клиент может использовать некоторый шаблон для своей последующей параметризации;
    • "derive" - атрибуты класса-клиента могут быть вычислены по атрибутам класса-источника;
    • "import" - открытые атрибуты и операции класса-источника становятся частью класса-клиента, как если бы они были объявлены непосредственно в нем;
    • "refine" - указывает, что класс-клиент служит уточнением класса-источника в силу причин исторического характера, когда появляется дополнительная информация в ходе работы над проектом.

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

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

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

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

    Диаграмма автомата

    Диаграмма автомата (state machine diagram) или диаграмма состояний в UML 1 (state chart diagram) - это один из способов детального описания поведения в UML. В сущности, диаграммы автомата, как это следует из названия, представляют собой граф состояний и переходов конечного автомата нагруженный множеством дополнительных деталей и подробностей.

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

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

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

    Конечное (финальное) состояние представляет собой частный случай состояния, которое также не содержит никаких внутренних действий (псевдосостояния). В этом состоянии будет находиться объект по умолчанию после завершения работы автомата в конечный момент времени.

    Диаграмма деятельности

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

    Диаграмма деятельности (activity diagram) - еще один способ описания поведения, который визуально напоминает старую добрую блок-схему алгоритма. Используется для моделирования процесса выполнения операций.

    Основным направлением использования диаграмм деятельности является визуализация особенностей реализации операций классов, когда необходимо представить алгоритмы их выполнения.

    На диаграмме деятельности применяют один основной тип сущностей - действие, и один тип отношений - переходы (передачи управления). Также используются такие конструкции как развилки, слияния, соединения, ветвления. Рекомендуется в качестве имени простого действия использовать глагол с пояснительными словами.

    Диаграмма последовательности

    Диаграмма последовательности (sequence diagram) - это способ описания поведения системы "на примерах".

    Фактически, диаграмма последовательности - это запись протокола конкретного сеанса работы системы (или фрагмента такого протокола). В объектно-ориентированном программировании самым существенным во время выполнения является пересылка сообщений между взаимодействующими объектами. Именно последовательность посылок сообщений отображается на данной диаграмме, отсюда и название.

    На диаграмме последовательности применяют один основной тип сущностей - экземпляры взаимодействующих классификаторов (в основном классов, компонентов и действующих лиц), и один тип отношений - связи, по которым происходит обмен сообщениями.

    Возможные виды сообщений (изображение взято у larin.in):

    Диаграмма коммуникации

    Диаграмма коммуникации (communication diagram) - способ описания поведения, семантически эквивалентный диаграмме последовательности. Фактически, это такое же описание последовательности обмена сообщениями взаимодействующих экземпляров классификаторов, только выраженное другими графическими средствами.

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

    Диаграмма компонентов

    Диаграмма компонентов (component diagram) - показывает взаимосвязи между модулями (логическими или физическими), из которых состоит моделируемая система.

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

    • реализации между компонентами и интерфейсами (компонент реализует интерфейс);
    • зависимости между компонентами и интерфейсами (компонент использует интерфейс);

    Диаграмма размещения

    Диаграмма размещения (deployment diagram) наряду с отображением состава и связей элементов системы показывает, как они физически размещены на вычислительных ресурсах во время выполнения.

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

    Диаграмма объектов

    Диаграмма объектов (object diagram) - является экземпляром диаграммы классов.

    На диаграмме объектов применяют один основной тип сущностей: объекты (экземпляры классов), между которыми указываются конкретные связи (чаще всего экземпляры ассоциаций). Диаграммы объектов имеют вспомогательный характер - по сути это примеры (можно сказать, дампы памяти), показывающие, какие имеются объекты и связи между ними в некоторый конкретный момент функционирования системы.

    Диаграмма внутренней структуры (composite structure diagram) используется для более подробного представления структурных классификаторов, прежде всего классов и компонентов.

    Структурный классификатор изображается в виде прямоугольника, в верхней части которого находится имя классификатора. Внутри находятся части (parts). Частей может быть несколько. Части могут взаимодействовать друг с другом. Это обозначается с помощью соединителей (connectors) различных видов. Место на внешней границе части, к которому присоединяется соединитель, называется портом (port). Порты располагаются также на внешней границе структурного классификатора.

    Обзорная диаграмма взаимодействия (interaction overview diagram) является разновидностью диаграммы деятельности с расширенным синтаксисом: в качестве элементов обзорной диаграммы взаимодействия могут выступать ссылки на взаимодействия (interaction use), определяемые диаграммами последовательности.

    Диаграмма синхронизации

    Диаграмма синхронизации (timing diagram) представляет собой особую форму диаграммы последовательности, на которой особое внимание уделяется изменению состояний различных экземпляров классификаторов и их временной синхронизации.

    Диаграмма пакетов

    Диаграмма пакетов (package diagram) - единственное средство, позволяющее управлять сложностью самой модели.

    Основные элементы нотации - пакеты и зависимости с различными стереотипами.

    Модель сущность-связь (ER-модель)

    Аналогом диаграммы классов (UML) может быть ER-модель , которая используется при проектировании баз-данных (реляционной модели).

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

    Любой фрагмент предметной области может быть представлен как множество сущностей, между которыми существует некоторое множество связей.

    Основные понятия:

    Сущность (entity) - это объект, который может быть идентифицирован неким способом, отличающим его от других объектов, например, КЛИЕНТ 777 . Сущность фактически представляет из себя множество атрибутов.

    Набор сущностей (entity set) - множество сущностей одного типа (обладающих одинаковыми свойствами).

    Связь (relationship) - это ассоциация, установленная между несколькими сущностями.

    Домен (domain) - множество значений (область определения) атрибута.

    Существует три типа бинарных связей:

    • один к одному - одиночный экземпляр сущности одного класса связан с одиночным экземпляром сущности другого класса, напимер, НАЧАЛЬНИК - ОТДЕЛ;
    • 1 к N или один ко многим - одиночный экземпляр сущности одного класса связан со многими экземплярами сущности другого класса, например, ОТДЕЛ - СОТРУДНИК;
    • N к M или многие ко многим - многие экземпляры сущности одного класса связаны со многими экземплярами сущности другого класса, например, СОТРУДНИК - ПРОЕКТ;
    • Словарь основных понятий по UML

      Объект (object) - сущность, обладающая уникальностью и инкапсулирующая в себе состояние и поведение.

      Класс (class) - описание множества объектов с общими атрибутами, определяющими состояние, и операциями, определяющими поведение.

      Интерфейс (interface) - именованное множество операций, определяющее набор услуг, которые могут быть запрошены потребителем и предоставлены поставщиком услуг.

      Кооперация (collaboration) - совокупность объектов, которые взаимодействуют для достижения некоторой цели.

      Действующее лицо (actor) - сущность, находящаяся вне моделируемой системы и непосредственно взаимодействующая с ней.

      Компонент (component) - модульная часть системы с четко определенным набором требуемых и предоставляемых интерфейсов.

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

      Узел (node) - вычислительный ресурс, на котором размещаются и при необходимости выполняются артефакты.

      Поведенческие сущности предназначены для описания поведения. Основных поведенческих сущностей всего две: состояние и действие.

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

      Действие (action) - примитивное атомарное вычисление.

      Автомат является пакетом, в котором определено множество понятий, необходимых для представления поведения моделируемой сущности в виде дискретного пространства с конечным числом состояний и переходов.

      Классификатор (classifier) - это дескриптор множества однотипных объектов.

      Дополнительное чтиво

      • Фаулер М. UML. Основы, 3-е издание
      • Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя

    UML - это аббревиатура, обозначающая Unified Modeling Language. Фактически, это один из самых популярных методов моделирования бизнес-процессов, являющийся международной стандартной нотацией для указания, визуализации и документирования разработки ПО. Определенный группой управления объектами, появился, как результат нескольких дополнительных систем нотаций UML и теперь стал стандартом де-факто для визуального моделирования. Основополагающий принцип любого объектно-ориентированного программирования начинается с построения модели.

    UML был создан в результате хаоса вокруг разработки ПО и документации. В 1990-х годах было несколько различных способов представления программных систем. Появилась потребность в более унифицированном способе visual UML представления этих систем, и в результате в 1994-1996 годах он был разработан тремя инженерами-программистами, работающими в Rational Software. Позднее он был принят в виде стандарта в 1997 году и до сих пор остается им, получив всего лишь несколько обновлений.

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

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

    UML предназначен для разработки пользователями языка визуального моделирования. Он поддерживает концепции высокого уровня разработки, такие как структуры, шаблоны и совместные работы. UML - это набор элементов, таких как:

    1. Заявления о языке программирования.
    2. Актеры - расписывают роль, которую играет пользователь или любая другая система, взаимодействующая с объектом.
    3. Мероприятия, которые должны выполняться по исполнению рабочего контракта и быть представлены в диаграммах.
    4. Бизнес-процесс, включающий в себя набор задач, создающих конкретный сервис для клиентов, визуализируемый блок-схемою последовательных действий.
    5. Логические и многоразовые программные компоненты.

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

    UML-диаграммы представлены в виде статических и динамических представлений системной модели. Статический вид включает диаграммы классов и составной структуры, которые подчеркивают статическую структуру. Динамический вид представляет собой взаимодействие между объектами и изменениями внутренних состояний объектов, используя диаграммы последовательности, активности и состояний.

    Для упрощения моделирования доступны самые разнообразные инструменты моделирования UML, включая IBM Rose, Rhapsody, MagicDraw, StarUML, ArgoUML, Umbrello, BOUML, PowerDesigner и Dia.

    Использование UML имеет различные виды и в документации по разработке программного обеспечения, и в бизнес-процессах:

    1. Эскиз. В этом случае UML-диаграммы используются для передачи различных аспектов и характеристик системы. Однако это только представление верхнего уровня системы и, скорее всего, не будет включать все необходимые детали для выполнения проекта до самого конца.
    2. Forward Design - дизайн эскиза выполняется до кодирования приложения. Это делается для лучшего обзора системы или рабочего процесса, который пользователь пытается создать. Многие проблемы дизайна или недостатки могут быть выявлены, что улучшит общее состояние здоровья и благополучия проекта.
    3. Обратный дизайн. После написания кода диаграммы UML отображаются как форма документации для разных действий, ролей, участников и рабочих процессов.
    4. Светокопия. В этом случае диаграмма служит полной конструкцией, которая требует исключительно фактической реализации системы или программного обеспечения. Часто это делается с помощью инструментов CASE (Computer Aided Software Engineering Tools). Основным недостатком использования инструментов CASE является то, что они требуют определенного уровня знаний, обучения пользователей, а также управления и персонала.

    UML не является автономным языком программирования, как Java, C ++ или Python, однако с правильными инструментами он может превратиться в язык UML псевдопрограмм. Для достижения этой цели вся система должна быть документирована в разных диаграммах, и, используя правильное программное обеспечение, диаграммы могут быть непосредственно переведены в код. Этот метод может быть полезен только в том случае, если время, затрачиваемое на рисование диаграмм, займет меньше времени, чем написание фактического кода. Несмотря на то, что UML был создан для моделирования систем, он нашел несколько применений в бизнес-областях.

    Ниже приводится пример UML-диаграммы для моделирования бизнеса.

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

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

    Разные типы разбиваются следующим образом:

    1. Не все из 14 различных типов UML-диаграмм используются на регулярной основе при документировании систем и архитектур.
    2. Принцип Парето, применяется и в отношении использования диаграмм UML.
    3. 20 % диаграмм используются разработчиками в 80 % случаев.

    Наиболее часто используемые элементы в разработке программного обеспечения:

    • диаграммы использования;
    • диаграммы классов;
    • последовательности.

    Диаграммы действий - наиболее важными диаграммами UML для создания моделей бизнес-процессов. В разработке ПО они применяются для описания потока различных действий. Они могут быть как последовательными, так и параллельными. Они описывают объекты, используемые, потребляемые или произведенные в результате деятельности и взаимосвязь между различными видами деятельности.

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

    Диаграмма использования

    Краеугольная часть системы - применяются для анализа требований к уровню системы. Эти требования выражаются в разных вариантах использования. Три основных компонента диаграммы UML - это:

    1. Функциональные - представлены в качестве вариантов использования.
    2. Глагол, описывающий действие.
    3. Актеры - для взаимодействия с системой. В роли актера могут быть пользователи, организации или внешней заявкой. Отношения между участниками представляются прямыми стрелками.

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

    Этот тип диаграмм хорошо подходит для отображения динамического поведения между участниками в системе, упрощая ее представление не отражая детали реализации.

    Временная

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

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

    Основными компонентами временной диаграммы являются:

    1. Lifeline - индивидуальный участник.
    2. Временная шкала состояния - единственный жизненный путь может проходить через различные состояния внутри процесса.
    3. Ограничение продолжительности - ограничение временного интервала, которое представляет продолжительность необходимого для выполнения ограничения.
    4. Ограничение по времени - ограничение временного интервала, в течение которого что-то должно выполняться участником.
    5. Появление разрушения - появление сообщения, которое уничтожает отдельного участника и изображает конец жизненного цикла этого участника.

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

    Очень простая диаграмма состояния машины была бы в шахматной игре. Типичная шахматная игра состоит из ходов, сделанных Белыми, и движений, сделанных Черными. У Белых есть первый ход, что таким образом инициирует игру. Завершение игры может происходить независимо от того, побеждают ли Белые или Черные. Игра может закончиться матчем, отставкой или ничьей (разные состояния машины). Statecharts находят применение в основном в прямом и обратном UML проектировании различных систем.

    Последовательные

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

    Чтобы получить более полную информацию, можно рассмотреть пример диаграммы последовательности UML ниже.

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

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

    Более конкретно, каждый класс имеет 3 поля: имя вверху, атрибуты прямо под именем, операции/поведение внизу. Связь между различными классами (представленная соединительной линией) составляет диаграмму классов. В приведенном выше примере показана базовая диаграмма классов.

    Объектов

    Когда обсуждают структурные диаграммы UML, нужно углубиться в понятия, связанные с информатикой. В разработке программного обеспечения классы рассматриваются, как абстрактные типы данных, тогда как объекты являются экземплярами Например, если есть «Автомобиль», который является общим абстрактным типом, то экземпляром класса «Автомобиль» будет «Ауди».

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

    Развертывания

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

    Типичная упрощенная схема развертывания для веб-приложения будет включать:

    1. Узлы (сервер приложений и сервер баз данных).
    2. Артефакты схема клиентского приложения и базы данных.

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

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

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

    Они обычно делятся на следующие основные категории:

    1. Бумага и ручка - это легко. Берется бумага и ручка, открывается синтаксический код UML из Интернета и рисуется любой тип диаграммы, который нужен.
    2. Онлайн-инструменты - существует несколько онлайн-приложений, которые можно использовать для создания диаграммы. Большинство из них предлагают платную подписку или ограниченное количество диаграмм на свободном уровне.
    3. Бесплатные онлайн-инструменты - это почти то же самое, что и платные. Основное различие заключается в том, что платные также предлагают учебные пособия и готовые шаблоны для конкретных диаграмм.
    4. Настольное приложение - типичное настольное приложение для использования для диаграмм и почти любая другая диаграмма - это Microsoft Visio. Он предлагает расширенные возможности и функциональность. Единственным недостатком является то, что нужно заплатить за это.

    Таким образом, совершенно очевидно, что UML - важный аспект, связанный с разработкой объектно-ориентированного ПО. Он использует графическую нотацию для создания визуальных моделей системных программ.

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

    Зачем она нужна?

    Применение UML не заканчивается на моделировании всевозможного ПО. Также данный язык активно сегодня используется для моделирования различных бизнес-процессов, ведения системного проектирования, а также отображения организационных структур.

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

    Также стоит отметить, что есть несколько видов таких диаграмм.

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

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

    Стоит отметить тот факт, что есть несколько точек зрения на построение таких диаграмм в зависимости от того, каким образом они будут использоваться:

    • Концептуальная. В данном случае диаграмма классов UML осуществляет описание модели определенной предметной области, и в ней предусматриваются только классы прикладных объектов.
    • Специфическая. Диаграмма используется в процессе проектирования различных информационных систем.
    • Реализационная. Диаграмма классов включает в себя всевозможные классы, которые непосредственно используются в программном коде.

    Диаграмма компонентов

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

    Диаграмма композитной/составной структуры

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

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

    Стоит отметить, что одновременно могут использоваться виды диаграмм UML классов и композитной структуры.

    Диаграмма развертывания

    Данная диаграмма используется для того, чтобы моделировать работающие узлы, а также всевозможные артефакты, которые на них были развернуты. В UML 2 на различных узлах осуществляется разворачивание артефактов, в то время как в первой версии разворачивались исключительно компоненты. Таким образом, диаграмма развертывания UML используется преимущественно ко второй версии.

    Между артефактом и тем компонентом, который он реализует, формируется зависимость манифестации.

    Диаграмма объектов

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

    Диаграмма пакетов

    Эта диаграмма носит структурный характер, и основным ее содержанием являются всевозможные пакеты, а также отношения между ними. В данном случае нет никакого жесткого разделения между несколькими структурными диаграммами, вследствие чего их использование чаще всего встречается исключительно для удобства, и никакого семантического значения в себе не несет. Стоит отметить, что различные элементы могут предоставлять другие UML диаграммы (примеры: пакеты и сами диаграммы пакетов).

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

    Диаграмма деятельности

    Диаграмма деятельности UML отображает разложение определенной деятельности на несколько составных частей. В данном случае понятием «деятельность» называется спецификация определенного исполняемого поведения в виде параллельного, а также координированного последовательного выполнения различных подчиненных элементов - вложенных типов деятельности и различных действий, объединенных потоками, идущими от выходов определенного узла к входам другого.

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

    Диаграмма автомата

    Этот вид называется и несколько иначе - диаграмма состояний UML. Имеет представленный конечный автомат с простыми и композитными состояниями, а также переходами.

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

    В качестве аналогов таких диаграмм могут использоваться так называемые дракон-схемы.

    Диаграммы сценариев использования

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

    Если диаграмма вариантов использования UML используется в процессе моделирования системы, то аналитик собирается:

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

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

    Коммуникации

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

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

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

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

    Диаграмма последовательности

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

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

    Диаграмма сотрудничества

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

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

    Диаграммы обзора взаимодействия

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

    Стоит отметить тот факт, что данный формат объединяет в себе Collaboration и Sequence diagram, которые предоставляют возможность с разных точек зрения рассматривать взаимодействие между несколькими объектами в формируемой системе.

    Диаграмма синхронизации

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

    В чем преимущества?

    Стоит отметить несколько преимуществ, которыми отличается UML диаграмма пользования и другие:

    • Язык является объектно-ориентированным, вследствие чего технологии описания результатов проведенного анализа и проектирования являются семантически близкими к методам программирования на всевозможных объектно-ориентированных языках современного типа.
    • При помощи данного языка система может быть описана практически с любых возможных точек зрения, и точно так же описываются различные аспекты ее поведения.
    • Все диаграммы являются сравнительно простыми для чтения даже после относительно быстрого ознакомления с его синтаксисом.
    • UML позволяет расширить, а также вводить собственные графические и текстовые стереотипы, что способствует его использованию не только в программной инженерии.
    • Язык получил достаточно широкое распространение, а также довольно активно развивается.

    Недостатки

    Несмотря на то что построение UML-диаграмм отличается массой своих плюсов, довольно часто их и критикуют за следующие недостатки:

    • Избыточность. В преимущественном большинстве случаев критики говорят о том, что UML является слишком большим и сложным, и зачастую это неоправданно. В него входит достаточно много избыточных или же практически бесполезных конструкций и диаграмм, причем наиболее часто подобная критика идет в адрес второй версии, а не первой, потому что в более новых ревизиях присутствует большее количество компромиссов «разработанных комитетом».
    • Различные неточности в семантике. По той причине, что UML определяется комбинацией себя, английского и OCL, у него отсутствует скованность, которая является присущей для языков, точно определенных техникой формального описания. В определенных ситуациях абстрактный синтаксис OCL, UML и английский начинают друг другу противоречить, в то время как в других случаях они являются неполными. Неточность описания самого языка одинаково отражается как на пользователях, так и на поставщиках инструментов, что в конечном итоге приводит к несовместимости инструментов из-за уникального способа трактовки различных спецификаций.
    • Проблемы в процессе внедрения и изучения. Все указанные выше проблемы создают определенные сложности в процессе внедрения и изучения UML, и в особенности это касается тех случаев, когда руководство заставляет инженеров насильно его использовать, в то время как у них отсутствуют предварительные навыки.
    • Код отражает код. Еще одним мнением является то, что важность имеют не красивые и привлекательные модели, а непосредственно рабочие системы, то есть код и есть проект. В соответствии с данным мнением есть потребность в том, чтобы разработать более эффективный способ написания программного обеспечения. UML принято ценить при подходах, компилирующих модели для регенерирования выполнимого или же исходного кода. Но на самом деле этого может быть недостаточно, потому что в данном языке отсутствуют свойства полноты по Тьюрингу, и каждый сгенерированный код в конечном итоге будет ограничиваться тем, что может предположить или же определить интерпретирующий UML инструмент.
    • Рассогласование нагрузки. Данный термин происходит из теории системного анализа для определения неспособности входа определенной системы воспринять выход иной. Как в любых стандартных системах обозначений, UML может представлять одни системы в более эффективном и кратком виде по сравнению с другими. Таким образом, разработчик больше склоняется к тем решениям, которые являются более комфортными для переплетения всех сильных сторон UML, а также других языков программирования. Данная проблема является более очевидной в том случае, если язык разработки не соответствует основным принципам объектно-ориентированной ортодоксальной доктрины, то есть не старается работать в соответствии с принципами ООП.
    • Пытается быть универсальным. UML представляет собой язык моделирования общего назначения, который старается обеспечить совместимость с любым существующим на сегодняшний день языком обработки. В контексте определенного проекта, для того, чтобы команда проектировщиков смогла добиться конечной цели, нужно выбирать применимые возможности этого языка. Помимо этого возможные пути ограничения сферы использования UML в какой-то определенной области проходят через формализм, который является не полностью сформулированным, а который сам представляет собой объект критики.

    Таким образом, использование данного языка является актуальным далеко не во всех ситуациях.

    Лучшие статьи по теме