Package diagram typically enables you to organize models by partitioning model elements into packageable elements and establishing dependencies between packages and/or model elements within these packages. Since Package diagram is used to organize models in packages and views, it can include a wide array of packageable elements.
A package is a construct that enables you to organize model elements, such as use cases or classes, into groups. Packages define namespaces for packageable elements. Model elements from one package can be imported and/or accessed by another package. This organizational principle is intended to help establish unique naming of the model elements and avoid overloading a particular model element's name. Packages can also be shown on Block Definition diagrams or Requirement diagrams.