Skip to main content.

Research in a nutshell

Implementation-level software patterns describe code that exhibits control flow and data flow characteristics of interest. Such patterns can, for instance, describe code that leads to run-time errors such as the reading from a closed file. Clearly, a tool for detecting such patterns has valuable applications throughout the development process. This is even more so for tools that support detecting user-specified patterns. Among others, such tools can be used to enforce coding conventions or detect violations of the specific protocol an API expects to be adhered to. Unfortunately, exotic pattern specification languages (e.g. temporal logic formulas over a control flow graph) preclude most pattern detection tools from becoming an integral part of every developer's toolbox.

In my research, I address this problem by enabling developers to exemplify a software pattern through a code excerpt that corresponds to its prototypical implementation. To ensure that implicit implementation variants of the pattern (i.e. those implied by the semantics of the programming language) are recalled, these code excerpts are matched against various program analysis results (e.g. control flow graphs, but also semantic, must-alias and points-to analyses). This way, developers benefit from the analyses that enable detecting a pattern's implementation variants without being exposed to their intricate details or an unfamiliar specification language.

^ TOP

Interests

Current research interests

Other interests related to computer science