• Dynamic analysis
  • Some keywords about my research are: program understanding, dynamic analysis.

    My research is all about acquiring program understanding through dynamic analysis techniques. Let me first tell you why this is so important.

    Program understanding is the process every software engineer goes through when trying to familiarize himself with an existing software asset. The goal of this process is to attain a sufficient level of understanding about the software and it's structure to be able to perform a range of (maintenance-related) operations on it in a responsible way.

    To achieve this, three strategies come to mind. We can understand the program by looking at the source code -- static analysis -- by looking at the program's runtime behavior -- dynamic analysis, or a combination of both.
    In object-oriented software systems one of the major drawbacks of static analysis is the (almost) inability to see through the late binding process that is present in systems with polymorphism. As such, by looking at the source code alone, it is very difficult to see which classes will actually be working together at runtime.
    Therefore, there has been a tendency to use dynamic analysis to solve this problem. Dynamic analysis, however, also has a major drawback in the fact that a huge amount of runtime data (or trace data) is collected. Analyzing these huge event traces efficiently is still a matter for further research.

    My research consists of finding heuristics that can help in analyzing the event trace more efficiently. As such, the goal of my research can be summarized as:

    "finding key classes in a system's design through dynamic analysis that are worth looking at when begin the program understanding process."

  • Co-evolution of production code and test code
  • I am also interested in studying the co-evolution of production code and test code. As having a well-covering and up to date test suite available during maintenance is quasi essential, the research performed here focuses on the (post-mortem) study of whether production code and test code do indeed evolve together.
  • Multi-tenancy in high scalable SaaS environments
    Together with Cor-Paul Bezemer we are investigating a new architectural principle called multi-tenancy in which web applications are shared by multiple tenants. Multi-tenancy differs from multi-user, because one tenant equals an organizational unit which can contain multiple users.
  • Research projects involved
    • From October 2002 until September 2006, I was a PhD student in the ARRIBA research project. ARRIBA stands for Architectural Resources for the Restructuring and Integration of Business Applications. It is a research project funded by the Institute for the Promotion of Innovation by Science and Technology in Flanders (IWT). It involves a number of Flemish and foreign universities and a number of Flemish companies.
      In this project we try to develop techniques to help the participating companies migrate, evolve, restructure, ... their legacy applications. The project ran from 2002 till 2006.

      During the ARRIBA project a number of novel dynamic analysis techniques were developed, that were also put to use in an industrial context, through an Aspect C implementation that was developed by members of the ARRIBA project (Bram Adams & Kris De Schutter, Ghent University). See our CSMR 2006 contribution for more details on these experiments.  

    • At the Delft University of Technology I am working within the context of the Reconstructor project, an NWO Jacquard project that runs from 2005 till 2009. Its main theme is that of software architecture reconstruction. Currently the focus lies on reconstructing the architecture through dynamic analysis.
E-mail: a.e.zaidman (atDOMAIN) tudelft.nl (replace "atDOMAIN" -- added to mislead web spiders)