Package (UML)

A package in the Unified Modeling Language is used "to group elements, and to provide a namespace for the grouped elements". A package may contain other packages, thus providing for a hierarchical organization of packages.

Pretty much all UML elements can be grouped into packages. Thus, classes, objects, use cases, components, nodes, node instances etc. can all be organized as packages, thus enabling a manageable organization of the myriad elements that a real-world UML model entails.

Usage
When organizing functional models (use case models, workflow models etc.), use packages to model the real-world modular structure of the system being modeled. When organizing source code, use packages to represent the different layers of the source code. For instance:
 * presentation layer
 * controller layer
 * data access layer
 * integration layer
 * business services layer

When organizing component models, use packages to group the components according to ownership and/or reuse possibilities. For instance:
 * commercial-off-the-shelf products
 * open-source framework components
 * custom-built framework components
 * custom-built application components

When organizing deployment models, use packages to represent the different types of deployment environments that you will be modeling. For instance:
 * production environment
 * pre-production environment
 * integration test environment
 * system test environment
 * development environment