UML Diagrams With planUML

This post describes how to use the free plantUML for a set of UML diagrams.

Make use of a text editor, or, as I do, install the extension for LibreOffice. There should also be an add-on for Microsoft Word.

Another option for working with plantUML is an add-on for Atlassian Confluence.

Table of contents

Installation

When using ubuntu as your operation system, the installation is just one command:

sudo apt install plantuml

UML

Unified Modeling Language. The different types of UML.

@startwbs
* UML
** Behavioral
*** Activity Diagrams
*** Interaction Diagrams
**** Sequence Diagrams
**** Communication Diagrams
**** Timing Diagrams
*** State Machine Diagrams
*** Use Case Diagrams
** Structural
*** Class Diagrams
*** Component Diagrams
*** Composite Diagrams
*** Deployment Diagrams
*** Object Diagrams
*** Package Diagrams
@endwbs

Behavioral Diagrams

Activity Diagram

@startuml
(*) --> “Receive Order”
--> === S1 ===
=== S1 === --> “Make Drink”
=== S1 === --> “Make Bakery”
=== S1 === --> “Make Payment”
“Make Drink” --> === S2 ===
“Make Bakery” --> === S2 ===
“Make Payment” --> === S2 ===
--> (*)
@enduml

Sequence Diagram

@startuml
actor Student as S
participant “Online Bookstore” as OBS
participant “Fulfillment Center” as FC

S -// OBS: Login
S -// OBS: Enter Course Code
OBS -->> S: Provide Total
S -// OBS: Submit Payment
OBS -// FC: Submit Payment
FC -->> OBS: Ship Book(s)
OBS -->> S: Ship Book(s)
@enduml

Communication Diagram

@startuml
rectangle “A Student” as S
rectangle “Online Book Ordering System” as OBOS
rectangle “Fulfillment Center” as FC
rectangle “Books” as B
rectangle “Book Order” as BO

S -right->> OBOS: 1: login
OBOS -down- B
OBOS -down->> FC: 2: submit books\n3: calculate price
FC -- B
FC -down- BO: 4: get quantity
B -right- BO
@enduml

Timing Diagram

@startuml
robust “Vault” as V
robust “Bio Security Sys” as BIO

@0
V is Off
BIO is Off

@+5
V is On
BIO@5 <-> @20 : {15 ms}

@+15
V is On
BIO is On

@+30
V is Off
BIO is Off
@enduml

State Machine Diagram

@startuml
hide empty description
[*] -right-> Wait
Wait -right-> Vault
Vault -down-> [*]
Vault -up-> Enable
Enable -left-> Unlock
Unlock -down-> Wait
@enduml

Use Case Diagram

@startuml
left to right direction
skinparam packageStyle rectangle
actor :Student: as S
actor :Instructor: as I

rectangle “Online Grade Book”{
usecase (System Login) as (SL)
usecase (Select Class) as (SC)
usecase (Select Assignment) as (SA)
usecase (Upload Assignment) as (UA)
usecase (Select Student) as (SS)
usecase (Enter Text) as (ET)
usecase (Grade Assignment) as (GA)
S -- (SL)
S -- (SC)
S -- (SA)
S -- (UA)
S -- (ET)
(SL) -- I
(SC) -- I
(SA) -- I
(SS) -- I
(GA) -- I
(UA) -[hidden]> (ET)
(SS) -[hidden]> (GA)
}
@enduml

Structural Diagrams

Class Diagram

@startuml
class Kennel {
animal
breed
name
intake()
discharge()
}
@enduml

Component Diagram

@startuml
component [inventory.java] as in
component [customer.java] as cu
component [order.java] as or

in .. or
cu .. or
@enduml

Composite Structure Diagram

@startuml
rectangle Microwave as MW
() “Power UI” )-right- MW
() “Time UI” )-down- MW
MW -right- () “Lightning API”
() “Display API” )-up- MW
@enduml

Deployment Diagram

@startuml
node “Client Terminal” as API{
[Admin Portal Interface]
}

node “Web Server” as WS {
[{web server = apache}]
}

node “Application Server” as AS {
rectangle Database as DB
component [Inventory Application] as IA
IA -down- DB
}

API -- WS : TCP/IP
API -- AS : TCP/IP
@enduml

Object Diagram

@startuml
object “College of Computer Science : OrgUnit” as CCS {
building = “Grace Hopper Hall”
}
object “Computer Science : OrgUni” as CS {
building = “Grace Hopper Hall”
}
object “CS Research Unit : OrgUnit” as CSRU {
building = “Bruce Lee Memorial Center”
}
object “VR Lab : OrgUnit” as VRL {
building = “Innovation Center”
}

CCS -- CS : parent
CCS -- CSRU : parent
CSRU -- VRL : parent
@enduml

Package Diagram

@startuml
package Java <<Folder>> {
package Object <<Folder>> {
package AbstractCollection <<Folder>> {
package AbstractList <<Folder>> {
class ArrayList
}
}
}
}
@enduml

Reach out to me for professional support!

Contact