I confess this is my modeling pet peeve. If you’ve worked with me in the past, you have probably suffered my strong complaints if I ever saw an arrow in an association end.

An arrow signals that the association is navigable in that specific direction. Let’s see an example. In the following figure, we’re saying that Employee and Department are related via an association and that this association is navigable in the Employee-to-Department direction and not in the Department-to-Employee one. An association with neither end marked by navigability arrows means that the association is navigable in both directions.

Notation to express association directions

The definition of Navigability in the UML standard is expressed as:

Navigability means that instances participating in links at runtime (instances of an Association) can be accessed efficiently from instances at the other ends of the Association. The precise mechanism by which such efficient access is achieved is implementation specific. If an end is not navigable, access from the other ends may or may not be possible, and if it is, it might not be efficient – UML standard

Note the emphasis on navigability as a technical detail. And this is exactly why I claim that domain models / conceptual schemas (i.e. models that aim to represent the general knowledge the system needs to know) should NOT include any navigability information. Navigability is a not conceptual primitive but a design one used to express a design decision (in this case, how the access from employee objects to department objects, and vice-versa, will be implemented).

As Antoni Olivé (the king of conceptual modeling 🙂 ) puts it: Conceptually, relationship types (i.e. associations) are navigable in all directions. It’s a different discussion whether later, for efficiency reasons, you decide to only implement one navigability direction depending on a number of factors, such as the underlying storage technology, most frequent queries to the system, number of objects of each type,…At that point, yes, please, add all the arrows you want. Just not before. Or at least don’t show them to me!

Want to build better software faster?

Want to build better software faster?

Read about the latest trends on software modeling and low-code development

You have Successfully Subscribed!

Pin It on Pinterest

Share This