Abstract
Through implicit invocation, procedures are called without explicitly referencing them. Implicit announcement adds to this implicitness by not only keeping implicit which procedures are called, but also where or when—under implicit invocation with implicit announcement, the call site contains no signs of that, or what it calls. Recently, aspect-oriented programming has popularized implicit invocation with implicit announcement as a possibility to separate concerns that lead to interwoven code if conventional programming techniques are used. However, as has been noted elsewhere, as currently implemented it establishes strong implicit dependencies between components, hampering independent software development and evolution. To address this problem, we present a type-based modularization of implicit invocation with implicit announcement that is inspired by how interfaces and exceptions are realized in Java. By extending an existing compiler and by rewriting several programs to make use of our proposed language constructs, we found that the imposed declaration clutter tends to be moderate; in particular, we found that, for general applications of implicit invocation with implicit announcement, fears that programs utilizing our form of modularization become unreasonably verbose are unjustified.
- Aldrich, J. 2005. Open modules: Modular reasoning about advice. In Proceedings of the 19th European Conference on Object-Oriented Programming. 144--168. Google ScholarDigital Library
- Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. Adding trace matching with free variables to AspectJ. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. Oct. 16--20. Google ScholarDigital Library
- Apel, S., Kästner, C., Leich, T., and Saake, G. 2007. Aspect refinement—unifying AOP and stepwise refinement. J. Obj. Tech. 6, 9, 13--33.Google ScholarCross Ref
- Apel, S., Leich, T., and Saake, G. 2008. Aspectual feature modules. IEEE Trans. Softw. Eng. 34, 2, 162--180. Google ScholarDigital Library
- Apel, S. and Batory, D. 2008. How AspectJ is used: An analysis of eleven Aspectj programs. J. Obj. Tech. 9, 1, 117--142.Google ScholarCross Ref
- Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. Optimising AspectJ. SIGPLAN Not. 40, 6, 117--128. Google ScholarDigital Library
- Avgustinov, P., Christensen, A. S., Hendren, L. J., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2006. abc: An extensible AspectJ compiler. Trans. Aspect-Orient. Softw. Develop. 1, 293--334. Google ScholarDigital Library
- Bobrow, D. G., DeMichiel, L. G., Gabriel, R. P., Keene, S. E., Kiczales, G., and Moon, D. A. 1988. Common Lisp object system specification. SIGPLAN Not. 23, SI, 1--142. Google ScholarDigital Library
- Bodden, E., Forster, F., and Steimann, F. 2006. Avoiding infinite recursion with stratified aspects. In Proceedings of NODe/GSEM. GI-Edition Lecture Notes in Informatics, P-88. GI, 49--64.Google Scholar
- Bracha, G. and Cook, W. 1990. Mixin-based inheritance. In Proceedings of the European Conference on Object-Oriented Programming/Proceedings on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA/ECOOP). ACM Press, New York, NY, 303--311. Google ScholarDigital Library
- Clifton, C. and Leavens, G. 2002. Observers and assistants: A proposal for modular aspect-oriented reasoning. In Proceedings of the Workshop on Foundations of Aspect-Oriented Languages (FOAL). 33--44.Google Scholar
- Clifton, C. and Leavens, G. 2003. Obliviousness, modular reasoning, and the behavioral subtyping analogy. In Proceedings of the Workshop on Software Engineering Properties of Languages for Aspect Technologies (SPLAT). Workshop at AOSD.Google Scholar
- Clifton, C., Leavens, G.T., and Noble, J. 2007. MAO: Ownership and effects for more effective reasoning about aspects. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 451--475. Google ScholarDigital Library
- Coelho, R., Rashid, A., Garcia, A., Ferrari, F., Cacho, N., Kulesza, U., Staa, A., and Lucena, C. 2008. Assessing the impact of aspects on exception flows: An exploratory study. In Proceedings of the 22nd European Conference on Object-Oriented Programming, J. Vitek, Ed. Lecture Notes In Computer Science, vol. 5142. Springer-Verlag, Berlin, 207--234. Google ScholarDigital Library
- Dantas, D. S. and Walker, D. 2006. Harmless advice. In Proceedings of the Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, New York, NY, 383--396. Google ScholarDigital Library
- Douence, R., Motelet, O., and Südholt, M. 2001. A formal definition of crosscuts. In Proceedings of the 3rd International Conference on Metalevel Architectures and Separation of Crosscutting Concerns, A. Yonezawa and S. Matsuoka, Eds. Lecture Notes In Computer Science, vol. 2192. Springer-Verlag, Berlin, Germany, 170--186. Google ScholarDigital Library
- Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., and Black, A. P. 2006. Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 28, 2, 331--388. Google ScholarDigital Library
- Eichberg, M., Mezini, M,. and Ostermann, K. 2004. Pointcuts as functional queries. In Proceedings of the 2nd Asian Symposium on Programming Languages and Systems (APLAS), Wei-Ngan Chin, Ed. Lecture Notes in Computer Science, vol. 3302. Springer, Berlin, Germany, 366--381.Google Scholar
- Elrad, T., Filman, R. E., and Bader, A. 2001. Aspect-oriented programming: Introduction. Comm. ACM 44, 10, 29--32. Google ScholarDigital Library
- Ernst, E. and Lorenz, D. H. 2003. Aspects and polymorphism in AspectJ. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, New York, NY, 150--157. Google ScholarDigital Library
- Eswaran, K. P. 1976. Specifications, implementations and interactions of a trigger subsystem in an integrated database system. IBM res. rep. RJ1820 (Nov.), IBM, Yorktown Heights, NY.Google Scholar
- Eugster, P. T., Felber, P. A., Guerraoui, R., and Kermarrec, A. 2003. The many faces of publish/subscribe. ACM Comput. Surv. 35, 2, 114--131. Google ScholarDigital Library
- Eugster, P. 2007. Type-based publish/subscribe: Concepts and experiences. ACM Trans. Program. Lang. Syst. 29, 1, 6. Google ScholarDigital Library
- Filman, R. E. and Friedman, D. P. 2004. Aspect-oriented programming is quantification and obliviousness In Aspect-Oriented Software Development, R. E. Filman, T. Elrad, S. Clarke, and M. Askit, Eds. Addison-Wesley Longman, New York, NY.Google Scholar
- Forster, F. and Steimann, F. 2006. AOP and the antinomy of the liar. In Proceedings of the Workshop on the Foundations of Aspect-Oriented Languages (FOAL). 47--56.Google Scholar
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Garlan, D. and Scott, C. 1993. Adding implicit invocation to traditional programming languages. In Proceedings of the 15th International Conference on Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 447--455. Google ScholarDigital Library
- Garlan, D. and Shaw, M. 1994. An Introduction to Software Architecture. Tech. rep. UMI order number CS-94--166. Carnegie Mellon University, Pittsburgh, PA. Google ScholarDigital Library
- Geraci, A. 1991. IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries. IEEE, Los Alamitos, CA. Google ScholarDigital Library
- Griswold, W. G., Sullivan, K., Song, Y., Shonle, M., Tewari, N., Cai, Y., and Rajan, H. 2006. Modular software design with crosscutting interfaces. IEEE Softw. 23, 1, 51--60. Google ScholarDigital Library
- Gudmundson, S. and Kiczales, G. 2001. Addressing practical software development issues in AspectJ with a pointcut interface. In Proceedings of the Workshop on Advanced Separation of Concerns.Google Scholar
- Gybels, K. and Brichau, J. 2003. Arranging language features for more robust pattern-based crosscuts. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, New York, NY, 60--69. Google ScholarDigital Library
- Hilsdale, E. and Hugunin, J. 2004. Advice weaving in AspectJ. In Proceedings of the 3rd International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, New York, NY, 26--35. Google ScholarDigital Library
- Hoffman, K. and Eugster, P. 2007. Bridging Java and AspectJ through explicit join points. In Proceedings of the 5th International Symposium on Principles and Practice of Programming in Java (PPPJ), Vol. 272. ACM Press, New York, NY, 63--72. Google ScholarDigital Library
- Kästner, C., Apel, S., and Batory, D. 2007. A case study implementing features using AspectJ. In Proceedings of the 11th International Software Product Line Conference. IEEE Computer Society Press, Los Alamitos, CA, 223--232. Google ScholarDigital Library
- Kellens, A., Mens, K., Brichau, J., and Gybels, K. 2006. Managing the evolution of aspect-oriented software with model-based pointcuts. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'06). Lecture Notes in Computer Science, vol. 4067. Springer, Berlin, Germany, 501--525. Google ScholarDigital Library
- Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 220--242.Google Scholar
- Kiczales, G. and Mezini, M. 2005. Aspect-oriented programming and modular reasoning. In Proceedings of the 27th International Conference on Software Engineering (ICSE). ACM Press, New York, NY, 49--58. Google ScholarDigital Library
- Lee, K., Kang, K. C., Kim, M., and Park, S. 2006. Combining feature-oriented analysis and aspect-oriented programming for product line asset development. In Proceedings of the 10th International on Software Product Line Conference. IEEE Computer Society Press, Los Alamitos, CA, 103--112. Google ScholarDigital Library
- Ligatti, J., Walker, D., and Zdancewic, S. 2006. A type-theoretic interpretation of pointcuts and advice. Sci. Comput. Program. 63, 3, 240--266. Google ScholarDigital Library
- Liskov, B. H. and Wing, J. M. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6, 1811--1841. Google ScholarDigital Library
- Lopes, C. V., Dourish, P., Lorenz, D. H., and Lieberherr, K. 2003. Beyond AOP: Toward naturalistic programming. In Proceedings of the Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, New York, NY, 198--207. Google ScholarDigital Library
- Madsen, O. L. and Møller-Pedersen, B. 1989. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA). ACM Press, New York, NY, 397--406. Google ScholarDigital Library
- Masuhara, H. and Kawauchi, K. 2003. Dataflow pointcut in aspect-oriented programming. In Proceedings of the First Asian Symposium on Programming Languages and Systems (APLAS'03). Lecture Notes in Computer Science, vol. 2895. Springer, Berlin, Germany, 105--121.Google Scholar
- Meyer, B. 1997. Object-Oriented Software Construction, 2nd Ed. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Mikhajlov, L. and Sekerinski, E. 1998. A study of the fragile base class problem. In Proceedings of the 12th European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1445. Springer-Verlag, Berlin, Germany, 355--382. Google ScholarDigital Library
- Murphy, G. C., Lai, A., Walker, R. J., and Robillard, M. P. 2001. Separating features in source code: An exploratory study. In Proceedings of the 23rd International Conference on Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 275--284. Google ScholarDigital Library
- Notkin, D., Garlan, D., Griswold, W. G., and Sullivan, K. J. 1993. Adding implicit invocation to languages: Three approaches. In Proceedings of the 1st JSSST International Symposium on Object Technologies for Advanced Software. S. Nishio and A. Yonezawa, Eds. Lecture Notes in Computer Science, vol. 742. Springer-Verlag, Berlin, Germany, 489--510. Google ScholarDigital Library
- Ongkingco, N., Avgustinov, P., Tibble, J., Hendren, L., de Moor, O., and Sittampalam, G. 2006. Adding open modules to AspectJ. In Proceedings of the 5th International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, New York, NY, 39--50. Google ScholarDigital Library
- Ossher, H. and Tarr, P. 2000. Hyper/J: Multi-dimensional separation of concerns for Java. In Proceedings of the 22nd International Conference on Software Engineering (ICSE). ACM Press, New York, NY, 734--737. Google ScholarDigital Library
- Ostermann, K., Mezini, M., and Bockisch, C. 2005. Expressive pointcuts for increased modularity. In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP'05) Lecture Notes in Computer Science, vol. 3586. Springer-Verlag, Berlin, Germany, 214--240. Google ScholarDigital Library
- Rajan, H. and Sullivan, K. 2003. Eos: Instance-level aspects for integrated system design. In Proceedings of the 9th European Software Engineering Conference Held Jointly with 11th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE-11). ACM Press, New York, NY, 297--306. Google ScholarDigital Library
- Rajan, H. and Sullivan, K. J. 2005. Classpects: Unifying aspect- and object-oriented language design. In Proceedings of the 27th International Conference on Software Engineering (ICSE). ACM Press, New York, NY, 59--68. Google ScholarDigital Library
- Rajan, H., Dyer, R., Hanna, Y., and Narayanappa, H. 2006. Preserving separation of concerns through compilation. In Proceedings of the Workshop on Software Engineering Properties of Languages and Aspect Technologies (SPLAT). L. Bergmans, J. Brichau, and E. Ernst, Eds. Workshop affiliated with AOSD.Google Scholar
- Rajan, H. and Leavens, G. T. 2008. Ptolemy: A language with quantified, typed events. In Proceedings of the 22nd European Conference on Object-Oriented Programming. J. Vitek, Ed. Lecture Notes in Computer Science, vol. 5142. Springer-Verlag, Berlin, Germany, 155--179. Google ScholarDigital Library
- Reiss, S. P. 1990. Interacting with the FIELD environment. Softw. Pract. Exper. 20, S1, 89--115. Google ScholarDigital Library
- Rho, T., Kniesel, G. and Appeltauer, M. 2006. Fine-grained generic aspects. In Proceedings of the Workshop on Foundations of Aspect-Oriented Languages (FOAL). G. Leavens, C. Clifton, R. Lämmel, and M. Mezini, Eds., (Workshop affiliated with AOSD.)Google Scholar
- Riehle, D. 1996. The event notification pattern—integrating implicit invocation with object-orientation. Theor. Pract. Obj. Syst. 2, 1, 43--52. Google ScholarDigital Library
- Sakurai, K. and Masuhara, H. 2008. Test-based pointcuts for robust and fine-grained join point specification. In Proceedings of the 7th International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, New York, NY, 96--107. Google ScholarDigital Library
- Steimann, F. 2006. The paradoxical success of aspect-oriented programming. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM Press, New York, NY, 481--497. Google ScholarDigital Library
- Steimann, F. and Mayer, P. 2005. Patterns of interface-based programming. J. Obj. Tech. 4, 5, 75--94.Google ScholarCross Ref
- Störzer, M. and Graf, J. 2005. Using pointcut delta analysis to support evolution of aspect-oriented software. In Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM). IEEE Computer Society Press, Los Alamitos, CA, 653--656. Google ScholarDigital Library
- Sullivan, K. and Notkin, D. 1990. Reconciling environment integration and component independence. SIGSOFT Softw. Eng. Notes 15, 6, 22--33. Google ScholarDigital Library
- Sullivan, K. J. and Notkin, D. 1992. Reconciling environment integration and software evolution. ACM Trans. Softw. Eng. Methodol. 1, 3, 229--268. Google ScholarDigital Library
- Sullivan, K., Griswold, W. G., Song, Y., Cai, Y., Shonle, M., Tewari, N., and Rajan, H. 2005. Information hiding interfaces for aspect-oriented design. In Proceedings of the 10th European Software Engineering Conference Held Jointly with the 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE-11). ACM Press, New York, NY, 166--175. Google ScholarDigital Library
- Tarr, P., Ossher, H., Harrison, W., and Sutton, S. M. 1999. N degrees of separation: Multi-dimensional separation of concerns. In Proceedings of the 21st International Conference on Software Engineering (ICSE). ACM Press, New York, NY, 107--119. Google ScholarDigital Library
- van Deursen, A., Marin, M., and Moonen, L. 2005. AJHotDraw: A showcase for refactoring to aspects. In Proceedings of the AOSD Workshop on Linking Aspects and Evolution (LATE).Google Scholar
- Wirth, N. 1988. Type extensions. ACM Trans. Program. Lang. Syst. 10, 2, 204--214. Google ScholarDigital Library
- Xu, J., Rajan, H., and Sullivan, K. 2004. Understanding aspects via implicit invocation. In Proceedings of the 19th IEEE International Conference on Automated Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 332--335. Google ScholarDigital Library
Index Terms
- Types and modularity for implicit invocation with implicit announcement
Recommendations
Implicit invocation of traits
SAC '10: Proceedings of the 2010 ACM Symposium on Applied ComputingWe propose the introduction of a special kind of traits that implement methods implicitly invoked when an event of a given type occurs. Events are announced explicitly in the source code at their place of origin, and classes publishing events, as well ...
Join point interfaces for safe and flexible decoupling of aspects
In current aspect-oriented systems, aspects usually carry, through their pointcuts, explicit references to the base code. Those references are fragile and hinder important software engineering properties such as modular reasoning and independent ...
Trading obliviousness for modularity with cooperative aspect-oriented programming
In memoriam, fault detection and localization, formal methods, modeling and designThe potential of aspect-oriented programming to adequately capture crosscutting concerns has yet to be fully realized. For example, authors have detailed significant challenges in creating reusable aspect component libraries. One proposed solution is to ...
Comments