Diagrama de paquetes

Un diagrama de paquetes en el Lenguaje Unificado de Modelado representa las dependencias entre los paquetes que componen un modelo. Es decir, muestra cómo un sistema está dividido en agrupaciones lógicas y las dependencias entre esas agrupaciones.
Dado que normalmente un paquete está pensado como un directorio, los diagramas de paquetes suministran una descomposición de la jerarquía lógica de un sistema.
Los paquetes están normalmente organizados para maximizar la coherencia interna dentro de cada paquete y minimizar el acoplamiento externo entre los paquetes. Con estas líneas maestras sobre la mesa, los paquetes son buenos elementos de gestión. Cada paquete puede asignarse a un individuo o a un equipo, y las dependencias entre ellos pueden indicar el orden de desarrollo requerido.
Entre paquetes pueden existir relaciones de dependencia y generalización.
Las dependencias entre paquetes denotan que algún elemento de un paquete depende de los elementos en otro paquete. Existen diferentes tipos de relaciones de dependencia entre paquetes:
La importación de paquetes o import se define como "una relación entre un espacio de nombres de importación y un paquete, lo que indica que el espacio de nombres importador agrega los nombres de los miembros del paquete a su propio espacio de nombres".​ Por defecto, una dependencia entre dos paquetes sin etiqueta se interpreta como una relación de este tipo.
Tanto la importación de paquetes como el acceso de paquetes indican que el paquete origen, paquete fuente o paquete importador, tiene acceso al contenido del paquete destino, es decir, el contenido público del destino se añade al espacio de nombres del origen. La diferencia radica en que la importación de paquetes añade los elementos públicos del paquete destino al espacio de nombres público del origen, mientras que el acceso de paquetes añade los elementos públicos del destino al espacio de nombres privado del origen. Ambas relaciones son transitivas.
Una relación de combinación o fusión entre paquetes especifica que el contenido del paquete origen (receptor) se extiende con el contenido del paquete destino. La combinación de paquetes o merge se define como "una relación dirigida entre dos paquetes, que indica que el contenido de los dos paquetes se va a combinar. Es muy similar a la generalización en el sentido de que el elemento fuente añade conceptualmente las características del elemento destino para sus propias características lo que resulta en un elemento que combina las características de ambos".​ En esta relación, si existe un elemento tanto en el paquete fuente y el paquete de destino, después la definición del elemento de origen se ampliará para incluir la definición del elemento de destino.
Una generalización es una relación entre un clasificador más general (superclase) y un clasificador más específico (subclase). Cada instancia del clasificador específico es también una instancia indirecta del clasificador general. La generalización entre paquetes es similar a la generalización entre clases, los paquetes hijos heredan los elementos del paquete padre. La generalización entre paquetes suele utilizarse para especificar familias de paquetes.
Los paquetes controlan la visibilidad de los elementos que contienen.
Visualmente se representa la visibilidad de los elementos anteponiendo a su nombre uno de los símbolos: +, para los públicos, -, para los privados, y #, para los protegidos.