PeanutsMonkey
PeanutsMonkey

Reputation: 7105

Does the direction of a dependency connector matter in UML?

I have come across several examples of dependencies e.g. include, extend however it is utterly confusing. One example dictates that include should be in the direction of;

user profile --> login

Whilst extends should be in the direction of;

validate credit card <-- print receipt.

Whereas required should in the direction of; For the life of me I don't get why this can't be an include

place order --> create account

Also does it matter how these are constructed i.e.

user profile --> login (include)

      **vs**

validate credit card (extend)
       ^
       |
       |
       |
  print receipt

Upvotes: 0

Views: 128

Answers (1)

Steph
Steph

Reputation: 2049

I am not sure I fully understand every part of your questions, but here we go:

An include goes from the including to the included. It denotes a mandatory sub part of the use case :

including -----------> included
          <<include>>

Extend is the same than include, but the sub part is not mandatory. And unfortunately, the arrow is the other way around. Which seems to puzzle you a lot.

including <----------- optionnally included
            <<extend>>

When you speak about required, I suppose it is an anonymous dashed arrow? In fact, such a dependency can be written for anything, use case or not. It is not that usual for use cases, but it could mean that a use case has another as a prerequisite. Difference with include is that it is not a sub part. In this case, it is drawn this way.

requiring -----------> required

In your example, it seems that to place an order, you must have created an account (logical indeed). But account creation is not a sub part of order placing, so it is not an include.

As for your last question, are you talking about vertical/horizontal? If so, it does not matter in UML. In fact, there is no rule about positioning, the only rule is to remain clear.

Upvotes: 1

Related Questions