Reification is the process by which an abstract idea about a
computer program is turned into an explicit
data model or other object created in a
programming language. A computable/addressable object — a resource — is created in a system as a proxy for a non computable/addressable object. By means of reification, something that was previously implicit, unexpressed, and possibly inexpressible is explicitly formulated and made available to conceptual (logical or computational) manipulation. Informally, reification is often referred to as "making something a
first-class citizen" within the scope of a particular system. Some aspect of a system can be reified at
language design time, which is related to
reflection in programming languages. It can be applied as a stepwise refinement at
system design time. Reification is one of the most frequently used techniques of
conceptual analysis and
knowledge representation.