Eine Paketverschmelzung (engl. PackageMerge) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Eine Paketverschmelzung ist eine gerichtete Beziehung zwischen zwei Paketen in der UML2. Sie spezifiziert, dass die Elemente in den beiden beteiligten Paketen kombiniert werden. Die Regeln, wie die einzelnen Elemente im Quell- (merged package) und im Zielpaket (receiving package) zusammengeführt werden, sind sehr detailliert, weil zahlreiche Sonderfälle zu unterscheiden sind.
Zunächst ist eine Paketverschmelzung nur dann gültig, wenn einige Vorbedingungen erfüllt sind. Zum Beispiel dürfen mehrere Beziehungen der Form Paketverschmelzung keine zyklische Abhängigkeit bilden. Weiter wird vorausgesetzt, dass weder das Zielpaket im Quellpaket, noch das Quellpaket im Zielpaket enthalten ist.
Stark vereinfacht können die Regeln für die Paketverschmelzung dann wie folgt zusammengefasst werden.
Alle Elemente aus dem Quellpaket und alle Elemente aus dem Zielpaket werden in ein drittes, temporäres Paket kopiert. Dabei kann es zu Konflikten kommen, wenn Modellelemente mit dem gleichen Namen und dem gleichen Typ sowohl im Quell- wie auch im Zielpaket vorkommen. Für jeden möglichen Typ ist spezifiziert, wie der Konflikt aufgelöst wird. Falls zum Beispiel eine Klasse Adresse
sowohl im Quell- wie auch im Zielpaket existiert, ist mit der Paketverschmelzung eine neue Klasse mit dem Namen Adresse
spezifiziert, in der die Merkmale der beiden Klassen aus dem Quell- und Zielsystem kombiniert sind. Wie Merkmale zu kombinieren sind, ist wiederum in einem anderen detaillierten Satz von Regeln festgelegt.
Notation
Eine Paketverschmelzung wird als Abhängigkeit mit einer gestrichelten Linie dargestellt. Das Ende mit dem offenen Pfeil zeigt auf das Quellpaket, das andere Ende auf das Zielpaket. Dass es sich um eine Paketverschmelzung handelt, wird mit dem Schlüsselwort «merge»
angezeigt.
Unterschiede zur UML 1.4
Das Modellelement Paketverschmelzung wurde in der UML2 neu eingeführt.