This proposal is ideally suited for a Master's thesis.
The thesis will be supervised by Prof. Dr. Ralf Lämmel, University of Koblenz-Landau.
The candidate will be a member of the Software Languages Team.
The term megamodel refers here to a model describing the linguistic architecture of software products and software technologies, i.e., entities such as languages, models, metamodels, and tools as well as relationships such as element-of, conforms-to, and corresponds-to. Megamodels can be more concrete in that they directly describe entities and relationships in software products; they can also be more abstract in that they describe essentially usage scenarios of software technologies. When a more abstract megamodel is turned into a more concrete one, then we also speak of binding, i.e., the megamodel for a technology is bound to (say, instantiated for) a specific software product.
In this thesis, the process of binding is to be formalized and to be implemented in a prototypical manner. Given an abstract megamodel and an appropriate abstraction of the software product, a binding algorithm is expected to find a possible instantiation of the megamodel so that it applies to the software product. A technology may call for multiple megamodels to model all usage scenarios. A product may admit multiple instantiations of a given megamodel because of multiple uses of the technology.
In this thesis, the resulting notion of binding and its implementation is to be applied to some software technologies for Object/Relational/XML mapping, e.g., JAXB and Hibernate for the Java platform. In this manner, general (say, reusable) megamodels can be provided for those technologies once and for all and any given product can be analyzed with regard to the technology.
This research will be carried in the context of the 101companies project.
This is a proposal for a research-oriented Master's thesis. As a result, the primary goal is to produce publishable results. The candidate will be supervised closely, but is also expected to be organized and self-motivated. This proposal requires strong background in programming and software engineering.
Some of the following areas should be known to the candidate:
- Modeling, Metamodeling, Model transformation
- Model-driven engineering
- Object/Relational/XML mapping
- Declarative programming (e.g., functional programming)
- Build systems