SlideShare a Scribd company logo
1 of 13
PlantUML

Introduction
PlantUML

●

What is PlantUML?
● Why use it?
● Where to use it?
What is PlantUML?
PlantUML is a component that allows you to quickly write
UML diagrams.
It uses a simple and intuitive language to “write” the
diagrams.
The core component is a java jar and can be easly
integrated in other software.
Why use it?
Maintaining (UML) documentation can be a tedious task.
Separated diagramming tools are often separated from
developments tools. PlantUML can be an integral part of
the tools we love to use.
“Writing” the diagrams is a big advantage over drawing
them, mainly because the speed. It's almost like
programming.
Where to use it?
PlantUML

Use case diagrams
●Sequence diagrams
●Class diagrams
●
Use case diagrams
' options
title Order intake flow
left to right direction
' actors
Actor API as A
Actor Customer as C
Actor MQ
' relations
C --|> A
' package
package CINCO {
' Use cases
A -> (Choose package)
(Choose package) ..> (Choose options)
A -> (Submit order) : Customer Submits order
(Handle order) <- MQ
}
Use case diagrams
' options
title Order intake flow
left to right direction
skinparam usecase {
BackgroundColor DarkSeaGreen
BorderColor DarkSlateGray

}

ArrowColor OZlive
ActorBorderColor black
ActorFontName Courier

