Model-driven development (MDD) is an enabler for the automatic generation of programming language files from explicitly defined models. MDD projects manage a large magnitude of artifacts with various relationships. A large class of artifact relations comes from artifacts using others. This form of usage strongly differs from generation dependencies, where one artifact is generated, compiled, and transformed from or to other artifacts.
An MDD project usually entails a number of potentially dependent process steps, where a chain of artifact generations, compilations, and packagings arises. During these steps a multitude of artifacts are created, read or even executed. Those artifacts are thus related to each other in various ways. The number and complexity of occurring dependencies and other relationships between development artifacts can lead to several problems, such as poor maintainability and long development times. To tackle these problems, it is important to understand which artifacts are involved and how these artifacts are related to each other in MDD projects.
In this report, we (1) develop an abstract and rather general artifact model and (2) apply the artifact model by examining in detail the kinds of artifacts and related concepts relevant for a form of wide-spread projects, namely Java projects. We also dive into the core of generative projects, by looking at the generator as a set of artifacts executed at design time. storable and explicitly named elements of MDD projects. For a precise definition of all relevant concepts, we introduce the Artifact Model (AM), which allows the precise, model-based specification of involved kinds of artifacts, corresponding concepts and their relations.