This presentation was used to explain the advantages of using PlantUML (http://plantuml.sourceforge.net/) over other UML tools. It highlights some of the features that can help a development team to improve their documentation.
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.
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()