' actors
Actor API as A
Actor Customer as C
Actor MQ
' relations
C --|> A
' package
package CINCO {
' Use cases
Use case diagrams
' options
title Order intake flow
left to right direction
' actors
Actor API as A
Actor Customer as C
Actor MQ
' relations
C --|> A
' package
package CINCO {
' Use cases
A -> (Choose package)
(Choose package) ..> (Choose options)
A -> (Submit order) : Customer Submits order
(Handle order) <- MQ
}
Sequence diagrams
Actor Client
control Api
control MQ
Actor Consumer
Client -> Api:placeOrder(order)
Api
Api
Api
Api

->
->
->
->

MQ:connect()
MQ:channel('orders')
MQ:put(order)
MQ:disconnect()

Consumer -> MQ:connect()
Consumer -> MQ:watch('orders')
loop while(true)
Consumer -> MQ:reserve()
Consumer -> Biblio.Utils.OrderHelper:processOrder(order)
alt Success
Consumer -> MQ:delete()
else failed
Consumer -> MQ:release()
end
end
Consumer -> MQ:disconnect()
Class diagrams
interface iCommand {
+can(transition)
+execute()
}
abstract Command {
-options : []
-__construct(options)
+factory(options) : Command
}
iCommand <|.. Command
Command <|-- Null
Command <|-- Bevestiging
Command <|-- Go
Command <|-- Wacht
Command <|-- Introductie
Class diagrams
iCommand <|.. Command
Command <|-- Null
Command <|-- Bevestiging
Command <|-- Go
Command <|-- Wacht
Command <|-- Introductie
Command <|-- Extra1
Command <|-- Extra2
Command <|-- Extra3
Command <|-- Extra4
Command <|-- Extra5
Command <|-- Extra6
Command <|-- Extra7
Command <|-- Extra8
Command <|-- Extra9
Command <|-- Extra10
Class diagrams
iCommand <|.. Command
hide members
show Command members
show iCommand methods
Null -right-|> Command
Bevestiging -right-|> Command
Go -right-|> Command
Wacht -right-|> Command
Introductie -right--|> Command
Extra1 -down-|> Command
Extra2 -down--|> Command
Extra3 -down-|> Command
Extra4 -up-|> Command
Extra5 -up--|> Command
Extra6 -up---|> Command
Extra7 -up--|> Command
Extra8 -up---|> Command
Extra9 -up--|> Command
Extra10 -up-|> Command

More Related Content

What's hot

If You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are WrongIf You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are Wrong
Mario Fusco
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
洪 鹏发
 

What's hot (20)

Introduction to OOP(in java) BY Govind Singh
Introduction to OOP(in java)  BY Govind SinghIntroduction to OOP(in java)  BY Govind Singh
Introduction to OOP(in java) BY Govind Singh
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Ooad sequence diagram lecture
Ooad sequence diagram lectureOoad sequence diagram lecture
Ooad sequence diagram lecture
 
Sequence diagram- UML diagram
Sequence diagram- UML diagramSequence diagram- UML diagram
Sequence diagram- UML diagram
 
Oop java
Oop javaOop java
Oop java
 
Declarative UIs with Jetpack Compose
Declarative UIs with Jetpack ComposeDeclarative UIs with Jetpack Compose
Declarative UIs with Jetpack Compose
 
Hibernate architecture
Hibernate architectureHibernate architecture
Hibernate architecture
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
UML Diagrams
UML DiagramsUML Diagrams
UML Diagrams
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
 
Spring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutesSpring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutes
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Lambda Expressions in Java
Lambda Expressions in JavaLambda Expressions in Java
Lambda Expressions in Java
 
If You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are WrongIf You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are Wrong
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
Java Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and ExampleJava Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and Example
 
From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modeling
 

Similar to PlantUML introduction

R Programming Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
R Programming  Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfdR Programming  Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
R Programming Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
vaibhavkandalkar2
 

Similar to PlantUML introduction (20)

Qt Quick in depth
Qt Quick in depthQt Quick in depth
Qt Quick in depth
 
Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Machine learning on streams of data
Machine learning on streams of dataMachine learning on streams of data
Machine learning on streams of data
 
Unit 7 Java
Unit 7 JavaUnit 7 Java
Unit 7 Java
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 DevelopersFunctional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
 
AUTOCAD RAHUL
AUTOCAD  RAHULAUTOCAD  RAHUL
AUTOCAD RAHUL
 
Java applet
Java appletJava applet
Java applet
 
R Programming Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
R Programming  Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfdR Programming  Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
R Programming Magrittrdfgdfsgfdgfdgfdgfdsg fsd gdfsgdf gdf gdfsgfd
 
fUML-Driven Design and Performance Analysis of Software Agents for Wireless S...
fUML-Driven Design and Performance Analysis of Software Agents for Wireless S...fUML-Driven Design and Performance Analysis of Software Agents for Wireless S...
fUML-Driven Design and Performance Analysis of Software Agents for Wireless S...
 
cp.docx
cp.docxcp.docx
cp.docx
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & Answers
 
Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2
 
Introduction To Programming with Python
Introduction To Programming with PythonIntroduction To Programming with Python
Introduction To Programming with Python
 
Java 8 - functional features
Java 8 - functional featuresJava 8 - functional features
Java 8 - functional features
 
Summer training matlab
Summer training matlab Summer training matlab
Summer training matlab
 
Summer training matlab
Summer training matlab Summer training matlab
Summer training matlab
 
AngularJS Best Practices
AngularJS Best PracticesAngularJS Best Practices
AngularJS Best Practices
 
In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QML
 

Recently uploaded

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
Muhammad Subhan
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (20)

WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 

PlantUML introduction

  • 2. PlantUML ● What is PlantUML? ● Why use it? ● Where to use it?
  • 3. What is PlantUML? PlantUML is a component that allows you to quickly write UML diagrams. It uses a simple and intuitive language to “write” the diagrams. The core component is a java jar and can be easly integrated in other software.
  • 4. Why use it? Maintaining (UML) documentation can be a tedious task. Separated diagramming tools are often separated from developments tools. PlantUML can be an integral part of the tools we love to use. “Writing” the diagrams is a big advantage over drawing them, mainly because the speed. It's almost like programming.
  • 6. PlantUML Use case diagrams ●Sequence diagrams ●Class diagrams ●
  • 7. Use case diagrams ' options title Order intake flow left to right direction ' actors Actor API as A Actor Customer as C Actor MQ ' relations C --|> A ' package package CINCO { ' Use cases A -> (Choose package) (Choose package) ..> (Choose options) A -> (Submit order) : Customer Submits order (Handle order) <- MQ }
  • 8. Use case diagrams ' options title Order intake flow left to right direction skinparam usecase { BackgroundColor DarkSeaGreen BorderColor DarkSlateGray } ArrowColor OZlive ActorBorderColor black ActorFontName Courier ' actors Actor API as A Actor Customer as C Actor MQ ' relations C --|> A ' package package CINCO { ' Use cases
  • 9. Use case diagrams ' options title Order intake flow left to right direction ' actors Actor API as A Actor Customer as C Actor MQ ' relations C --|> A ' package package CINCO { ' Use cases A -> (Choose package) (Choose package) ..> (Choose options) A -> (Submit order) : Customer Submits order (Handle order) <- MQ }
  • 10. Sequence diagrams Actor Client control Api control MQ Actor Consumer Client -> Api:placeOrder(order) Api Api Api Api -> -> -> -> MQ:connect() MQ:channel('orders') MQ:put(order) MQ:disconnect() Consumer -> MQ:connect() Consumer -> MQ:watch('orders') loop while(true) Consumer -> MQ:reserve() Consumer -> Biblio.Utils.OrderHelper:processOrder(order) alt Success Consumer -> MQ:delete() else failed Consumer -> MQ:release() end end Consumer -> MQ:disconnect()
  • 11. Class diagrams interface iCommand { +can(transition) +execute() } abstract Command { -options : [] -__construct(options) +factory(options) : Command } iCommand <|.. Command Command <|-- Null Command <|-- Bevestiging Command <|-- Go Command <|-- Wacht Command <|-- Introductie
  • 12. Class diagrams iCommand <|.. Command Command <|-- Null Command <|-- Bevestiging Command <|-- Go Command <|-- Wacht Command <|-- Introductie Command <|-- Extra1 Command <|-- Extra2 Command <|-- Extra3 Command <|-- Extra4 Command <|-- Extra5 Command <|-- Extra6 Command <|-- Extra7 Command <|-- Extra8 Command <|-- Extra9 Command <|-- Extra10
  • 13. Class diagrams iCommand <|.. Command hide members show Command members show iCommand methods Null -right-|> Command Bevestiging -right-|> Command Go -right-|> Command Wacht -right-|> Command Introductie -right--|> Command Extra1 -down-|> Command Extra2 -down--|> Command Extra3 -down-|> Command Extra4 -up-|> Command Extra5 -up--|> Command Extra6 -up---|> Command Extra7 -up--|> Command Extra8 -up---|> Command Extra9 -up--|> Command Extra10 -up-|> Command