[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Types and modularity for implicit invocation with implicit announcement

Published: 06 July 2010 Publication History

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.
[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.
[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.
[4]
Apel, S., Leich, T., and Saake, G. 2008. Aspectual feature modules. IEEE Trans. Softw. Eng. 34, 2, 162--180.
[5]
Apel, S. and Batory, D. 2008. How AspectJ is used: An analysis of eleven Aspectj programs. J. Obj. Tech. 9, 1, 117--142.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[19]
Elrad, T., Filman, R. E., and Bader, A. 2001. Aspect-oriented programming: Introduction. Comm. ACM 44, 10, 29--32.
[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.
[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.
[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.
[23]
Eugster, P. 2007. Type-based publish/subscribe: Concepts and experiences. ACM Trans. Program. Lang. Syst. 29, 1, 6.
[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.
[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.
[26]
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA.
[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.
[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.
[29]
Geraci, A. 1991. IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries. IEEE, Los Alamitos, CA.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[40]
Ligatti, J., Walker, D., and Zdancewic, S. 2006. A type-theoretic interpretation of pointcuts and advice. Sci. Comput. Program. 63, 3, 240--266.
[41]
Liskov, B. H. and Wing, J. M. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6, 1811--1841.
[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.
[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.
[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.
[45]
Meyer, B. 1997. Object-Oriented Software Construction, 2nd Ed. Prentice-Hall, Englewood Cliffs, NJ.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[56]
Reiss, S. P. 1990. Interacting with the FIELD environment. Softw. Pract. Exper. 20, S1, 89--115.
[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.)
[58]
Riehle, D. 1996. The event notification pattern—integrating implicit invocation with object-orientation. Theor. Pract. Obj. Syst. 2, 1, 43--52.
[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.
[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.
[61]
Steimann, F. and Mayer, P. 2005. Patterns of interface-based programming. J. Obj. Tech. 4, 5, 75--94.
[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.
[63]
Sullivan, K. and Notkin, D. 1990. Reconciling environment integration and component independence. SIGSOFT Softw. Eng. Notes 15, 6, 22--33.
[64]
Sullivan, K. J. and Notkin, D. 1992. Reconciling environment integration and software evolution. ACM Trans. Softw. Eng. Methodol. 1, 3, 229--268.
[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.
[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.
[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).
[68]
Wirth, N. 1988. Type extensions. ACM Trans. Program. Lang. Syst. 10, 2, 204--214.
[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.

Cited By

View all
  • (2023)An expressive and modular layer activation mechanism for Context-Oriented ProgrammingInformation and Software Technology10.1016/j.infsof.2022.107132156(107132)Online publication date: Apr-2023
  • (2020)Interfaces for Modular Reasoning in Context-Oriented ProgrammingProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3423152(1-7)Online publication date: 21-Jul-2020
  • (2019)Chemical foundations of distributed aspectsDistributed Computing10.1007/s00446-018-0334-632:3(193-216)Online publication date: 1-Jun-2019
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

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
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: 06 July 2010
Accepted: 01 March 2009
Revised: 01 December 2008
Received: 01 March 2008
Published in TOSEM Volume 20, Issue 1

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Implicit invocation
  2. aspect-oriented programming
  3. event-driven programming
  4. modularity
  5. publish/subscribe
  6. typing

Qualifiers

  • Research-article
  • Research
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)1
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2023)An expressive and modular layer activation mechanism for Context-Oriented ProgrammingInformation and Software Technology10.1016/j.infsof.2022.107132156(107132)Online publication date: Apr-2023
  • (2020)Interfaces for Modular Reasoning in Context-Oriented ProgrammingProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3423152(1-7)Online publication date: 21-Jul-2020
  • (2019)Chemical foundations of distributed aspectsDistributed Computing10.1007/s00446-018-0334-632:3(193-216)Online publication date: 1-Jun-2019
  • (2018)Overcoming Issues of 3D Software Visualization through Immersive Augmented Reality2018 IEEE Working Conference on Software Visualization (VISSOFT)10.1109/VISSOFT.2018.00014(54-64)Online publication date: Sep-2018
  • (2018)An empirical study on the impact of AspectJ on software evolvabilityEmpirical Software Engineering10.1007/s10664-017-9580-723:4(2018-2050)Online publication date: 1-Aug-2018
  • (2017)Aspect-Oriented Programming ReloadedProceedings of the 21st Brazilian Symposium on Programming Languages10.1145/3125374.3125383(1-8)Online publication date: 21-Sep-2017
  • (2017)Detecting broken pointcuts using structural commonality and degree of interestScience of Computer Programming10.1016/j.scico.2017.06.011150(56-74)Online publication date: Dec-2017
  • (2017)Modular composition of multiple applications with architectural event modulesSoftware—Practice & Experience10.1002/spe.247847:7(1013-1025)Online publication date: 1-Jul-2017
  • (2016)Reasoning tradeoffs in languages with enhanced modularity featuresProceedings of the 15th International Conference on Modularity10.1145/2889443.2889447(13-24)Online publication date: 14-Mar-2016
  • (2016)A type-and-effect system for asynchronous, typed eventsProceedings of the 15th International Conference on Modularity10.1145/2889443.2889446(42-53)Online publication date: 14-Mar-2016
  • Show More Cited By

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media