Проектирование — процесс определения компонентов, архитектуры, интерфейсов и других характеристик программного продукта или его части. Обычно, проектирование занимает 10–15 % от всего времени разработки. Цель проектирования — выявить отношения между процессами и показать, как процессы преобразуют свои входные данные в выходные.
UML — унифицированный язык моделирования, представляющий из себя систему обозначений, предназначенную для проектировки, моделирования и объектно-ориентированного анализа. UML-диаграммы разделяют на статические и динамические.
– Статические диаграммы состоят из постоянно находящихся в системе сущностей, а также из связей между этими сущностями. К данному виду диаграмм относятся диаграммы: объектов, классов, развертывания и компонентов.
– Динамические диаграммы описывают процессы, происходящие в системе. К этому виду диаграммам относятся диаграммы сценариев, деятельности, состояний и взаимодействия.
Рассмотрим некоторые конкретные виды UML-диаграмм:
- Use-case диаграммы применяются для определения взаимодействия между внешними системами и рассматриваемым проектом. Причем внешней системой может быть человек, компания, удаленный сервер и любое другое ПО.
Такой внешний участник называется актером (actor). Актер взаимодействует с разрабатываемой системой через варианты использования, предоставляемые этой системой.
- Диаграммы последовательностей.
Если необходимо детально описать логику сценариев использования, проектировщик применяет sequence диаграмму. Такая диаграмма наглядно отображает изменение состояния системы с течением времени. В sequence диаграмме присутствует две оси изменения:
1) Слева направо — Изменение вовлечения сущностей во взаимодействие;
2) Сверху вниз — Порядок обмена сообщениями между вовлеченными в процесс сущностями.
Также такая UML-диаграмма хорошо помогает при документировании проекта.
Sequence диаграмма состоит из:
1) Взаимодействующих объектов;
2) Сообщений, которыми они обмениваются.
Иногда, когда возвращаемый результат сообщения не очевиден из контекста, в диаграмме его прописывают явно.
- Диаграммы активностей.
Диаграмма активностей отражает поведение системы и включает в себя деятельности и потоки управления, переходящие между деятельностями. Данная UML-диаграмма применяется для описания алгоритмов и преобразования информации из начального состояния в конечное.
При разработке некрупных проектов может показаться, что данная диаграмма избыточна и лишь отнимет драгоценное время, но с увеличением сложности системы соблюдение последовательности выполняемых операций становится критически важным. Например, нарушение последовательности операций при дефрагментации диска может привести к повреждению важных файлов.
Еще более опасные последствия могут произойти в случае отклонения от установленной последовательности действий при запуске ракеты или при работе сотрудников на АЭС.
Когда необходимо визуализировать особенности реализации операций классов, а также представить алгоритмы их выполнения, рекомендуется применять именно диаграмму активностей.
Такая диаграмма состоит из активностей (беговых дорожек на диаграмме) и потока информации, переходящей между активностями с течением времени.
- Диаграмма классов является неотъемлемой частью практически любого проекта, потому что с ее помощью проектировщик описывает статическую структуру системы, определяет типы объектов и отношения между ними. Данная UML-диаграмма состоит из классов, типов, объединенных в граф с помощью связей.
Под классом понимают какую-либо сущность с определенным уровнем абстракции, объединяющую множество объектов со схожей структурой. В диаграмме класс изображается в виде прямоугольника с тремя секциями: имя, поля и методы класса.
Существует несколько типов отношений между классами, а именно:
1) абстракция;
2) обобщение;
3) зависимость.
- Диаграммы компонентов иразмещений.
Диаграммы компонентов применяются для описания физического представления системы и определяют архитектуру разрабатываемого программного комплекса, установив зависимости между программными компонентами, в роли которых как правило выступает исходный код.
Компоненты реализуют существенно различную функциональность системы и относительно независимы друг от друга, из-за чего их разработку можно поручить разным разработчикам, то есть реализовать разделение коллектива.
Так как компоненты независимы и взаимодействуют друг с другом, они имеют интерфейсы (interfaces), позволяющие скрыть внутреннее устройство и предоставить ограниченный доступ к своим функциям.
Таким образом, UML-диаграммы — обязательный инструмент, используемый при проектировании программных комплексов. А большое количество типов диаграмм позволяет детально проработать каждый аспект системы.
Пример диаграммы компонентов представлен на рис.1.
Рис. 1. Диаграмма компонентов
Литература:
- Диаграмма вариантов использования (Use Case diagram) | Хабр [Электронный ресурс]. — https://habr.com/ru/post/47940/
- Диаграмма активностей (Activity diagram) | Flexberry PLATFORM Documentation [Электронный ресурс]. — https://flexberry.github.io/ru/fd_activity-diagram.html
- Основы UML. Диаграммы последовательностей | Блог программиста [Электронный ресурс]. — https://pro-prof.com/archives/2769
- UML-диаграммы классов: сущности, связи, интерфейсы | Программирование [Электронный ресурс]. — https://prog-cpp.ru/uml-classes/
- Диаграмма компонентов (Component diagram) | Самоучитель UML [Электронный ресурс]. — http://www.telenir.net/uchebniki/samouchitel_uml/p10.php
- Зачем нам UML? Или как сохранить нервы и время | Хабр [Электронный ресурс]. — https://habr.com/ru/post/458680/