What's this "complete" stuff?
AFAIC any use case must be complete in the sense that once invoked it will complete - either with a success outcome or an alternate outcome. On my planet use cases must not and cannot "not complete".
Well, bruce, I can't speak for Kevin, but it may be that you
have missed the point I was trying to make. My use of complete is for the purposes that Antoine de St. Exupery indicates in:
“La perfection est atteinte non quand il ne reste rien à ajouter, mais quand il ne reste rien à enlever,” or: “perfection is reached not when there is nothing left to add, but when there is nothing left to remove.” - Antoine de St. Exupery, The Little Prince.
That is to say, we can extend a UseCase by adding an alternate path or by directly adding an «extend» UseCase directly as you show below. If I (or someone else) have previously extended by alternate pathing, then I know I can extract the extending UseCase, because if I do, then I still have a complete UseCase. If however, I remove some portion of a UseCase and I no longer have a complete UseCase, then I can't call this an extending UseCase, it must be an «include»! I've found this to be a very useful mechanism for showing others (and myself) how this works.
Also on my planet, <extending> use cases are optional behaviours that can be invoked in certain circumstances by the primary or other actor that interrupt the flow of the extended use case at a specific (or multiple) point(s) and invoke a continuation of the extended case on completion.
I (and I expect Kevin - correct me if I'm wrong) agree with you completely on this!
Finally on my planet, <included> use cases are a bunch of confusing elements inserted in the standard by OMG that have nothing to do with extends and have no (forgive my use of the word) rational right to exist.
Well, I hope from my explanation at the top, you'll agree there is now distinct difference between «extend» and «include». Normally, I only create «include» relations where I have at lease two using UseCases, otherwise, as you point out,
what's the point?
If you mean by "complete" that an extending case may not necessarily be directly invocable by a primary actor, then OK. i.f.:
a complete use case is one that can be directly invoked by a primary actor,
an incomplete use case is one that cannot be directly invoked by a primary actor.
However, there is no reason why an extending use case need be incomplete!
IOW, an extending case can be directly invocable by a primary actor in one set of circumstances and indirectly invoked (as an extension) in another.
I don't think either Kevin or I require that the extending UseCase need be complete or incomplete. It can be either. However, it can
only be invoked by a primary actor if it
is (itself) complete.
or have I missed the point?
bruce
I'll leave that up to you...

Cheerz,
Paolo