An artifact is defined as a physical piece of information that is used or produced in a software development process, or by deployment and operation of a system.
An artifact represents a concrete element in the physical world. It is typically used to model (software) products such as source files, executables, scripts, database tables, messages, documents, specifications, and model files. An instance (copy) of an artifact can be deployed on a node.
An application component may be realized by one or more artifacts. A data object may be realized by one or more artifacts. An artifact may be assigned to (i.e., deployed on) a node. Thus, the two typical ways to use the artifact concept are as an execution component or as a data file. In fact, these could be defined as specializations of the artifact concept.
The name of an artifact should preferably be the name of the file it represents; e.g., “order.jar”. An artifact may consist of sub-artifacts.