- директивы
@startuml
/@enduml
; - смена направления:
left to right direction
top to bottom direction
- однострочные
skinparam
:skinparam <key> <value>
- однострочные заметки с ключевым словом
note
:note left|right|top|bottom of <node_id> : <string>
note left|right|top|bottom : <string>
- многострочные заметки с ключевым словом
note
:note as <note_id>
...
end note
note left|right|top|bottom of <node_id>
...
end note
- однострочные/многострочные комментарии:
'
...\'
...'\
- пустые строки.
- определение узлов
usecase
:usecase (<name>) as <id>
usecase "<name>" as <id>
- определение узлов
actor
:actor :<name>: as <id>
actor "<name>" as <id>
- ассоциация, включение, расширения, наследование:
<node_id> --> <node_id>
<node_id> <-- <node_id>
<node_id> ..> <node_id> : <<include>>
<node_id> <.. <node_id> : <<include>>
<node_id> ..> <node_id> : <<extend>>
<node_id> <.. <node_id> : <<extend>>
<node_id> --|> <node_id>
<node_id> <|-- <node_id>
<node_id> -[u|d|l|r]-> <node_id>
<node_id> <-[u|d|l|r]- <node_id>
<node_id> -[up|down|left|right]-> <id>
<node_id> <-[up|down|left|right]- <id>
- расширение и к ней точка и условие:
- <пример с использованием заметки>
- группировки
package
/rectangle
:rectangle <group_id> {
...
}
package <group_id> {
...
}
- по умолчанию узлы без определения
actor
.
В нотации РБНФ тут.
Примеры тут.
- определение узлов:
actor <node_nmid>
boundary <node_nmid>
control <node_nmid>
entity <node_nmid>
actor "<node_name>" as <node_id>
boundary "<node_name>" as <node_id>
control "<node_name>" as <node_id>
entity "<node_name>" as <node_id>
- отношения между элементами:
<node_id> -[-]... <node_id>
<node_id> <--> <node_id>
<node_id> --> <node_id>
<node_id> <-- <node_id>
<node_id> -[-]... <node_id> : <string>
<node_id> <--> <node_id> : <string>
<node_id> --> <node_id> : <string>
<node_id> <-- <node_id> : <string>
<node_id> -[u|d|l|r]- <node_id>
<node_id> -[up|down|left|right]- <node_id>
- альтернативные последовательности цветом
#red
:<type> <node_nmid> #red
<type> "<node_name>" as <node_id> #red
- обязательное определение узлов.
В нотации РБНФ тут.
Примеры тут.
Если на диаграмме используются двусторонние стрелки вида
--
или<-->
, то в таком случае, в памяти будут созданы два объекта дуги.
- определение узлов:
actor <node_nmid>
boundary <node_nmid>
control <node_nmid>
entity <node_nmid>
actor "<node_name>" as <node_id>
boundary "<node_name>" as <node_id>
control "<node_name>" as <node_id>
entity "<node_name>" as <node_id>
- отношения между элементами:
<node_id> -[-]... <node_id>
<node_id> --> <node_id>
<node_id> <-- <node_id>
<node_id> -[-]... <node_id> : <string>
<node_id> --> <node_id> : <string>
<node_id> --> <node_id> : <string>
- альтернативные последовательности цветом
#red
:<type> <nmid> #red
<type> "<name>" as <id> #red
- группировки
alt
,opt
,loop
:<alt|opt|loop> [condition]
...
else [condition]
...
end
ref over <id>...
...
end ref
- обязательное определение узлов.
В нотации РБНФ тут.
Примеры тут.
- узлы с типами
class
,interface
иenum
:class <node_nmid> {
...}
interface <node_nmid> {
...}
enum <node_nmid> {
...}
- зависимость, ассоциация, агрегация, композиция, реализация, наследование:
..>
,-->
,--o
,--*
,..|>
,--|>
<..
,<--
,o--
,*--
,<|..
,<|--
-[u|d|l|r]-
.[u|d|l|r].
-[up|down|left|right]-
.[up|down|left|right].
<node_id> <arrow> <node_id>
- функции и данные в узле с типом
class
:[+|-|#]<member_name> : <member_type>
[+|-|#]<member_name>([<member_type>,]...) : <member_type>
- методы в узле с типом
interface
:[+]<member_name>([<member_type>,]...) : <member_type>
- значения в узле с типом
enum
:<enum_value>
- по умолчанию узлы без определения
class
.
В нотации РБНФ тут.
Примеры тут.
- допустимы только односторонние стрелки;
- ...
...
...
PVS-Studio – static analyzer for C, C++, C#, and Java code.
Cppcheck – static analysis tool for C/C++ code.
Valgrind – is a programming tool for memory debugging, memory leak detection, and profiling.
- для связи с окном добавлять дополнительный комментарий - избыточно
- вытаскивать название окна из пути к изображения - решение
- архив всех доп. требований
- диаграмма потока экранов, любой этап построения?
- сначала добавляются макеты, потом строиться диаграмма потока экранов
- ...