Software evolution

Modern systems are large and complex. One of today’s grandest challenges of software engineering is to develop these systems so that they can live and evolve in a constantly changing world. I focus my research on designing new paradigms for understanding and managing software evolution through model-centric and language engineering.

Tool-supported Research (details)

I believe that software evolution research has to be augmented by tools, as we need to exercise our ideas in real settings. Over the past six years I have been the main architect and developer of the Moose platform for software analysis and modeling. Moose has attracted more than 100 man-years of research and development, it is used in several European research groups, it led to more than 150 peer reviewed publications, and it has acted as the main vehicle for research projects that received a total of more than 2’500’000 CHF in funding until 2009.

Moose is developed entirely by researchers and students and it showed that investing in the underlying tools leads to a good research output. I will continue to build a Moose-based infrastructure to support long-term research, and to lead and to grow the research community around it.

Software Assessment

To manage software evolution, we first need to understand the mechanisms that govern it. During my PhD, I focused on analyzing versioning systems, as they offer a wealth of information about the history of software systems. I argued that we have to model evolution explicitly to analyze large amounts of historical data in an effective manner. I introduced the notion of history as a first class entity, and I used it for defining Hismo, a novel meta-model that placed historical data and structural data in the same space. I demonstrated the expressiveness of the meta-model by defining several evolution analyses.

Given the complexity of software, we need to analyze it from several perspectives and to combine the results. I have developed several techniques that tackle a wide spectrum of software analyses ranging from the course-grained analysis of the system architecture to the fine-grained understanding of the runtime of the system, and from the code duplication detection to semantic analysis of the natural language vocabulary used in the source code.

Model-centric Engineering

Modeling plays a central part in my research. For example, part of the success of Moose is due to its model-centric architecture. At its core, it has a mechanism for describing meta-models, for managing models in general, and for defining various analyses on these models. These mechanisms allowed us to develop independently analyses that are divergent, yet still combine them afterwards into new analyses.

One particular focus in Moose is the ability to present heterogeneous data in a flexible and interactive way. This idea is embodied in Mondrian, an engine I co-developed for scripting interactive visualizations. Mondrian proposes a component model and provides a domain-specific language that allows the analyst to define a transformation of any input meta-model into a graphical one. Mondrian received the 2nd prize at the Innovation Technology Awards from the European Smalltalk User Group (2006).

Presentation alone is not enough to understand a complex system. That is why, I co-developed an engine, similar in spirit with Mondrian, for scripting interactive browsers. The engine is called Glamour, and it received the 3rd prize at the Innovation Technology Awards from ESUG (2009).

Based on my experience in modeling historical information, I promoted the idea of modeling change as a first class entity in a running system. Together with several colleagues I worked on Changeboxes, a language mechanism for developing and deploying several running versions of a software system concomitantly. Changeboxes show how several versions can co-exist without interfering and it opens new paths towards researching novel paradigms for versioning infrastructures.

I also worked on an approach to evolve models at runtime based on user interaction. This approach was used to support the reverse engineering process of augmenting automatically recovered models with information gained from external sources.

Demo-driven research (details)

Research is less about discovering the fantastic, as it is about revealing the obvious. The obvious is always there. It needs no discovery. It only needs us to take a look from a different perspective to see it.

Thus, the most important challenge is not the fight against nature, but against our own assumptions. One of my favorite quotes is from Tom deMarco and says that

It’s not what you don’t know that kills you, it’s what you know that isn’t so.

Tom deMarco

One way of fighting against our own assumptions is to expose them to other people. That is why, I advocate and practice what I call demo-driven research, a way of doing research that puts emphasis on presenting the state of research with any given chance and to any audience willing to listen.

Demoing early and often has several benefits. First, it exposes ideas to various audiences. Second, it forces the story to be explicit. Third, it forces the potential tool to match the story, and that usually implies a simplification of the actions and leads to better usability, which in turn leads to potentials users that provide more feedback.

You are here: