Learn More
Design patterns are a standard means to create large software systems. However, with standard object-oriented techniques, typical implementations of such patterns are not themselves reusable software entities. Evolution of a program into a 'patterned' form (also known as 'refactoring to patterns') and subsequent evolution of a 'patterned' design is largely(More)
Current proposals for load-time transformation of Java classes are either dependent on the use of a specific class loader or dependent on a specific JVM implementation. This is not due to an inadequacy of the Java platform but to the wrong choice of the level at which to hook into the Java Class Loader Architecture. JMangler follows a novel approach that(More)
Logic meta-programming in Prolog is a powerful way to express program analysis and transformation. However, its use can be difficult and error-prone because it requires programmers to know the meta-level representation of the analysed language and to think and express their analyses in terms of this low-level representation. In addition, the(More)
Transformation dependency analysis is crucial to provide better tool support for current-day software development techniques – two prominent examples are program refact-oring and model transformation. Unfortunately, it is unclear how existing tools that provide generic support for these techniques relate to each other, due to their difference in(More)
Jointly deployed aspects may interact with each other. While some interactions might be intended, unintended interactions (interferences) can break a program. Detecting and resolving interferences is particularly hard if aspects are developed independently, without knowledge of each other. Work on interference detection has focused so far on the correctness(More)