Consider a use-case UC1 that includes UC2 and UC3. The UML 2.5.1 specifications define «include»
between two use-cases:
Include is a DirectedRelationship between two UseCases, indicating that the behavior of the included UseCase (the addition) is inserted into the behavior of the including UseCase (the includingCase).
(...)
All of the behavior of the included UseCase is executed at a single location in the included UseCase before execution of the including UseCase is resumed.
I understand that the behaviors of UC2 and UC3 are always executed with UC1, in view of the affirmative wording of the include definition, which implies systematicity and leaves no room for conditionality ("is inserted into", "is executed"), whereas the extend definition explicitly mentions a non mandatory possibility ("can be inserted into", "behavior that should be added, possibly conditionally", see also section 5.1 of the specs about the use of CAN and MAY).
I wonder if my interpretation is too strict. So does the inclusion:
- mean that whenever UC1 is performed, the behavior of both UC2 and UC3 is always executed, i.e. with the expected observable results for the actors or other stakeholders?
- Or is it possible that the behavior of one of the use-cases, say UC2, is not always executed? And why would this understanding be compliant with the specs?