A package in the Unified Modeling Language helps
- To group elements
- To provide a namespace for the grouped elements
- A package may contain other packages, thus providing for a hierarchical organization of packages.
- UML elements can be grouped into packages.
E.g: – classes, objects,use cases, components, nodes, node instances etc.
All UML elements can be organized as packages.
- UML diagram composed only of packages and the dependencies between them.
- A package is a UML construct that enables you to organize model elements, such as use cases or classes, into groups.
- Packages are depicted as file folders and can be applied on any UML diagram.
- Use a tabbed folder to illustrate packages. Write the name of the package on the tab or inside the folder. Similar to classes, you can also list the attributes of a package
Figure 1: A sample package diagram
- Each package must have a name that distinguishes it from other packages
- A name is a textual string
- Two types of names:
- Simple names: e.g., Business rules, Client
- Qualified names: e.g. Sensors::Vision
- Package name prefixed by the name of the package in which that package lives
Create a package diagram to:-
- Depict a high-level overview of your requirements (over-viewing a collection of UML Use Case diagrams)
- Depict a high-level overview of your architecture/design (over-viewing a collection of UML Class diagrams).
- To logically modularize a complex diagram.
- A package may own other elements
– Classes, interfaces, components, nodes, collaborations, use cases, diagrams, and other packages
- Ownership is a composite relationship
– If the package is destroyed, the element is destroyed
– Every element is uniquely owned by exactly one package
Owned Elements and Visibility
– Public element is visible to the contents of any package that imports the element’s enclosing package
- Prefixed the name with a + symbol
– Protected element can only be seen by children of that package
- Prefixed the name with a # symbol
– Private element is not visible outside the package at all
- Prefixed the name with a – symbol
Figure 2: A package diagram showing visibility of its elements
- Dependency defines a relationship in which changes to one package will affect another package. Importing is a type of dependency that grants one package access to the contents of another package.
Figure 3: Modeling group of elements
Use Case Package Example
Figure 4: Use case package diagram example
Uses of UML packages
- Organizing source code, use packages to represent the different layers of the source code.
- Presentation layer
- Controller layer
- Data access layer
- Integration layer
- Business services layer
- Organizing component models use packages to group the components according to ownership and/or reuse possibilities. For instance:
- Commercial-off-the-shelf products
- Framework components
- Custom-built framework components
- Custom-built application components
- 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