66

The dictionary defines artifact as:

artefact, artifact [ˈɑːtɪˌfækt] n

  1. something made or given shape by man, such as a tool or a work of art, esp an object of archaeological interest

  2. anything man-made, such as a spurious experimental result

  3. (Life Sciences & Allied Applications / Biology) Cytology a structure seen in tissue after death, fixation, staining, etc., that is not normally present in the living tissue

The word artifact often appears in software development, software development cycles, effort estimation, etc. But the above definition doesn't make sense to me in that context.

Could someone please explain this word by giving some specific examples from software industry?

4
  • 2
    p2pnode is clearly not asking for the definition of the word "artifact". It's in the question, after all. Asking for how the word is used in a programming context may be a basic question, but it is still on topic.
    – Adam Lear
    Sep 7, 2011 at 18:26
  • The word is out of place in software development- too broad and shallow. It conjures up images of archeological dig sites; pots and shards.
    – user115727
    Jan 22, 2014 at 20:19
  • @Robster, why do you say that? I've heard it used referring to build and test artifacts (dlls and test results). It seems pretty common and pretty specific.
    – MetaFight
    Mar 7, 2014 at 10:34
  • Well, it seems you can call anything produced or created while programming or upon execution, an artifact. Jul 21, 2017 at 9:35

7 Answers 7

75

In software development life cycle (SDLC), artifact usually refers to "things" that are produced by people involved in the process. Examples would be design documents, data models, workflow diagrams, test matrices and plans, setup scripts, ... like an archaeological site, any thing that is created could be an artifact.

In most software development cycles, there's usually a list of specific required artifacts that someone must produce and put on a shared drive or document repository for other people to view and share.

5
  • 4
    Really the only thing that I've never heard referred to as an artifact is code, but I don't see why code can't be an artifact.
    – Thomas Owens
    Sep 7, 2011 at 16:17
  • 3
    @Thomas Owens: Code can be an artifact too, but it usually is considered separately (as in "make sure you back up your code and artifacts!") because the only people interested in this artifact are coders, and sometimes architects. Also, code goes into source control, most of the other artifacts should go into a document repository or a Wiki. Sep 7, 2011 at 16:21
  • 12
    Artifacts might also include compiled binaries / software packages.
    – Andy
    Jan 22, 2014 at 20:45
  • Actually in the Java world it is very common to refer code as artifact, for example when using Maven: stackoverflow.com/questions/2487485/what-is-maven-artifact
    – raspacorp
    Sep 4, 2014 at 17:32
  • The most I've heard it used is in regards to generated pieces of code or binaries. May 15, 2015 at 20:16
25

I think this Wikipedia article covers it pretty well.

An artifact is one of many kinds of tangible by-product produced during the development of software. Some artifacts (e.g., use cases, class diagrams, and other UML models, requirements and design documents) help describe the function, architecture, and design of software. Other artifacts are concerned with the process of development itself—such as project plans, business cases, and risk assessments.

0
14

In graphics programming, its often used to reference part of an image that did not render correctly. For example, if a small piece of a previous frame or view is still left on screen after drawing is done, that'd be referred to as an artifact.

3
  • 1
    Because I do graphics programming that's the meaning that comes up for me most often, but that's unrelated to the meaning the OP was asking about (what the term means in the context of software planning).
    – jhocking
    Sep 7, 2011 at 20:43
  • 5
    The OP asked "Could someone please explain this word by giving some specific examples from software industry?", which I think includes my answer. Sep 7, 2011 at 20:45
  • Just wanted to add a note that the word "artifact" in this context is used more generally than just in graphics programming to refer to imaging anomalies in any type of generated image (e.g. x-ray) - see: en.wikipedia.org/wiki/Visual_artifact
    – yoniLavi
    Oct 11, 2019 at 0:09
6

An artifact is something that is created directly or indirectly as a consequence of something else created. Software artifacts may consist of your project source or resources, or they could be represented as unforeseen manifestations of the interactions between your sources or resources.

4

The word artifact is often used in relation to quality management certifications like CMMI and ISO 9001, and methodologies like Six Sigma. In this context artifact refers to the products and byproducts of the software development process.

Artifacts are gathered and archived throughout the process to be used as evidence that the documented process is being followed. Such artifacts are mainly useful during a certification audit, but collecting and archiving them also makes it easier to figure out how or why the process failed if problems arise.

Artifacts might also be measured and analyzed to find ways to improve the process, measured some more to show evidence of improvement, and then measured continuously after that to show that the process remains in control (i.e. the metrics in question stay within some specified bounds).

3

I think there are other ways the term is used that mean more like a side-effect, but the main use I see of the word "artifact" within the software industry is to mean "the product that is created". So, like, the program the developers are writing is a "software artifact".

1
  • I have heard it used to refer to data that is not really needed anymore but was at one time thus is an artifact of the legacy app. Sep 7, 2011 at 20:04
3

I've only heard artifact used on one project I've been on: We used it to refer to the files our build put out. However, by reading the other answers, it seems that 'Artifact' is a variable term, used whenever somebody needs a term for some project-specific object type.

Not the answer you're looking for? Browse other questions tagged or ask your own question.