At a high level, I'm interested in how developers can maintain modular reasoning in programming languages as they become ever more expressive and dynamic, even though source code can only provide a static view. In particular, my PhD research is concerned with aspect-oriented languages, which are capable of modifying the behaviour of classes in a quantifiable manner. While such a powerful mechanism makes it possible to modularize crosscutting concerns, it should be wielded carefully in order to prevent any unintended or undesired interactions. My research is concerned with finding such interactions, and to determine whether they are desired or undesired. This goal is approached from two separate angles:
- First, a static data-flow analysis is used to detect the interactions that are caused by aspects. That is, the analysis looks for which modules are directly affected by any assignments performed by aspects.
- Second, it should also be possible to specify the desired behaviour of aspect-oriented applications. This can be done in a modular fashion by adapting the design-by-contract approach for aspects.
Combining the two angles then consists of taking the interactions produced by the data-flow analysis, and finding out whether they cause any contract violations in the affected modules. If there are none, this ensures that the system is free from any undesired aspect interactions. If contract violations do occur, this indicates a potential undesired interaction, including a detailed description of what went wrong and who is to blame. That just about sums up the main idea. If you'd like to know more, have a look at this presentation I gave at Benevol 2012, which presents a slightly more detailed overview. .. or you can always contact me and I'll be happy to answer any questions you may have.
Aside from my PhD research, I also have an interest in graph transformations. I teach the use of this technique to 3rd Bachelor students in the Formal Techniques in Software Engineering course. I also guide students Master students in their research internships and theses, which are often related to either graph transformations or aspect-oriented languages.