Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Package

A package is a folder: a rectangle with a small tab. When it shows its contents its name sits in the tab, and when it shows none its name sits in the body. In component diagrams it groups components; in package diagrams it is the main symbol.

Inside a package diagram:

diagram package "Tab or body"
package Empty
package Types { class Point }
Tab or body Empty Types Point

In a component diagram:

package "Domain" {
  component Orders
  component Customers
  Orders --> Customers
}
Domain Orders Customers

Connectors may cross package boundaries.

package "Application" as app {
  component Handlers
}

package "Domain" as domain {
  component Model
}

package "Adapters" as adapters {
  component SQL
  component Kafka
  align SQL Kafka
}

Handlers --> Model
SQL ..> Model : implements
Kafka ..> Model : implements
Application Handlers Domain Model Adapters SQL Kafka implements implements

Packages can nest.

package "Platform" {
  package "Storage" {
    component Blob
    component Index
    Index --> Blob
  }
  package "Compute" {
    component Runner
  }
  Runner --> Index
}
Platform Storage Blob Index Compute Runner

A package may also sit inside a component, as one of its packaged elements.

Syntax

package <name> [as <alias>] [<<stereotype>>] [{ ... }]

Specification

UML 2.5.1, 12.2.4 (p. 248). Packaged elements in a component: 11.6.3 (p. 210).

Used in

Layered architecture, Monolithic kernel, RTOS layers.