Software Disclaimer

Class UML 2.4.1::UseCase

Description:

A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system.

Direct Superclasses: BehavioredClassifier

Direct Subclasses:

Class Precedence List: UseCase, BehavioredClassifier, Classifier, Namespace, Type, PackageableElement, ParameterableElement, RedefinableElement, NamedElement, TemplateableElement, Element

Properties:

extend : Extend (0 *); -- source UseCase
extensionPoint : ExtensionPoint (0 *); -- source UseCase
include : Include (0 *); -- source UseCase
subject : Classifier (0 *); -- source UseCase
classifierBehavior : Behavior (0 1); -- source BehavioredClassifier
interfaceRealization : InterfaceRealization (0 *); -- source BehavioredClassifier
ownedBehavior : Behavior (0 *); -- source BehavioredClassifier
attribute : Property (0 *); -- source Classifier
collaborationUse : CollaborationUse (0 *); -- source Classifier
feature : Feature (0 *); -- source Classifier
general : Classifier (0 *); -- source Classifier
generalization : Generalization (0 *); -- source Classifier
inheritedMember : NamedElement (0 *); -- source Classifier
isAbstract : Boolean (1 1); -- source Classifier

If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.
Default value: FALSE

isFinalSpecialization : Boolean (1 1); -- source Classifier
ownedTemplateSignature : RedefinableTemplateSignature (0 1); -- source Classifier
ownedUseCase : UseCase (0 *); -- source Classifier
powertypeExtent : GeneralizationSet (0 *); -- source Classifier
redefinedClassifier : Classifier (0 *); -- source Classifier
representation : CollaborationUse (0 1); -- source Classifier
substitution : Substitution (0 *); -- source Classifier
templateParameter : ClassifierTemplateParameter (0 1); -- source Classifier
useCase : UseCase (0 *); -- source Classifier
elementImport : ElementImport (0 *); -- source Namespace
importedMember : PackageableElement (0 *); -- source Namespace
member : NamedElement (0 *); -- source Namespace
ownedMember : NamedElement (0 *); -- source Namespace
ownedRule : Constraint (0 *); -- source Namespace
packageImport : PackageImport (0 *); -- source Namespace
package : Package (0 1); -- source Type
visibility : VisibilityKind (1 1); -- source PackageableElement
owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
isLeaf : Boolean (1 1); -- source RedefinableElement
redefinedElement : RedefinableElement (0 *); -- source RedefinableElement
redefinitionContext : Classifier (0 *); -- source RedefinableElement
clientDependency : Dependency (0 *); -- source NamedElement
name : String (0 1); -- source NamedElement
nameExpression : StringExpression (0 1); -- source NamedElement
namespace : Namespace (0 1); -- source NamedElement
qualifiedName : String (0 1); -- source NamedElement
templateBinding : TemplateBinding (0 *); -- source TemplateableElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

Signature: no_association_to_use_case() : Boolean;
Description: UseCases can not have Associations to UseCases specifying the same subject.
Expression: true

Signature: must_have_name() : Boolean;
Description: A UseCase must have a name.
Expression: self.name -> notEmpty ()

Signature: cannot_include_self() : Boolean;
Description: A use case cannot include use cases that directly or indirectly include it.
Expression: not self.allIncludedUseCases()->includes(self)

Signature: binary_associations() : Boolean;
Description: UseCases can only be involved in binary Associations.
Expression: true

Operations:

Signature: allIncludedUseCases() : UseCase;
Description: The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.
The OCL used here is not normative.
Editor's notes: in is a reserved word.
Expression: result = self.include->union(self.include->collect(n | n.allIncludedUseCases()))
Original: result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))



Send questions or comments to xmi-interop@omg.org.