|
ABSTRACT
Through AspectJ, aspect-oriented programming (AOP) is becoming of increasing interest and availability to Java programmers as it matures as a methodology for improved software modularity via the separation of cross-cutting concerns. AOP proponents often advocate a development strategy where Java programmers write the main application, ignoring cross-cutting concerns, and then AspectJ programmers, domain experts in their specific concerns, weave in the logic for these more specialized cross-cutting concerns. However, several authors have recently debated the merits of this strategy by empirically showing certain drawbacks. The proposed solutions paint a different development strategy where base code and aspect programmers are aware of each other (to varying degrees) and interactions between cross-cutting concerns are planned for early on. Herein we explore new possibilities in the language design space that open up when the base code is aware of cross-cutting aspects. Using our insights from this exploration we concretize these new possibilities by extending AspectJ with concise yet powerful constructs, while maintaining full backwards compatibility. These new constructs allow base code and aspects to cooperate in ways that were previously not possible: arbitrary blocks of code can be advised, advice can be explicitly parameterized, base code can guide aspects in where to apply advice, and aspects can statically enforce new constraints upon the base code that they advise. These new techniques allow aspect modularity and program safety to increase. We illustrate the value of our extensions through an example based on transactions.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
J. Aldrich. Open Modules: Modular reasoning about advice. In ECOOP'05, pages 144--168, 2005.
|
| |
2
|
P. Avgustinov, A. S. Christensen, L. Hendren, S. Kuzins, J. Lhoták, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibble. abc: An extensible AspectJ compiler. Transactions on Aspect-Oriented Software Development, 1:293--334, October 2005.
|
| |
3
|
|
| |
4
|
L. Bussard. Towards a pragmatic composition model of CORBA services based on AspectJ. In Workshop on Aspects and Dimensions of Concerns of ECOOP'02, 2000.
|
| |
5
|
M. Butler, T. Hoare, and C. Ferreira. Communicating Sequential Processes, volume 3525/2005 of Lecture Notes in Computer Science, chapter A Trace Semantics for Long-Running Transactions, pages 133--150. Springer, 2005.
|
 |
6
|
Nelio Cacho , Claudio Sant'Anna , Eduardo Figueiredo , Alessandro Garcia , Thais Batista , Carlos Lucena, Composing design patterns: a scalability study of aspect-oriented programming, Proceedings of the 5th international conference on Aspect-oriented software development, March 20-24, 2006, Bonn, Germany
[doi> 10.1145/1119655.1119672]
|
| |
7
|
C. Clifton and G. Leavens. Obliviousness, modular reasoning, and the behavioral subtyping analogy. In SPLAT'03, 2003.
|
| |
8
|
A. Colyer. Towards widespread adoption of AOSD. In AOSD'03, 2003.
|
| |
9
|
|
 |
10
|
Fernando Castor Filho , Nelio Cacho , Eduardo Figueiredo , Raquel Maranhão , Alessandro Garcia , Cecília Mary F. Rubira, Exceptions and aspects: the devil is in the details, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
[doi> 10.1145/1181775.1181794]
|
| |
11
|
R. Filman and D. Friedman. Aspect-Oriented Programming Is Quantification and Obliviousness, pages 21--35. Addison-Wesley, 2005.
|
| |
12
|
A. Garcia, C. Sant'Anna, C. Chavez, V. T. da Silva, C. de Lucena, and A. von Staa. Software Engineering for Multi-Agent Systems II, chapter Separation of Concerns in Multi-agent Systems: An Empirical Study, pages 49--72. Springer, 2004.
|
 |
13
|
Alessandro Garcia , Cláudio Sant'Anna , Eduardo Figueiredo , Uirá Kulesza , Carlos Lucena , Arndt von Staa, Modularizing design patterns with aspects: a quantitative study, Proceedings of the 4th international conference on Aspect-oriented software development, p.3-14, March 14-18, 2005, Chicago, Illinois
[doi> 10.1145/1052898.1052899]
|
| |
14
|
Sudipto Ghosh , Robert B. France , Devon M. Simmonds , Abhijit Bare , Brahmila Kamalakar , Roopashree P. Shankar , Gagan Tandon , Peter Vile , Shuxin Yin, A middleware-transparent approach to developing distributed applications: Research Articles, Software—Practice & Experience, v.35 n.12, p.1131-1154, October 2005
[doi> 10.1002/spe.v35:12]
|
| |
15
|
|
| |
16
|
William G. Griswold , Kevin Sullivan , Yuanyuan Song , Macneil Shonle , Nishit Tewari , Yuanfang Cai , Hridesh Rajan, Modular Software Design with Crosscutting Interfaces, IEEE Software, v.23 n.1, p.51-60, January 2006
[doi> 10.1109/MS.2006.24]
|
| |
17
|
S. Gudmundson and G. Kiczales. Addressing practical software development issues in AspectJ with a pointcut interface. In Workshop on Advanced Separation of Concerns of ECOOP'01, 2001.
|
| |
18
|
|
| |
19
|
K. Hoffman and P. Eugster. Aspects and exception handling: The case of explicit join points. Technical Report ejp-200703-1, Purdue University, 2007.
|
| |
20
|
Gregor Kiczales , Erik Hilsdale , Jim Hugunin , Mik Kersten , Jeffrey Palm , William G. Griswold, An Overview of AspectJ, Proceedings of the 15th European Conference on Object-Oriented Programming, p.327-353, June 18-22, 2001
|
| |
21
|
G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In ECOOP'97, pages 220--242, 1997.
|
 |
22
|
|
| |
23
|
|
| |
24
|
|
 |
25
|
|
 |
26
|
|
| |
27
|
|
 |
28
|
Kevin Sullivan , William G. Griswold , Yuanyuan Song , Yuanfang Cai , Macneil Shonle , Nishit Tewari , Hridesh Rajan, Information hiding interfaces for aspect-oriented design, Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, September 05-09, 2005, Lisbon, Portugal
|
| |
29
|
Peri Tarr , Stanley M. Sutton, Jr., Programming heterogeneous transactions for software development environments, Proceedings of the 15th international conference on Software Engineering, p.358-369, May 17-21, 1993, Baltimore, Maryland, United States
|
| |
30
|
|
 |
31
|
|
|