Conflicts in AspectJ: Restrictions and Solutions

A conflict among aspects happens when two or more aspects compete for its activation. The treatment of conflicts should provide mechanisms for the detection and resolution of the same ones, with the objective of avoiding that the software execution will be uncertain and unstable. However, the mechanisms provided by the programming aspect-oriented tools can be really limited, being this the case of AspectJ. In consequence, the resolution of certain conflicts becomes a critical problem since it drives to the restructuring of the code of the aspects. In this work the conflicting situations are identified that they are critical in AspectJ and particular and general solutions are delineated to the problem.