ABSTRACT
There has been a lot of debate about the modularity of aspect-oriented programs, and in particular the ability to reason about such programs in a modular way, although it has never been defined precisely what modular reasoning means. This work analyzes what it means to reason about a program, and separates "modular reasoning" into several well-defined properties of a reasoning model.
A comparison of an OO language semantics with an AO language semantics with respect to these properties reveals that explanations of AOP that are based on weaving are a major obstacle to reasoning about AO programs in a modular way. We argue that a more modular semantics that is easier to reason about can be given to AO programs if we renounce the monotonicity of the corresponding reasoning system - a sacrifice that is well-known in artificial intelligence to model "common sense" reasoning. More generally, we claim that AOP should be understood as a form of nonmonotonic knowledge representation.
- J. Aldrich. Open modules: Modular reasoning about advice. In ECOOP'05, Lecture Notes in Computer Science, pages 144--168. Springer, 2005. Google ScholarDigital Library
- G. Amati, L. C. Aiello, and F. Pirri. Defaults as restrictions on classical Hilbert-style proofs. Journal of Logic, Language and Information, 3(4):303--326, 1994.Google ScholarCross Ref
- G. Antoniou. Non-monotonic reasoning. MIT Press, 1996.Google Scholar
- G. Antoniou. A tutorial on default logics. ACM Comput. Surv., 31(4):337--359, 1999. Google ScholarDigital Library
- G. Brewka. Reasoning about priorities in default logic. In Proceedings of the 12th national conference on Artificial intelligence (AAAI), pages 940--945. American Association for Artificial Intelligence, 1994. Google ScholarDigital Library
- G. Brewka. Well-founded semantics for extended logic programs with dynamic preferences. Journal of Artificial Intelligence Research, 4:19--36, 1996. Google ScholarDigital Library
- L. Cardelli. Program fragments, linking, and modularization. In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 266--277, New York, NY, USA, 1997. ACM Press. Google ScholarDigital Library
- K. L. Clark. Negation as failure. In Logic and Data Bases, pages 293--322, 1977.Google Scholar
- C. Clifton and G. T. Leavens. Obliviousness, modular reasoning, and the behavioral subtyping analogy. In Workshop on Software engineering Properties of Languages for Aspect Technologies (SPLAT!) at AOSD 2003., 2003.Google Scholar
- P. M. Dung and T. C. Son. An argument-based approach to reasoning with specificity. Artif. Intell., 133(1--2):35--85, 2001. Google ScholarDigital Library
- M. Goldman and S. Katz. Maven: Modular aspect verification. In TACAS, Springer LNCS 4424, pages 308--322, 2007. Google ScholarDigital Library
- C. A. R. Hoare. An axiomatic basis for computer programming. Commun. ACM, 12(10):576--580, 1969. Google ScholarDigital Library
- A. Igarashi, B. Pierce, and P. Wadler. Featherweight Java: A minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23(3):396--450, 1999. Google ScholarDigital Library
- R. Jagadeesan, A. Jeffrey, and J. Riely. A calculus of untyped aspect-oriented programs. In ECOOP 2003 - Object-Oriented Programming, 17th European Conference, pages 54--73, 2003.Google ScholarCross Ref
- G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of AspectJ. In ECOOP '01: Proceedings of the 15th European Conference on Object-Oriented Programming, pages 327--353, London, UK, 2001. Springer-Verlag. Google ScholarDigital Library
- G. Kiczales and M. Mezini. Aspect-oriented programming and modular reasoning. In ICSE '05: Proceedings of the 27th international conference on Software engineering, pages 49--58, New York, NY, USA, 2005. ACM Press. Google ScholarDigital Library
- S. Kraus, D. J. Lehmann, and M. Magidor. Nonmonotonic reasoning, preferential models and cumulative logics. Artif. Intell., 44(1--2):167--207, 1990. Google ScholarDigital Library
- S. Krishnamurthi, K. Fisler, and M. Greenberg. Verifying aspect advice modularly. In SIGSOFT FSE'04, pages 137--146. ACM, 2004. Google ScholarDigital Library
- C. Larman. Applying UML and Patterns. Prentice Hall, 2001.Google Scholar
- D. Makinson. General patterns in nonmonotonic reasoning. In Handbook of logic in artificial intelligence and logic programming (vol. 3): nonmonotonic reasoning and uncertain reasoning, pages 35--110, New York, NY, USA, 1994. Oxford University Press, Inc. Google ScholarDigital Library
- W. Marek and M. Trusczynski. Nonmonotonic Logic. Springer, 1993.Google ScholarCross Ref
- J. McCarthy. Circumscription---a form of non-monotonic reasoning. Artificial Intelligence, 13:27--39, 1980.Google ScholarDigital Library
- J. McCarthy. Applications of circumscription to formalizing common sense knowledge. Artificial Intelligence, 28:89--116, 1986. Google ScholarDigital Library
- J. McCarthy and P. J. Hayes. Some philosophical problems from the standpoint of artificial intelligence. In B. Meltzer and D. Michie, editors, Machine Intelligence 4, pages 463--502. Edinburgh University Press, 1969.Google Scholar
- B. Meyer. Object-Oriented Software Construction. Prentice Hall, second edition, 1997. Google ScholarDigital Library
- E. Moggi. A modular approach to denotational semantics. In Category Theory and Computer Science, Springer LNCS 530, pages 138--139, 1991. Google ScholarDigital Library
- R. C. Moore. Semantical considerations on nonmonotonic logic. Artif. Intell., 25(1):75--94, 1985. Google ScholarDigital Library
- P. D. Mosses. Modular structural operational semantics. J. Log. Algebr. Program., 60--61:195--228, 2004.Google ScholarCross Ref
- D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053--1058, 1972. Google ScholarDigital Library
- G. D. Plotkin. A Structural Approach to Operational Semantics. Technical Report DAIMI FN-19, University of Aarhus, 1981.Google Scholar
- R. Reiter. A logic for default reasoning. Artif. Intell., 13(1--2):81--132, 1980.Google Scholar
- J. E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge, MA, USA, 1977. Google ScholarDigital Library
- K. J. Sullivan, W. G. Griswold, Y. Song, Y. Cai, M. Shonle, N. Tewari, and H. Rajan. Information hiding interfaces for aspect-oriented design. In ESEC/SIGSOFT FSE, pages 166--175, 2005. Google ScholarDigital Library
- M. Wand, G. Kiczales, and C. Dutchyn. A semantics for advice and dynamic join points in aspect-oriented programming. ACM Trans. Program. Lang. Syst., 26(5):890--910, 2004. Google ScholarDigital Library
- P. Wegner. Concepts and paradigms of object-oriented programming. OOPS Messenger, 1:7--87, August 1990. Google ScholarDigital Library
- J. Winkler. Objectivism: "class" considered harmful. Communications of the ACM, 35(8):128--130, 1992.Google ScholarDigital Library
- Q. Xu, W. P. de Roever, and J. He. The rely-guarantee method for verifying shared variable concurrent programs. Formal Aspects of Computing, 9(2):149--174, 1997.Google ScholarCross Ref
- X. Zhao. Complexity of argument-based default reasoning with specificity. AI Commun., 16(2):107--119, 2003. Google ScholarDigital Library
Index Terms
- Reasoning about aspects with common sense
Recommendations
Composing aspects with aspects
AOSD '10: Proceedings of the 9th International Conference on Aspect-Oriented Software DevelopmentAspect-oriented programming languages modularize crosscutting concerns by separating the concerns from a base program in aspects. What they do not modularize well is the code needed to manage interactions between the aspects themselves. Therefore ...
Sort-based refactoring of crosscutting concerns to aspects
LATE '08: Proceedings of the 2008 AOSD workshop on Linking aspect technology and evolutionCrosscutting concerns in object-oriented programming hinder evolution because of their symptoms: tangling and scattering. To benefit from the modularisation capabilities for crosscutting concerns provided by aspect-oriented programming (which prevent ...
Morphing aspects: incompletely woven aspects and continuous weaving
AOSD '04: Proceedings of the 3rd international conference on Aspect-oriented software developmentWeaving is one of the fundamental mechanisms of aspect-oriented systems. A weaver composes different aspects with the base system by determining and adapting all parts where aspect specific elements are needed eventually. At runtime, timeconsuming join ...
Comments