Can you tell me if I understand extension points correctly in use cases (and in the diagram)? For use case 'Card Payment' and and extend use case 'Pay by credit card' is it properly identified that extension point wil be "User clicks pay by card button"? Or should it be "system asks for the payment method"?
1 Answers
The identification of the extension points is correct.
The problem is however that the extensions should not be extensions at all.
From the UML specs 2.5:
The extended UseCase is defined independently of the extending UseCase and is meaningful independently of the extending UseCase. On the other hand, the extending UseCase typically defines behavior that may not necessarily be meaningful by itself.
So your use case make a payment
should be indedepent from the extending use cases pay by credit card
and pay by cash
. This is clearly not the case since you need the extending use cases to have a meaningful and complete behavior.
There are several alternative solutions to using extensions in this case.
A single use case: Simply incorporate the extending use cases into the main
make a payment
use case. You can create alternate scenarios for the different payment options. This is probably the best option as your use cases are way too granular anyway. Use cases should be about the main goals a user should have when using the system. Not about functions the system provides.Include: You can use an include relation to (conditionally) include the other use cases behavior into your main use case. This would be more appropriate because the main use cases relies in the result of the included use cases and is incomplete without them.
Generalization: You could specialize
make a payment
withpay by cash
andpay by credit card
. Generalization between use cases is allowed, but generally discouraged by a lot of practitioners.

- 12,788
- 2
- 23
- 50