Eine Assoziation (englisch association) ist ein Modellelement in der Unified Modeling Language (UML[1]), einer Modellierungssprache für Software und andere Systeme.
Eine Assoziation beschreibt eine Beziehung zwischen zwei oder mehr Classifiern, im häufigsten Fall eine Verbindung zwischen genau zwei Klassen. Assoziationen definieren dabei eine Beziehung auf Typebene. Auf Instanzebene nennen sich die konkreten Ausprägungen einer Assoziation Link.
Neben Klassen können aber auch beliebige andere Classifier (beispielsweise Schnittstellen oder Anwendungsfälle) mittels Assoziationen in Beziehung zueinander gesetzt werden.
Die Möglichkeit, mehr als zwei Typen an einer Assoziation zu beteiligen, wird eher selten genutzt. Die Assoziation wird in diesem Fall n-äre Assoziation genannt und durch eine Raute, an der n zu den Objekten führende Linien anliegen, dargestellt. Die Assoziation in UML ist mit dem Relationship-Typ im Entity-Relationship-Modell vergleichbar, wobei hier Detailunterschiede bestehen, die zwar auf den ersten Blick nicht ohne weiteres erkennbar, in der Praxis aber von großer Bedeutung sind (siehe Object-relational impedance mismatch). Prinzipiell erlaubt, wenn auch nicht üblich, ist die Darstellung mit Raute auch bei Assoziationen mit nur zwei Assoziationsenden, wodurch das Erscheinungsbild der Chen-Notation von Entity-Relationship-Modellen ähnelt.
Eine Assoziation heißt reflexiv, wenn sie einen Classifier mit sich selbst verbindet. Die beiden Enden der Assoziation zeigen hier also auf den gleichen Typ. In der Abbildung rechts ist die Assoziation „Elternteil/Kind-Beziehung“ reflexiv.