Instances and their Interactions

Therapon Skotiniotis, Northeastern University
Karl Lieberherr, Northeastern University
David H. Lorenz, Northeastern University

Programming languages and paradigms provide mechanisms by which we can express our own solutions to problems. The way by which one formulates a solution is affected by the medium with which the solution is expressed. Currently, the lack of polymorphism and the difficulty with which aspect instances can be accessed and used within AspectJ, force programmers to resolve to less elegant solutions, introducing code tangling in advice definitions, increasing code complexity and diminishing maintainability and robustness. Through examples in AspectJ we discuss issues that relate to aspect instances, their interactions, and also the reflective capabilities of an AOSD language. We argue that any AOSD language should provide the means by which programmers can refer and manipulate aspect instances with the same ease and simplicity as with object instances in OO languages. Reflective capabilities inside AOSD languages should allow for introspection on their join point and pointcut mechanisms, allowing for the acquisition and manipulation of runtime information about these entities. We hope that by exposing these issues for discussion will allow for a better assessment of these techniques as well as a community-wide decision as to what should comprise ``good'' or ``bad'' techniques based on ``proper'' or ``improper'' use of an AOSD technology.

In Proceedings of the AOSD 2003 Workshop on Software-engineering Properties of Languages for Aspect Technologies, Boston, Massachusetts, AOSD 2003, March 17-21, 2003.


aspectinteraction.ps.gz (40k)

aspectinteraction.pdf (144k)


@InProceedings{Skotiniotis:2003:AII,
    Author = "Therapon Skotiniotis and Karl Lieberherr and David~H. Lorenz",
    Crossref = {AOSD:2003:SPLAT},
    Year = 2003,
    Title = {Aspect Instances and their Interactions},
}
---------- AOSD SPLAT crossref begin ----------
@String{PROC = "Proceedings of"}
@String{AOSD = "International Conference on Aspect-Oriented Software Development"}
@String{PROC:AOSD2003 = PROC#" the 2$^{nd}$ "#AOSD}
@String{AOSD2003 = "AOSD 2003"}
@String{AOSD2003SPLAT = "AOSD 2003 Workshop on Software-engineering Properties of Languages for Aspect Technologies"}
@Proceedings{AOSD:2003:SPLAT,
    Address = {Boston, Massachusetts},
    Booktitle = AOSD2003SPLAT,
    Key = AOSD2003SPLAT,
    Month = mar#{18},
    Organization = AOSD2003SPLAT,
    Title = AOSD2003SPLAT,
    Year = 2003,
}
@Proceedings{AOSD:2003,
    Address = {Boston, Massachusetts},
    Booktitle = PROC:AOSD2003,
    Key = AOSD2003,
    Month = mar#{ 17-21},
    Organization = AOSD2003,
    Publisher = "{ACM} Press",
    Title = PROC:AOSD2003,
    Year = 2003,
}
---------- AOSD SPLAT crossref end ----------