ABSTRACT
Some in the aspect-oriented community view a programming language as aspect-oriented only if it allows programmers to perfectly eliminate scattering and tangling. That is, languages that do not allow programmers to have maximal quantification and perfect obliviousness are not viewed as aspect-oriented. On the other hand, some detractors of aspect-oriented software development view maximal quantification and perfect obliviousness as causing problems, such as difficulties in reasoning or maintenance.
Both views ignore good language design and engineering practice, which suggests trying to simultaneously optimize for several goals. That is, designers of aspect-oriented languages that are intended for wide use should be prepared to compromise quantification and obliviousness to some (small) extent, if doing so helps programmers solve other problems. Indeed, balancing competing requirements is an essential part of engineering. Simultaneously optimizing for several language design goals becomes possible when one views these goals, such as minimizing scattering and tangling, not as all-or-nothing predicates, but as measures on a continuous scale. Since most language design goals will only be partially met, it seems best to call them "concerns."
- J. Aldrich. Open modules: Modular reasoning about advice. In A. P. Black, editor, ECOOP 2005 -- Object-Oriented Programming 19th European Conference, Glasgow, UK, volume 3586 of Lecture Notes in Computer Science, pages 144--168. Springer-Verlag, Berlin, July 2005. Google ScholarDigital Library
- AspectJ Team. The AspectJ programming guide. Version 1.5.3., Available from http://eclipse.org/aspectj, 2006.Google Scholar
- L. Bergmans and M. Aksit. Composing crosscutting concerns using Composition Filters. Commun. ACM, 44(10):51--57, Oct. 2001. Google ScholarDigital Library
- L. Bergmans and M. Aksit. Principles and design rationale of Composition Filters. In R. Filman, T. Elrad, S. Clarke, and M. Aksit, editors, Aspect-Oriented Software Development. Addison-Wesley, 2004.Google Scholar
- C. Clifton. A design discipline and language features for modular reasoning in aspect-oriented programs. Technical Report 05--15, Department of Computer Science, Iowa State University, 226 Atanasoff Hall, Ames, Iowa 50011, July 2005.Google ScholarCross Ref
- C. Clifton and G. T. Leavens. Observers and assistants: A proposal for modular aspect-oriented reasoning. In G. T. Leavens and R. Cytron, editors, FOAL 2002 Proceedings: Foundations of Aspect-Oriented Languages Workshop at AOSD 2002, number 02--06 in Technical Reports, pages 33--44. Department of Computer Science, Iowa State University, Apr. 2002.Google Scholar
- C. Clifton and G. T. Leavens. Spectators and assistants: Enabling modular aspect-oriented reasoning. Technical Report 02--10, Iowa State University, Department of Computer Science, Oct. 2002.Google Scholar
- C. Clifton and G. T. Leavens. A design discipline and language features for formal modular reasoning in aspect-oriented programs. Technical Report 05-23, Dept. of Computer Science, Iowa State University, Ames, IA, 50011, Jan. 2005.Google ScholarCross Ref
- C. Clifton, G. T. Leavens, and J. Noble. Ownership and effects for more effective reasoning about aspects. Technical Report 06--35, Dept. of Computer Science, Iowa State University, Ames, IA, 50011, Dec. 2006. To appear in ECOOP 2007. Google ScholarDigital Library
- E. W. Dijkstra. Go to statement considered harmful. Commun. ACM, 11(3):147--148, Mar. 1968. Google ScholarDigital Library
- R. E. Filman and D. P. Friedman. Aspect-oriented programming is quantification and obliviousness. In OOPSLA 2000 Workshop on Advanced Separation of Concerns, Minneapolis, MN, Oct. 2000.Google Scholar
- R. E. Filman and D. P. Friedman. Aspect-oriented programming is quantification and obliviousness. In M. Akşit, S. Clarke, T. Elrad, and R. E. Filman, editors, Aspect-Oriented Software Development. Addison-Wesley, Reading, MA, 2004.Google Scholar
- R. E. Filman and K. Havelund. The effect of AOP on software engineering, with particular attention to OIF and event quantification. In SPLAT '03, Mar. 2003. http://tinyurl.com/2euk95.Google Scholar
- L. Flon. On research in structured programming. ACM SIGPLAN Notices, 10(10):16--17, Oct. 1975. Google ScholarDigital Library
- J. B. Goodenough. Exception handling: Issues and a proposed notation. Commun. ACM, 18(12):683--696, Dec. 1975. Google ScholarDigital Library
- W. G. Griswold, K. Sullivan, Y. Song, M. Shonle, N. Tewari, Y. Cai, and H. Rajan. Modular software design with crosscutting interfaces. IEEE Software, pages 51--60, Jan/Feb 2006. Google ScholarDigital Library
- S. Gudmundson and G. Kiczales. Addressing practical software development issues in AspectJ with a pointcut interface. In ECOOP 2001 Workshop on Advanced Separation of Concerns, 2001.Google Scholar
- G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of AspectJ. In J. L. Knudsen, editor, ECOOP 2001 -- Object-Oriented Programming 15th European Conference, Budapest Hungary, volume 2072 of Lecture Notes in Computer Science, pages 327--353. Springer-Verlag, Berlin, June 2001. Google ScholarDigital Library
- G. Kiczales and M. Mezini. Aspect-oriented programming and modular reasoning. In Proc. of the 27th International Conference on Software Engineering, pages 49--58. ACM, 2005. Google ScholarDigital Library
- D. E. Knuth. Structured programming with goto statements. ACM Comput. Surv., 6(4):261--301, Dec. 1974. Google ScholarDigital Library
- R. Laddad. AspectJ in Action. Manning Publications Co., Grennwich, Conn., 2003.Google Scholar
- D. Larochelle, K. Scheidt, K. Sullivan, Y. Wei, J. Winstead, and A. Wood. Join point encapsulation. In SPLAT '03, Mar. 2003. http://tinyur1.com/26on14.Google Scholar
- B. H. Liskov and A. Snyder. Exception handling in CLU. IEEE Transactions on Software Engineering, SE-5(6):546--558, Nov. 1979.Google ScholarDigital Library
- R. E. Lopez-Herrejon and D. Batory. Improving incremental development in AspectJ by bounding quantification. In SPLAT '05, Mar. 2005. http://tinyurl.com/25shp3.Google Scholar
- R. Milner. A theory of type polymorphism in programming. J. Comput. Syst. Sci., 17(3):348--375, Dec. 1978.Google ScholarCross Ref
- H. Ossher. Confirmed join points. In SPLAT '05, Mar. 2005. http://tinyurl.com/2xzffu.Google Scholar
- G. L. Steele, Jr. Building interpreters by composing monads. In Conference Record of POPL '94: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland, Oregon, pages 472--492. ACM, Jan. 1994. Google ScholarDigital Library
- F. Steimann. The paradoxical success of aspect-oriented programming. In OOPSLA 2006: Proceedings of the 21st International Conference on Object-oriented Programming Systems, Languages, and Applications, ACM SIGPLAN Notices, pages 481--497, New York, NY, Oct. 2006. ACM. Google ScholarDigital Library
- K. Sullivan, W. Griswold, Y. Song, Y. Cai, M. Shonle, N. Tewari, and H. Rajan. Information hiding interfaces for aspect-oriented design. In Proc. of the 13th ACM SIGSOFT symposium on the Foundations of software engineering (FSE-13), pages 166--175, Lisbon, Portugal, May 2005. ACM Press. Google ScholarDigital Library
- P. L. Tarr, H. Ossher, W. H. Harrison, and S. M. Sutton Jr. N degrees of separation: Multi-dimensional separation of concerns. In ICSE '99: Proceedings of the 21st international conference on Software engineering, pages 107--119, New York, NY, 1999. ACM. Google ScholarDigital Library
Index Terms
- Multiple concerns in aspect-oriented language design: a language engineering approach to balancing benefits, with examples
Recommendations
Aspect-oriented programming
ESEC/FSE-9: Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineeringAspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use ...
Aspect-oriented programming
Aspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use ...
Experimental aspect-oriented language - AspectCOOL
SAC '02: Proceedings of the 2002 ACM symposium on Applied computingAspect-oriented programming (AOP) is a programming technique for modularizing concerns that crosscut the basic functionality of programs. In AOP, aspect languages are used to describe properties, which crosscut basic functionality, in a clean and a ...
Comments