Details

Over the past three decades, more and more research
has been spent on understanding software evolution.
The development and spread of versioning systems
made valuable data available for study. Indeed,
versioning systems provide rich information for
analyzing software evolution, but it is exactly the
richness of the information that raises the problem.
The more versions we consider, the more data we have
at hand. The more data we have at hand, the more
techniques we need to employ to analyze it. The more
techniques we need, the more generic the
infrastructure should be. The approaches developed
so far rely on ad-hoc models, or on too specific
meta-models, and thus, it is difficult to reuse or
compare their results. We argue for the need of an
explicit and generic meta-model for allowing the
expression and combination of software evolution
analyses. We review the state-of-the-art in software
evolution analysis and we conclude that: \emphTo
provide a generic meta-model for expressing software
evolution analyses, we need to recognize the
evolution as an explicit phenomenon and model it as
a first class entity. Our solution is to
encapsulate the evolution in the explicit notion of
history as a sequence of versions, and to build a
meta-model around these notions: Hismo. To show the
usefulness of our meta-model we exercise its dif
ferent characteristics by building several reverse
engineering applications. This dissertation of fers
a meta-model for software evolution analysis yet,
the concepts of history and version do not
necessarily depend on software. We show how the
concept of history can be generalized and how we can
obtain our meta-model by transformations applied on
structural meta-models. As a consequence, our
approach of modeling evolution is not restricted to
software analysis, but can be applied to other
fields as well.