ПКС / ПКС. Материалы лекций
.pdfПример UML диаграммы классов (Class) средствами PlantUML 91
@startuml
skinparam classAttributeIconSize 0
abstract class AbstractLogger{
_level :int
# nextLogger : AbstractLogger
+setNext(:AbstractLogger) :void
+{abstract}write(:string) :void
}
class InfoLogger{
+ {abstract}write(:string) :void
}
note bottom of InfoLogger _level = 1
end note
Пример UML диаграммы классов (Class) средствами PlantUML 92
class DebugLogger{ |
|
+ {abstract}write(:string) :void |
ChainPattern down > AbstractLogger : |
} |
<U+003C><use>> |
note bottom of DebugLogger |
InfoLogger .up.> AbstractLogger : |
_level = 2 |
<U+003C><implement>> |
end note |
DebugLogger .up.> AbstractLogger : |
class ErrorLogger{ |
<U+003C><implement>> |
+ {abstract}write(:string) :void |
ErrorLogger .up.> AbstractLogger : |
} |
<U+003C><implement>> |
note bottom of ErrorLogger |
AbstractLogger * > AbstractLogger : |
_level = 3 |
<U+003C><derive>> |
end note |
@enduml |
class ChainPattern{ |
|
_getChain() :AbstractLogger |
|
+ {static}main(args: string[]) |
|
:void |
|
} |
|
UML-диаграмма классов (Class) |
|
93 |
UML-диаграмма коммуникаций (Communication) |
|
94 |
Диаграмма коммуникаций (Communication) устанавливает взаимодействие между «линиями жизни» объектов, при этом последовательность сообщений (между объектами) иерархически нумеруется на схеме.
Основные элементы:
-frame (фрейм) – конструкция, объединяющая объекты, обменивающиеся сообщениями в контексте одной из двух диаграмм:
-- диаграмма последовательности (sd: Sequence diagram) – для одной группы элементов; -- общая диаграмма взаимодействия (ref: Reference diagram) – для нескольких групп элементов (обычно – для всех рассматриваемых групп элементов);
-message (сообщение) показывает взаимосвязь двух объектов, при этом последовательность выполнения действий определяется благодаря многоуровневой нумерации таких взаимосвязей.
Диаграмма коммуникаций появилась в UML 2 в результате переработки диаграммы коллабораций (Collaboration: совместного взаимодействия) из UML 1: объединение групп элементов выполняется с помощью указания «sd» или «ref» (на диаграмме коммуникаций).
UML-диаграмма коммуникаций (Communication) |
95 |
UML-диаграмма коммуникаций (Communication) |
96 |
UML-диаграмма коммуникаций (Communication): пример |
|
97 |
@startuml
frame
'left to right direction
|
|
|
|
|
|
|
|
|
partition "sd \nLog Interactions"{ |
|
|
|
|
|
|
|
|
|
"ChainPattern" --> [ 1: _getChain() ] "InfoLogger" |
|
|
|
|
|
|
|
|
|
"InfoLogger" --> [ 1.1: write() ] "InfoLogger" |
|
|
|
|
|
|
|
|
|
"InfoLogger" --> [ 1.2: setNext() ] "DebugLogger" |
|
|
|
|
|
|
|
|
|
"DebugLogger" --> [ 1.2.1: write() ] "DebugLogger" |
message |
|
|
|
"DebugLogger" --> [ 1.2.2: setNext() ] "ErrorLogger" |
|||||
|
|
|
"ErrorLogger" --> [ 1.2.2.1: write() ] "ErrorLogger" |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"ErrorLogger" --> [ 1.2.3: reply ] "DebugLogger" |
|
|
|
|
|
|
|
|
|
"DebugLogger" --> [ 1.3: reply ] "InfoLogger" |
|
|
|
|
|
|
|
|
|
"InfoLogger" --> [ 2: reply ] "ChainPattern" |
|
|
|
|
|
|
} |
|||
|
|
sd |
|||||||
|
|
|
|
|
|
||||
0. |
|
|
|
|
|
|
|
|
|
|
ChainPattern InfoLogger |
DebugLogger ErrorLogger |
|
||||||
|
|
(*) -right-> [ 0: main() ] "ChainPattern" |
|||||||
|
|
|
1. |
|
1.1. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
"InfoLogger" -down-> [ 3: reply ] (*) |
||
|
|
|
|
|
|
1.2. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@enduml |
|
|
|
|
|
|
|
|
|
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Кафедра информационных управляющих систем
Б1.В.24 «Программирование критических сервисов» для специальностей по направлению 09.03.02 «Информационные системы и технологии»
1.Cервисы программного обеспечения в международных стандартах.
2.Cервисы программного обеспечения в российских стандартах.
3.Критические объекты и процессы программных средств в международных стандартах.
4.Шаблоны проектирования критических сервисов. Часть 1: Шаблоны отображения
блоков и взаимосвязей на диаграмме в PlantUML. Стандарт UML и GoF-стандарт.
5.Программные компоненты для создания критического сервиса на языке Python.
6.Программные решения на основе критических сервисов в задаче развертывания микросервисной архитектуры.
Преподаватель: Параничев Андрей Викторович
Санкт-Петербург 2023
Шаблоны отображения блоков и взаимосвязей на диаграмме в PlantUML |
|
|
99 |
||
|
||
При построении PlantUML-диаграммы различают блоки и элементы взаимодействия |
|
|
для диаграммы последовательности (Sequence) и для остальных диаграмм. |
|
|
-> выполнение действия на диаграмме последовательности (сплошная линия); |
|
|
--> выполнение ответа на действие на диаграмме последовательности (пунктирная линия). |
|
-> -left-> -right-> -top-> -down-> сокращенная взаимосвязь между 2 объектами для остальных диаграмм:
по умолчанию направление взаимосвязи вправо или вниз: -> интерпретируется как -right-> или -down->
--> -left--> -right--> -top--> -down--> стандартная взаимосвязь между 2 объектами для остальных диаграмм;
такие взаимосвязи (-->, ->) прорисовываются сплошной линией; для определения пунктирной линии используется символ «.» ( ..>, .> ).
Для всех диаграмм можно выполнять обозначение взаимосвязи после символа «:» object_a --> object_b : Вызов функции f(a, b)
Для диаграмм последовательности: object_a и object_b должны быть ролевыми объектами; обозначение взаимосвязи рекомендуется указывать в виде функции, например: f(a, b)
Рекомендуется использовать автонумерацию взаимосвязей одного, двух или трех уровней: autonumber 1.1.1 (означает, что 1е действие будет пронумеровано 1.1.1), далее 1.1.2), далее 1.1.3)… ) autonumber inc A (означает, что следующее действие будет 2.1.1), далее 2.1.2), далее 2.1.3)…) autonumber inc B (означает, что следующее действие будет 2.2.1), далее 2.2.2), далее 2.2.3)…)
Шаблоны отображения блоков и взаимосвязей на диаграмме в PlantUML |
100 |
|
Для диаграмм последовательности: object_a и object_b должны быть ролевыми объектами; обозначение взаимосвязи рекомендуется указывать в виде функции, например: f(a, b)
Рекомендуется использовать автонумерацию взаимосвязей одного, двух или трех уровней:
autonumber 1.1.1 (означает, что 1е действие будет пронумеровано 1.1.1), далее 1.1.2), далее 1.1.3)… )
autonumber inc A (означает, что следующее действие будет 2.1.1), далее 2.1.2), далее 2.1.3)…)
autonumber inc B (означает, что следующее действие будет 2.2.1), далее 2.2.2), далее 2.2.3)…)
Для остальных диаграмм: object_a и object_b могут быть любыми объектами соответствующих диаграмм; взаимосвязь может быть удлиненной: тогда указывают ---> или …> (может также указываться направление left, right, top, down).
Для остальных диаграмм используются также следующие спецификации взаимосвязей: