A package diagram[1] in the Unified Modeling Language depicts "specializations for Models and for Profiles that organize extensions to UML."[1]
In addition to the standard UML Dependency relationship, there are two special types of dependencies defined between packages:
A package import is "a directed relationship between an importing namespace and a package, indicating that the importing namespace adds the names of the members of the package to its own namespace."[2] By default, an unlabeled dependency between two packages is interpreted as a package import relationship.In this relationship, elements within the target package will be imported into the source package.
A package merge is "a directed relationship between two packages, that indicates that the contents of the two packages are to be combined. It is very similar to Generalisation in the sense that the source element conceptually adds the characteristics of the target element to its own characteristics resulting in an element that combines the characteristics of both".[3] In this relationship, if an element exists within both the source package and the target package, then the source element's definition will be expanded to include the target element's definition.
In the current Unified Modeling Language 2.5.1 (December 2017), Package Merge is no longer used within the specification. "Every metaclass is specified completely in one clause."[4]
Package diagrams can use packages containing use cases to illustrate the functionality of a software system.
Package diagrams can use packages that represent the different layers of a software system to illustrate the layered architecture of a software system. The dependencies between these packages can be adorned with labels / stereotypes to indicate the communication mechanism between the layers.