Unified Modelling Language (UML)
Файлы
UML: Назначение
-
Анализ требований
-
Проектирование
-
Документирование
UML: Особенности
-
Язык графического описания
-
Стандартные диаграммы
-
Стандартный способ отображения элементов
Типы диаграмм
-
Структурные диаграммы
-
Диаграммы поведения
-
Диаграммы взаимодействия
Структурные диаграммы
-
Диаграмма классов
-
Диаграмма компонентов
-
Диаграмма композитной структуры
-
Диаграмма развертывания
-
Диаграмма объектов
-
Диаграмма пакетов
Диаграммы поведения
-
Диаграмма деятельности
-
Диаграмма состояний
-
Диаграмма вариантов использования
Диаграммы взаимодействия
-
Диаграмма кооперации
-
Диаграмма последовательности
UML: преимущества
-
Объектно-ориентирован
-
Стандартное разностороннее описание системы
-
Простые для понимания диаграммы
-
Динамично развивается
-
Интеграция в RAD-системы
UML: Способы построения
-
Визуальные
- Rational Rose
- MS Visio
- Umbrello
-
WYSIWYM
- WebSequenceDiagrams.com
- PlantUML
MS Visio
Визуальные: Преимущества
-
Наглядное построение
-
Полный контроль над отображением
-
Интеграция с кодом (опционально)
Визуальные: Недостатки
-
Трудоемкое поддержание в актуальном состоянии
-
Сложно отслеживать изменения
-
Сложно организовать коллективную работу
-
Пропириетарные форматы файлов
PlantUML
-
WYSIWYM
-
Текстовое описание элементов UML-диаграмм
-
Открытые инструменты разработки и генерации диаграмм
PlantUML: Диаграмма последовательности
@startuml
Alice -> Bob: Authentication
Request
Bob --> Alice: Authentication
Response
Alice -> Bob: Another request
Alice <-- Bob: Another response
@enduml
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice
Bob ->o Alice
Bob o\\-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml
PlantUML: Диаграмма использования
@startuml
(Start) as Start
(Use the application) as Using
User -> Start
User --> Using : A small label
:Main Admin: ---> Using : This is\nyet
another\nlabel
@enduml
PlantUML: Диаграмма классов
@startuml
interface Product {
+ setName(String name)
+ getName()
}
class ConcreteProduct {
- String name
+ setName(String name)
+ getName()
}
abstract class Creator {
+ Product factoryMethod()
}
class ConcreteCreator {
+ Product factoryMethod()
}
Product <|- ConcreteProduct
Creator <|- ConcreteCreator
ConcreteProduct <.. ConcreteCreator
@enduml
PlantUML: Диаграмма деятельности
@startuml
start
:Прослушать лекции;
:Выполнить лабораторные работы;
repeat
:Подготовиться к экзамену;
if (Есть допуск?) then
:Прийти на экзамен;
endif
repeat while (Как экзамен?) is (:()
stop
@enduml
PlantUML: Диаграмма компонентов
@startuml
package "Some Group" {
HTTP - [First Component]
[Another Component]
}
node "Other Groups" {
FTP - [Second Component]
[First Component] --> FTP
}
cloud {
[Example 1]
}
database "MySql" {
folder "This is my folder" {
[Folder 3]
}
frame "Foo" {
[Frame 4]
}
}
[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]
@enduml
PlantUML: Диаграмма состояний
@startuml
[*] --> NotShooting
state "Not Shooting State" as NotShooting {
state "Idle mode" as Idle
state "Configuring mode" as Configuring
[*] --> Idle
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
}
note right of NotShooting : This is a\nnote on a
composite state
@enduml
PlantUML: Диаграмма развертывания
@startuml
node "<<device>>\nWeb Server" as
WebServer {
artifact Website
}
node "<<device>>\n:DB Server" as
DbServer {
artifact "MySQL DB"
}
node "<<device>>\n:User Client" as
UserClient {
node "<<device>>\nBrowser" {
artifact "HTML 5"
}
}
WebServer –- DbServer
WebServer -- UserClient : http:80
@enduml
</device></device></device></device>
PlantUML: Диаграмма объектов
@startuml
object User {
id = 123
name = "John Doe"
}
object AuthToken {
salt = "w34a290sdfh2i8dsf"
secret = "2237w3bed023usdf799"
}
User "1" o-- "1" AuthToken
@enduml
Что использовать?
-
«Серебрянной пули» нет
-
Отталкивайтесь от ваших потребностей