Abstract
To increase modularity, many aspect-oriented programming languages provide a mechanism based on implicit invocation: An aspect can influence runtime behavior of other modules without the need that these modules refer to the aspect. Recent studies show that a significant part of reported bugs in aspect-oriented programs are caused exactly by this implicitness. These bugs are difficult to detect, because aspect-oriented source code elements and their locations are transformed or even lost after compilation. We investigate four dedicated fault models and identify 11 tasks that a debugger should be able to perform for detecting aspect-orientation-specific faults. We show that existing debuggers are not powerful enough to support all identified tasks, because the aspect-oriented abstractions are lost after compilation.
This paper describes the design and implementation of a debugger for aspect-oriented languages using a dedicated intermediate representation preserving the abstraction level of aspect-oriented source code. This is based on a model of the more general formalism of advanced dispatching. Based on this model, we implement a user interface with functionalities supporting the identified tasks, such as visualizing pointcut evaluation and program composition. Due to the generality of our intermediate representation, our debugger can be used for a wide range of programming languages. To account for the syntactic differences among these languages, we allow language designers to customize the textual representations on the user interface.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
JBoss AOP (2008), http://www.jboss.org/jbossaop
Alexander, R.T., Bieman, J.M., Andrews, A.A.: Towards the Systematic Testing of Aspect-Oriented Programs. Technical report (2004)
Apter, Y., Lorenz, D.H., Mishali, O.: A Debug Interface for Debugging Multiple Domain Specific Aspect Languages. In: Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development, AOSD 2012, pp. 47–58. ACM, New York (2012)
Aracic, I., Gasiunas, V., Mezini, M., Ostermann, K.: An Overview of CaesarJ. In: Rashid, A., Akşit, M. (eds.) Transactions on AOSD I. LNCS, vol. 3880, pp. 135–173. Springer, Heidelberg (2006)
Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: abc: An extensible AspectJ compiler. In: Proceedings of the 4th AOSD, pp. 87–98. ACM, New York (2005)
Baekken, J.S.: A Fault Model for Pointcuts and Advice in AspectJ Programs. Master’s thesis, School of Electronical Engineering and Computer Science, Washington State University (2006)
Bockisch, C., Haupt, M., Mezini, M., Mitschke, R.: Envelope-Based Weaving for Faster Aspect Compilers. In: NODe/GSEM. LNI, vol. 69, pp. 3–18. GI (2005)
Bockisch, C., Malakuti, S., Akşit, M., Katz, S.: Making Aspects Natural: Events and Composition. In: Proceedings of the 10th AOSD, pp. 285–300. ACM, New York (2011)
Bockisch, C., Sewe, A., Mezini, M., Akşit, M.: An Overview of ALIA4J: An Execution Model for Advanced-Dispatching Languages. In: Bishop, J., Vallecillo, A. (eds.) TOOLS 2011. LNCS, vol. 6705, pp. 131–146. Springer, Heidelberg (2011)
Bockisch, C., Sewe, A., Yin, H., Mezini, M., Aksit, M.: An In-Depth Look at ALIA4J. Journal of Object Technology 11(1), 1–28 (2012)
Bruls, M., Huizing, K., van Wijk, J.: Squarified Treemaps. In: Proceedings of the Joint Eurographics and IEEE TCVG Symposium on Visualization, pp. 33–42. Press (1999)
Bryant, R.E.: Graph-Based Algorithms for Boolean Function Manipulation. IEEE Trans. Comput. 35, 677–691 (1986)
Clifton, C., Millstein, T., Leavens, G.T., Chambers, C.: MultiJava: Design Rationale, Compiler Implementation, and Applications. ACM Transactions on Programming Languages and Systems 28(3) (2006)
Coelho, W., Murphy, G.C.: Presenting Crosscutting Structure with Active Models. In: Proceedings of the 5th AOSD, pp. 158–168. ACM, New York (2006)
De Borger, W., Lagaisse, B., Joosen, W.: A Generic and Reflective Debugging Architecture to Support Runtime Visibility and Traceability of Aspects. In: Proceedings of the 8th AOSD, pp. 173–184. ACM, New York (2009)
Eaddy, M., Aho, A., Hu, W., McDonald, P., Burger, J.: Debugging Aspect-Enabled Programs. In: Lumpe, M., Vanderperren, W. (eds.) SC 2007. LNCS, vol. 4829, pp. 200–215. Springer, Heidelberg (2007)
Fabry, J., Kellens, A., Ducasse, S.: AspectMaps: A Scalable Visualization of Join Point Shadows. In: ICPC, pp. 121–130 (2011)
Ferrari, F., Burrows, R., Lemos, O., Garcia, A., Figueiredo, E., Cacho, N., Lopes, F., Temudo, N., Silva, L., Soares, S., Rashid, A., Masiero, P., Batista, T., Maldonado, J.: An Exploratory Study of Fault-Proneness in Evolving Aspect-Oriented Programs. In: Proceedings of the 32nd ICSE, vol. 1, pp. 65–74. ACM, New York (2010)
Ferrari, F.C., Maldonado, J.C., Rashid, A.: Mutation Testing for Aspect-Oriented Programs. In: Proceedings of the 2008 ICST, pp. 52–61. IEEE Computer Society, Washington, DC (2008)
Heer, J., Card, S.K., Landay, J.A.: prefuse: a toolkit for interactive information visualization. In: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI 2005, pp. 421–430. ACM, New York (2005)
Herrmann, S., Hundt, C., Mosconi, M., Pfeiffer, C., Wloka, J.: Das Object Teams Development Tooling. Softwaretechnik-Trends 26(4), 42–43 (2006)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Ceccato, F.M., Tonella, P.: Is AOP code easier to test than OOP code? In: Workshop on Testing Aspect-Oriented Programs (2005)
Millstein, T., Frost, C., Ryder, J., Warth, A.: Expressive and Modular Predicate Dispatch for Java. ACM Trans. Program. Lang. Syst. 31(2), 7:1–7:54 (2009)
Pfeiffer, J., Gurd, J.R.: Visualisation-Based Tool Support for the Development of Aspect-Oriented Programs. In: Proceedings of the 5th AOSD, pp. 146–157. ACM, New York (2006)
Pothier, G., Tanter, E.: Extending Omniscient Debugging to Support Aspect-Oriented Programming. In: Proceedings of SAC, pp. 266–270. ACM, New York (2008)
Schafer, T., Mezini, M.: Towards More Flexibility in Software Visualization Tools. In: Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis, VISSOFT 2005, p. 20. IEEE Computer Society, Washington, DC (2005)
Sewe, A., Bockisch, C., Mezini, M.: Redundancy-Free Residual Dispatch: Using Ordered Binary Decision Diagrams for Efficient Dispatch. In: Proceedings of the 7th Workshop on FOAL, pp. 1–7. ACM, New York (2008)
Suvée, D., Vanderperren, W., Jonckers, V.: JAsCo: An Aspect-Oriented Approach Tailored for Component Based Software Development. In: Proceedings of the 2nd AOSD, pp. 21–29. ACM, New York (2003)
Wulf, V., Pipek, V., Won, M.: Component-based tailorability: Enabling highly flexible software applications. Int. J. Hum.-Comput. Stud. 66(1), 1–22 (2008)
Yin, H., Bockisch, C., Aksit, M.: A Fine-Grained Debugger for Aspect-Oriented Programming. In: Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development, AOSD 2012, pp. 59–70. ACM, New York (2012)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Yin, H., Bockisch, C., Akşit, M. (2013). A Fine-Grained, Customizable Debugger for Aspect-Oriented Programming. In: Leavens, G.T., Chiba, S., Tanter, É. (eds) Transactions on Aspect-Oriented Software Development X. Lecture Notes in Computer Science, vol 7800. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-36964-3_1
Download citation
DOI: https://doi.org/10.1007/978-3-642-36964-3_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-36963-6
Online ISBN: 978-3-642-36964-3
eBook Packages: Computer ScienceComputer Science (R0)