skip to main content
research-article

Types and modularity for implicit invocation with implicit announcement

Published:06 July 2010Publication History
Skip Abstract Section

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.

References

  1. Aldrich, J. 2005. Open modules: Modular reasoning about advice. In Proceedings of the 19th European Conference on Object-Oriented Programming. 144--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarCross RefCross Ref
  4. Apel, S., Leich, T., and Saake, G. 2008. Aspectual feature modules. IEEE Trans. Softw. Eng. 34, 2, 162--180. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Apel, S. and Batory, D. 2008. How AspectJ is used: An analysis of eleven Aspectj programs. J. Obj. Tech. 9, 1, 117--142.Google ScholarGoogle ScholarCross RefCross Ref
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle Scholar
  12. 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 ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle Scholar
  19. Elrad, T., Filman, R. E., and Bader, A. 2001. Aspect-oriented programming: Introduction. Comm. ACM 44, 10, 29--32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. Eugster, P. 2007. Type-based publish/subscribe: Concepts and experiences. ACM Trans. Program. Lang. Syst. 29, 1, 6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle Scholar
  26. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. Geraci, A. 1991. IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries. IEEE, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle Scholar
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle Scholar
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. Ligatti, J., Walker, D., and Zdancewic, S. 2006. A type-theoretic interpretation of pointcuts and advice. Sci. Comput. Program. 63, 3, 240--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Liskov, B. H. and Wing, J. M. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6, 1811--1841. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. 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 ScholarGoogle Scholar
  45. Meyer, B. 1997. Object-Oriented Software Construction, 2nd Ed. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  51. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  52. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  53. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  54. 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 ScholarGoogle Scholar
  55. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  56. Reiss, S. P. 1990. Interacting with the FIELD environment. Softw. Pract. Exper. 20, S1, 89--115. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. 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 ScholarGoogle Scholar
  58. Riehle, D. 1996. The event notification pattern—integrating implicit invocation with object-orientation. Theor. Pract. Obj. Syst. 2, 1, 43--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  60. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  61. Steimann, F. and Mayer, P. 2005. Patterns of interface-based programming. J. Obj. Tech. 4, 5, 75--94.Google ScholarGoogle ScholarCross RefCross Ref
  62. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  63. Sullivan, K. and Notkin, D. 1990. Reconciling environment integration and component independence. SIGSOFT Softw. Eng. Notes 15, 6, 22--33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Sullivan, K. J. and Notkin, D. 1992. Reconciling environment integration and software evolution. ACM Trans. Softw. Eng. Methodol. 1, 3, 229--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  66. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  67. 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 ScholarGoogle Scholar
  68. Wirth, N. 1988. Type extensions. ACM Trans. Program. Lang. Syst. 10, 2, 204--214. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Types and modularity for implicit invocation with implicit announcement

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Transactions on Software Engineering and Methodology
          ACM Transactions on Software Engineering and Methodology  Volume 20, Issue 1
          June 2010
          104 pages
          ISSN:1049-331X
          EISSN:1557-7392
          DOI:10.1145/1767751
          Issue’s Table of Contents

          Copyright © 2010 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 6 July 2010
          • Accepted: 1 March 2009
          • Revised: 1 December 2008
          • Received: 1 March 2008
          Published in tosem Volume 20, Issue 1

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader