On the Existence of the AOSD-Evolution Paradox

It is a well-known fact that evolving a software application accounts for the largest part of the software development process, and is currently the most problematic phase. Aspect-oriented software development is often touted as a means to ameliorate this situation: by providing new modularization mechanisms, it enables cleaner separation of concerns and reduced code tangling, and consequently makes evolving the application easier. Unfortunately, current research results only indicate that AOSD leads to applications that are better modularized, but fail to show that this improves their evolvability. Paradoxically, we have found indications of the contrary: current AOSD technologies deliver applications that are as hard, or perhaps even harder, to evolve than was the case before. We will show in this paper that the particular cause of this problem is that aspect programmers are forced to write aspects that only work for one specific version of an application.