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

State management in react applications (Statecharts)
State management in react applications (Statecharts)State management in react applications (Statecharts)
State management in react applications (Statecharts)Tomáš Drenčák
 
Hibernate ppt
Hibernate pptHibernate ppt
Hibernate pptAneega
 
An introduction to SQLAlchemy
An introduction to SQLAlchemyAn introduction to SQLAlchemy
An introduction to SQLAlchemymengukagan
 
Introduction to JSX
Introduction to JSXIntroduction to JSX
Introduction to JSXMicah Wood
 
Effective Java and Kotlin
Effective Java and KotlinEffective Java and Kotlin
Effective Java and Kotlin경주 전
 
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 Examplekamal kotecha
 
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Edureka!
 
Java collections concept
Java collections conceptJava collections concept
Java collections conceptkumar gaurav
 
this keyword in Java.pptx
this keyword in Java.pptxthis keyword in Java.pptx
this keyword in Java.pptxParvizMirzayev2
 
Java Garbage Collection - How it works
Java Garbage Collection - How it worksJava Garbage Collection - How it works
Java Garbage Collection - How it worksMindfire Solutions
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointSahil Gandhi
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVCIndicThreads
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentationguest11106b
 

What's hot (20)

State management in react applications (Statecharts)
State management in react applications (Statecharts)State management in react applications (Statecharts)
State management in react applications (Statecharts)
 
Hibernate ppt
Hibernate pptHibernate ppt
Hibernate ppt
 
An introduction to SQLAlchemy
An introduction to SQLAlchemyAn introduction to SQLAlchemy
An introduction to SQLAlchemy
 
Introduction to JSX
Introduction to JSXIntroduction to JSX
Introduction to JSX
 
Effective Java and Kotlin
Effective Java and KotlinEffective Java and Kotlin
Effective Java and Kotlin
 
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
 
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
 
Java collections concept
Java collections conceptJava collections concept
Java collections concept
 
this keyword in Java.pptx
this keyword in Java.pptxthis keyword in Java.pptx
this keyword in Java.pptx
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 
Struts
StrutsStruts
Struts
 
Java Garbage Collection - How it works
Java Garbage Collection - How it worksJava Garbage Collection - How it works
Java Garbage Collection - How it works
 
JPA For Beginner's
JPA For Beginner'sJPA For Beginner's
JPA For Beginner's
 
Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Svelte JS introduction
Svelte JS introductionSvelte JS introduction
Svelte JS introduction
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPoint
 
The Power of CSS Flexbox
The Power of CSS FlexboxThe Power of CSS Flexbox
The Power of CSS Flexbox
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 

Similar to PlantUML introduction

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 TransformationsAmine Benelallam
 
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 APIJörn Guy Süß JGS
 
Machine learning on streams of data
Machine learning on streams of dataMachine learning on streams of data
Machine learning on streams of dataTomasz Sosiński
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slidesDavid Barreto
 
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 DevelopersJayaram Sankaranarayanan
 
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 gdfsgfdvaibhavkandalkar2
 
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...Luca Berardinelli
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & AnswersRatnala Charan kumar
 
Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Ahmed Moawad
 
Introduction To Programming with Python
Introduction To Programming with PythonIntroduction To Programming with Python
Introduction To Programming with PythonSushant Mane
 
Java 8 - functional features
Java 8 - functional featuresJava 8 - functional features
Java 8 - functional featuresRafal Rybacki
 
Summer training matlab
Summer training matlab Summer training matlab
Summer training matlab Arshit Rai
 
Summer training matlab
Summer training matlab Summer training matlab
Summer training matlab Arshit Rai
 
In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QMLICS
 

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

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

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