A functional aspect is an aspect that has the semantics of a transformation; it is a function that maps a program to an advised program. Functional aspects are composed by function composition. In this paper, we explore functional aspects in the context of aspectoriented refactoring. We show that refactoring legacy applications using functional aspects is just as flexible and expressive as traditional aspects (functional aspects can be refactored in any order), while having a simpler semantics (aspect composition is just function composition), and causes fewer undesirable interactions between aspects (the number of potential interactions between functional aspects is half the number of potential interactions between traditional aspects). We analyze several aspect-oriented programs of different sizes to support our claims. Categories and Subject Descriptors: D.2.7 [Software]: Software Engineering—Distribution, Maintenance, and Enhancement; D.3.3 [Software]: Programming Languages—L...
Sven Apel, Christian Kästner, Don S. Batory