Previous UML Classes Table of Contents UML Packages Next

10.3.1 Artifact

Artifacts , Nodes

   An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.



    Classifier (from Kernel , Dependencies , PowerTypes ) on page 51


    DeployedArtifact (from Nodes ) on page 207

Issue 8457 -had to add new superclass

   9122 -already handled by 8457


    NamedElement (from Kernel , Dependencies ) on page 99


   Package Artifacts

   In the metamodel, an Artifact is a Classifier that represents a physical entity. Artifacts may have Properties that represent features of the Artifact, and Operations that can be performed on its instances. Artifacts can be involved in Associations to other Artifacts (e.g., composition associations). Artifacts can be instantiated to represent detailed copy semantics, where different instances of the same Artifact may be deployed to various Node instances (and each may have separate property values, e.g., for a ‘time-stamp’ property).

   Package Node

   As part of the Nodes package, an Artifact is extended to become the source of a deployment to a Node. This is achieved by specializing the abstract superclass DeployedArtifact defined in the Nodes package.


   Package Artifacts

Issue 8132 - rename ‘filename’ to ‘fileName’

   9189 - duplicate of 8132

   • fileName : String [0..1] A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.


   Package Artifacts

   • nestedArtifact: Artifact [*] The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement .

Issue 8132 - rename ‘ownedProperty’ to ‘ownedAttribute’8137 - reformulated subsets constraints to conform to document conventions

   • ownedAttribute : Property [*] The attributes or association ends defined for the Artifact. {Subsets Namespace ::ownedMember}.

   • ownedOperation : Operation [*] The Operations defined for the Artifact. {Subsets Namespace ::ownedMember}

   • manifestation : Manifestation [*] The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact. {Subsets NamedElement ::clientDependency , Subsets Element::ownedElement}


   No additional constraints


   An Artifact defined by the user represents a concrete element in the physical world. A particular instance (or ‘copy’) of an artifact is deployed to a node instance. Artifacts may have composition associations to other artifacts that are nested within it. For instance, a deployment descriptor artifact for a component may be contained within the artifact that implements that component. In that way, the component and its descriptor are deployed to a node instance as one artifact instance.

   Specific profiles are expected to stereotype artifact to model sets of files (e.g., as characterized by a ‘file extension’ on a file system). The UML Standard Profile defines several standard stereotypes that apply to Artifacts , e.g., «source» or «executable» (See Annex C - Standard Stereotype s). These stereotypes can be further specialized into implementation and platform specific stereotypes in profiles. For example, an EJB profile might define «jar» as a subclass of «executable» for executable Java archives.


   An artifact is presented using an ordinary class rectangle with the key-word «artifact». Alternatively, it may be depicted by an icon.

   Optionally, the underlining of the name of an artifact instance may be omitted, as the context is assumed to be known to users.



   Figure 10.6 -An Artifact instance






   Figure 10.7 - A visual representation of the manifestation relationship between artifacts and components

*Changes from previous UML

   The following changes from UML 1.x have been made: Artifacts can now manifest any PackageableElement (not just Components, as in UML 1.x).