@article {99, title = {Forward Chaining in {HALO}: An Implementation Strategy for History-based Logic Pointcuts}, journal = {Elsevier International Journal on Computer Languages, Systems {\&} Structures}, volume = {35}, year = {2009}, month = {April}, pages = {31{\~A}{\textcent}{\^a}{\quotesinglbase}{\textlnot}{\^a}{\texteuro}{\oe}47}, abstract = {

In aspect-oriented programming, pointcuts are formulated as conditions over the context of dynamic events in the execution of a program. Hybrid pointcut languages also allow this context to come from interactions between the pointcut language and the base program. While some pointcut languages only allow conditions on the current execution event, more recent proposals have demonstrated the need for expressing conditions over a history of join points. Such pointcut languages require means to balance the expressiveness of the language with the additional memory and runtime overhead caused by keeping a history of join point context data. In this paper, we introduce a logic-based pointcut language that allows interaction with the base program as well as pointcuts over a history of join points. We introduce forward chaining as an implementation model for this language, and discuss possible optimization strategies for the additional overhead.

}, keywords = {aop, forward chaining, halo, lmp, logic meta programming, rete, temporal logic}, author = {Herzeel, Charlotte and Kris Gybels and Costanza, Pascal and Coen De Roover and Theo D{\textquoteright}Hondt} } @conference {107, title = {An Approach to High-Level Behavioral Program Documentation Allowing Lightweight Verification}, booktitle = {Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC06)}, year = {2006}, abstract = {

Typically, multiple developers are involved in the various stages of the software development and maintenance process. To ensure an optimal transfer of knowledge between these different peers, a reliable human-readable model of the dynamics of a software artefact is needed. Once these models become machine-verifiable, they can be used throughout an application{\textquoteright}s lifetime to check whether the documented behavioral properties continue to hold as the application evolves. Unfortunately, most existing modeling media are inadequate to express human-readable behavioral models which are at the same time machine-verifiable. We therefore propose a declarative platform wherein behavioral program models can be expressed in terms of userdefined high-level concepts and be automatically verified against an application{\textquoteright}s actual behavior. We demonstrate our approach by using it to both document and verify an interpreter for a garbage-collected programming language.

}, keywords = {aspect-oriented programming, behave, documentation, dynamic analysis, logic meta programming, program comprenhension, temporal logic, temporal logic programming, testing, verification}, isbn = {0-7695-2601-2}, author = {Coen De Roover and Michiels, Isabel and Kris Gybels and Kris Gybels and Theo D{\textquoteright}Hondt} } @conference {109, title = {Towards Abstract Interpretation for Recovering Design Information}, booktitle = {Proceedings of the First International Workshop on Abstract Interpretation of Object-oriented Languages (AIOOL05)}, year = {2005}, month = {May}, abstract = {

It is a well-known problem that design information of object-oriented programs is often lost or is not kept up-to-date when the program evolves. This design information can be recovered from the program using such techniques as logic meta programming. In this technique logic queries are used to check whether the program is implemented along certain well-known patterns. Currently the technique relies on structural information and patterns are expressed in the queries as conditions over structural elements of the program. Some patterns are however better expressed in dynamic terms which requires behavioural information about the program. Such information can be obtained from execution traces of the program, but these record only one possible input dependent program execution out of many. Abstract interpretation of the object-oriented program could provide a well-founded means for extracting the necessary behavioural information.

}, keywords = {abstract interpretation, design recovery, dynamic analysis, logic meta programming}, author = {Coen De Roover and Kris Gybels and Theo D{\textquoteright}Hondt} }