Analyzing Exception Flows of Aspect-Oriented Programs
Resumo
The goal of exception handling mechanisms is to make programs more reliable and robust. However, the integration of exception handling mechanisms with aspect-oriented languages raises unique issues. This paper presents a PhD work whose goal was to investigate such issues. The main contributions of this work were the following: (i) to perform the first exploratory study aiming at assessing the error proneness of AOP mechanisms on exception flows of programs; (ii) the development of SAFE (Static Analysis for the Flow of Exceptions), an exception-flow analysis tool for AspectJ programs; (iii) the identification of a set of bug patterns on the exception handling code of AO systems; and (iii) the definition of an approach that enables the developer to find faults on the exception handling code statically.Referências
Anbalagan. P, Xie, T., (2008) “Automated generation of pointcut mutants for testing pointcuts in AspectJ programs”. ISSRE, 2008, p. 239-248.
Baekken, J.; Alexander, R., “A Candidate Fault Model for AspectJ Pointcuts”. ISSRE 2006, 2006, p.169-178.
Boehm. B. W. (1981), “Software Engineering Economics”. Prentice-Hall, 1981.
Bruntink, M, Deursen, A., Tourwé, T. (2006) “Discovering faults in idiom-based exception handling”. ICSE 2006, p. 242-251.
Cabral, B., Marques, P. (2007) “Exception Handling: A Field Study in Java and .NET”. ECOOP’07. vol. 4609, Springer (2007), p. 151–175.
Castor Filho,F., Garcia, A., Rubira, C. (2007)“Extracting Error Handling to Aspects: A Cookbook”. ICSM’07, 2007, p.134-143.
Ceccato, M., Tonella, P., Ricca, F. (2005) “Is AOP Code Easier or Harder to Test than OOP Code?”. Workshop on Testing Aspect-Oriented Programs, 2005.
Coelho, R, Awais, R., Garcia, A., Ferrari, F. Cacho, N., Kulesza, U., Staa, A.v., Lucena, C. (2008a) “Assessing the Impact of Aspects on Exception Flows: An Exploratory Study”, ECOOP´08, 2008, p. 207-234.
Coelho, R, Awais, R., Staa, A.v., Noble, J., Kulesza, U., Lucena, C., (2008b), “A Catalogue of Bug Patterns for Exception Handling in Aspect-Oriented Programs”, PLoP’08, 2008.
Coelho, R, Kulesza, U., Rashid, A., Staa, A.v., Lucena, C., (2008c), “Unveiling and. Taming the. Liabilities of Aspect Libraries Reuse”, SBES’08, 2008. (2nd best paper)
Coelho, R. (2008d), “Analyzing the Exception Flows of Aspect-Oriented Programs”, PhD Thesis, PUC-Rio, June 2008.
Coelho, R., Kulesza, U., Rashid, A., Staa, A.v., Lucena, C. (2009) “Unveiling and Taming Liabilities of Aspects in the Presence of Exceptions: A Static Analysis Based Approach”, Information Sciences Journal (invited for submission).
Figueiredo, E., Cacho, N.; Santanna, C., Monteiro, M.,Kulesza, U., Garcia, A., Soares, , Ferrari, F., Khan, S., Filho, F., Dantas, F. (2008) “Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability”. ICSE’08, 2008, p.261-270.
Fu, C., Ryder, B. G. (2007) “Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications”. ICSE’07, 2007, p.230-239.
Garcia, A., Santanna, C.,Figueiredo, E., Kulesza,U.,Lucena, C., Staa, A.v. (2005) “Modularizing Design Patterns with Aspects:A Quantitative Study”. AOSD’05, p.3-14.
Greenwood, P., Bartolomei, T., Figueiredo, E., Dosea, M., Garcia, A., Cacho, N., Santanna, C., Soares, S., Borba, P., Kulesza, U., Rashid, A. (2007) “On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study”. ECOOP’07, 2007, p.176-200.
Hannemann, J., Kiczales, G. (2002) “Design Pattern Implementation in Java and AspectJ”. OOPSLA’02, ACM Press, 2002, p.161-173.
Kiczales, G. Aspect-oriented programming. ACM Computing, 28(154), 1996.
Lemos, O., Vincenzi, A., Maldonado, J, Masiero, P. (2007) “Control and data flow structural testing criteria for aspect-oriented programs”. JSS, 80(6), 2007, p.862-882.
Miller, R., Anand, T. (1997) “Issues with Exception Handling in Object-Oriented Systems”. ECOOP’97, 1997, p.85–103.
Rashid, A., Chitchyan, R. (2003) “Persistence as an Aspect”. AOSD’03, 2003,p.120-129.
Robillard, M., Murphy, G., (2003) “Static Analysis to Support the Evolution of Exception Structure in Object-Oriented Systems”. ACM Trans. on Sof. Eng. Met., 12(2), 2003, p.191-221.
Romanovsky, A., Dony, C., Knudsen, J. L., and Tripathi, A. (2001) “Advances in Exception Handling Techniques”. Springer Verlag, 2001.
Soares, S., Borba, P., Laureano, E. (2006) “Distribution and Persistence as Aspects”. In: Software: Practice and Experience, Wiley, vol. 36 (7), 2006, p. 711-759.
Thomas, D. (2002) “The Deplorable State of Class Libaries”; JOT, 2002, 1(1); p.21-27.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M.C., Regnell, B., and Wesslén, A. (2000) “Experimentation in software engineering: an introduction”. Kluwer Academic Publishers, Boston, 2000.
Zhang, S., Zhao, J. (2007) “On Identifying Bug Patterns in Aspect-Oriented Programs”. COMPSAC, 2007, p.431–438.
Xie, T., Zhao, J. (2006) “A framework and tool supports for generating test inputs of AspectJ programs”. AOSD, 2006, p.190–201.
Xie, T., Zhao, J., Marinov, D.; Notkin, D. (2006) “Detecting Redundant Unit Tests for AspectJ Programs”. ISSRE, 2006, p.179-190.
Baekken, J.; Alexander, R., “A Candidate Fault Model for AspectJ Pointcuts”. ISSRE 2006, 2006, p.169-178.
Boehm. B. W. (1981), “Software Engineering Economics”. Prentice-Hall, 1981.
Bruntink, M, Deursen, A., Tourwé, T. (2006) “Discovering faults in idiom-based exception handling”. ICSE 2006, p. 242-251.
Cabral, B., Marques, P. (2007) “Exception Handling: A Field Study in Java and .NET”. ECOOP’07. vol. 4609, Springer (2007), p. 151–175.
Castor Filho,F., Garcia, A., Rubira, C. (2007)“Extracting Error Handling to Aspects: A Cookbook”. ICSM’07, 2007, p.134-143.
Ceccato, M., Tonella, P., Ricca, F. (2005) “Is AOP Code Easier or Harder to Test than OOP Code?”. Workshop on Testing Aspect-Oriented Programs, 2005.
Coelho, R, Awais, R., Garcia, A., Ferrari, F. Cacho, N., Kulesza, U., Staa, A.v., Lucena, C. (2008a) “Assessing the Impact of Aspects on Exception Flows: An Exploratory Study”, ECOOP´08, 2008, p. 207-234.
Coelho, R, Awais, R., Staa, A.v., Noble, J., Kulesza, U., Lucena, C., (2008b), “A Catalogue of Bug Patterns for Exception Handling in Aspect-Oriented Programs”, PLoP’08, 2008.
Coelho, R, Kulesza, U., Rashid, A., Staa, A.v., Lucena, C., (2008c), “Unveiling and. Taming the. Liabilities of Aspect Libraries Reuse”, SBES’08, 2008. (2nd best paper)
Coelho, R. (2008d), “Analyzing the Exception Flows of Aspect-Oriented Programs”, PhD Thesis, PUC-Rio, June 2008.
Coelho, R., Kulesza, U., Rashid, A., Staa, A.v., Lucena, C. (2009) “Unveiling and Taming Liabilities of Aspects in the Presence of Exceptions: A Static Analysis Based Approach”, Information Sciences Journal (invited for submission).
Figueiredo, E., Cacho, N.; Santanna, C., Monteiro, M.,Kulesza, U., Garcia, A., Soares, , Ferrari, F., Khan, S., Filho, F., Dantas, F. (2008) “Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability”. ICSE’08, 2008, p.261-270.
Fu, C., Ryder, B. G. (2007) “Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications”. ICSE’07, 2007, p.230-239.
Garcia, A., Santanna, C.,Figueiredo, E., Kulesza,U.,Lucena, C., Staa, A.v. (2005) “Modularizing Design Patterns with Aspects:A Quantitative Study”. AOSD’05, p.3-14.
Greenwood, P., Bartolomei, T., Figueiredo, E., Dosea, M., Garcia, A., Cacho, N., Santanna, C., Soares, S., Borba, P., Kulesza, U., Rashid, A. (2007) “On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study”. ECOOP’07, 2007, p.176-200.
Hannemann, J., Kiczales, G. (2002) “Design Pattern Implementation in Java and AspectJ”. OOPSLA’02, ACM Press, 2002, p.161-173.
Kiczales, G. Aspect-oriented programming. ACM Computing, 28(154), 1996.
Lemos, O., Vincenzi, A., Maldonado, J, Masiero, P. (2007) “Control and data flow structural testing criteria for aspect-oriented programs”. JSS, 80(6), 2007, p.862-882.
Miller, R., Anand, T. (1997) “Issues with Exception Handling in Object-Oriented Systems”. ECOOP’97, 1997, p.85–103.
Rashid, A., Chitchyan, R. (2003) “Persistence as an Aspect”. AOSD’03, 2003,p.120-129.
Robillard, M., Murphy, G., (2003) “Static Analysis to Support the Evolution of Exception Structure in Object-Oriented Systems”. ACM Trans. on Sof. Eng. Met., 12(2), 2003, p.191-221.
Romanovsky, A., Dony, C., Knudsen, J. L., and Tripathi, A. (2001) “Advances in Exception Handling Techniques”. Springer Verlag, 2001.
Soares, S., Borba, P., Laureano, E. (2006) “Distribution and Persistence as Aspects”. In: Software: Practice and Experience, Wiley, vol. 36 (7), 2006, p. 711-759.
Thomas, D. (2002) “The Deplorable State of Class Libaries”; JOT, 2002, 1(1); p.21-27.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M.C., Regnell, B., and Wesslén, A. (2000) “Experimentation in software engineering: an introduction”. Kluwer Academic Publishers, Boston, 2000.
Zhang, S., Zhao, J. (2007) “On Identifying Bug Patterns in Aspect-Oriented Programs”. COMPSAC, 2007, p.431–438.
Xie, T., Zhao, J. (2006) “A framework and tool supports for generating test inputs of AspectJ programs”. AOSD, 2006, p.190–201.
Xie, T., Zhao, J., Marinov, D.; Notkin, D. (2006) “Detecting Redundant Unit Tests for AspectJ Programs”. ISSRE, 2006, p.179-190.
Publicado
20/07/2009
Como Citar
COELHO, Roberta; STAA, Arndt von; RASHID, Awais.
Analyzing Exception Flows of Aspect-Oriented Programs. In: CONCURSO DE TESES E DISSERTAÇÕES (CTD), 22. , 2009, Bento Gonçalves/RS.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2009
.
p. 1-8.
ISSN 2763-8820.