Skip to main content

Component Diagram

In Unified Modeling Language (UML), a component diagram depicts how components are wired together to form larger components or software systems. They are used to illustrate the structure of arbitrarily complex systems.

Wikipedia

Components and Interfaces

You can define a component in multiple ways, inside brackets or with the component keyword.

Interface can be defined using the () symbol, or the interface keyword.

And you can define an alias, using the as keyword. This alias will be used later, when defining relations.

componentDiagram
  component comp1
  [comp2]
  [component 3] as comp3
  component comp4 [
    This component has
    long description
  ]

  interface "I1"
  () "I2"
  () "I3" as interf3
comp1comp2component 3This component has long descriptionI1I2I3

Relations

Relations between elements are made using combinations of dotted line (..), straight line (--), and arrows (-->) symbols.

componentDiagram
  DataQuery -- [Component]
  [Component] ..> HTTP : use
ComponentDataQueryHTTPuse

Grouping

You can use several keywords to group components and interfaces together:

  • package
  • node
  • folder
  • frame
  • cloud
  • database
  • rectangle
  • component
componentDiagram

package "Some Group" {
  [First Component]
  HTTP -- [First Component]
  [Another Component]
}

node "Other Groups" {
  [Second Component]
  FTP -- [Second Component]
  [First Component] --> FTP
}

cloud "Cloud" {
  [Example 1]
}

database "MySql" {
  folder "This is my folder" {
    [Folder 3]
  }
  frame "Foo" {
    [Frame 4]
  }
}

[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]
MySql[database]Foo[frame]This is my folder[folder]Cloud[cloud]Other Groups[node]Some Group[package]First ComponentAnother ComponentSecond ComponentExample 1Folder 3Frame 4HTTPFTP

Override config

You can override diagarm config through @param directive.

All available configs can be seen in the Config page.

componentDiagram
  @param componentBackground #61afef
  @param componentBorderColor #61afef

  DataQuery -- [Component]
  [Component] ..> HTTP : use
ComponentDataQueryHTTPuse