Artifacts? What does it really mean?


I read a book recently on Design patterns: I came across the word Artifacts in each pages many times! What are they actually? Where it should be used?

In UP, artifacts are really important and they play a major role in Object Oriented Analysis . . . .

The term 'artifact' seemed to be popularized around the time the 3 amigos described the Rational Unified Process.

Artifact in software engineering was a generic term to refer to any 'deliverable' which could be produced by any 'role' in the software development lifecycle - anything from a Project Plan, to an ERD, a test Plan, or a source code file etc etc etc. Artifacts could be brought into Software Configuration Management (identified, versioned, change could be managed, etc).

The term artifact also crops up in business process modelling, usually referring to a physical or electronic document produced by a process, e.g. a claim form, an EDI document, or a report output.

You will likely hear the term a lot around expensive consultants, but you might want to use more specific terminology at the coal face of software development :)