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.

Holistic Software Assessment (details)

To manage software evolution, we first need to understand the mechanisms that govern it. Software evolution is a multidimensional phenomenon that exhibits itself in multiple forms and at multiple levels of abstraction, and I maintain that to assess software evolution effectively we need to approach it holistically.

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.

Tool-supported and Collaborative Research (details)

I believe that software evolution research has to be augmented by tools, as we need to exercise our ideas in real settings. Since 2002 I have been the main architect and developer of the Moose platform for software analysis and modeling. Moose has attracted several hundred-man-years of research and development, it is used in several European research groups.

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.

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: