Original author(s) | Arnaud Roques |
---|---|
Developer(s) | Arnaud Roques[1] |
Initial release | 17 April 2009[2] |
Stable release | v1.2024.3[3]
/ 15 February 2024 |
Repository | |
Written in | Java |
Operating system | Linux, OS X, Windows |
Type | UML tool |
License | GNU General Public License |
Website | plantuml |
Filename extension |
.pu, .puml, .txt[4] |
---|---|
Type of format | Textual |
PlantUML is an open-source tool allowing users to create diagrams from a plain text language. Besides various UML diagrams, PlantUML has support for various other software development related formats (such as Archimate, Block diagram, BPMN, C4, Computer network diagram, ERD, Gantt chart, Mind map, and WBD), as well as visualisation of JSON and YAML files.
The language of PlantUML is an example of a domain-specific language.[5] Besides its own DSL, PlantUML also understands AsciiMath, Creole, DOT, and LaTeX. It uses Graphviz software to lay out its diagrams and Tikz for LaTeX support. Images can be output as PNG, SVG, LaTeX and even ASCII art. PlantUML has also been used to allow blind people to design and read UML diagrams.[6][7]
There are various extensions or add-ons that incorporate PlantUML.[8]
PlantUML uses well-formed and human-readable code to render the diagrams.
There are other text formats for UML modelling, but PlantUML supports many diagram types, and does not need an explicit layout, though it is possible to tweak the diagrams if necessary.
The source code for the class diagram shown on the right is as follows:
skinparam style strictuml
class Façade {
doSomething()
}
Façade .> package1.Class1
Façade .> package2.Class2
Façade .> package3.Class3
Client1 .> Façade : doSomething()
Client2 .> Façade : doSomething()
note as N2
doSomething() {
Class1 c1 = newClass1();
Class2 c2 = newClass2();
Class3 c3 = newClass3();
c1.doStuff(c2)
c3.setX(c1.getX());
return c3.getY();
}
end note
Façade .. N2