• No results found

Chapter 4: research findings

4.1. Children’s migratory experiences

4.1.1. Involving children in making the decision to migrate

Algumas abordagens propõem a definição do comportamento excepcional dos sistemas ao longo de todas as atividades do desenvolvimento de software, antes da implementação em si. Algumas delas incorporam atividades relacionadas com tratamento de exceções dentro de atividades já existentes nas metodologias de desenvolvimento de software [Rubira et al. 2005], enquanto outras têm como alvo atividades de desenvolvimento específicas [Shui, Mustafiz and Kienzle 2006]. Todas elas, entretanto, têm uma forte ênfase em produzir documentação sobre o comportamento excepcional. Essa característica de documentação densa sobre o comportamento excepcional pode ser considerada como a maior limitação destas abordagens visto que é bem conhecido que os desenvolvedores frequentemente não mantém a documentação atualizada de acordo com a implementação do sistema [Beck and Andres 2004].

Embora as regras de design de nossa abordagem possam ser consideradas como um tipo de documentação estruturada que podem ser utilizadas em estágios iniciais do processo de desenvolvimento, o principal foco é na realização de testes. Acreditamos, entretanto, que a abordagem proposta neste trabalho pode ser facilmente combinada com trabalhos prévios como uma maneira de fazer com que tais metodologias sejam menos centradas em

documentação. O capítulo a seguir conclui este trabalho e apresenta o planejamento para a elaboração da dissertação.

7.5 Discussões

Este capítulo apresentou um os trabalhos de pesquisa diretamente relacionados com esta dissertação. Os trabalhos foram organizados em (i) abordagens de verificação estática, (ii) abordagens de teste, (iii) abordagens de regras de design para tratamento de exceções e (iv) processos de desenvolvimento. O próximo capítulo apresentará as considerações finais desta dissertação.

8 Considerações Finais

Os mecanismos de tratamentos de exceção vêm sendo utilizados como uma forma de auxiliar os desenvolvedores a construir aplicações mais robustas [Parnas and Wurges 1976]. Estudos têm mostrado que, embora uma grande quantidade código seja dedicada à descoberta e tratamento de erros, as manifestações de erros e exceções tem recebido pouca atenção em outros estágios do desenvolvimento como design e testes [Rubira et al. 2005, Kienzle 2008]. Os desenvolvedores tendem a concentrar suas atividades no design do comportamento normal da aplicação e esquecem-se do design do comportamento do tratamento de exceções [Sha, Gerg and Harrold 2008].

Visto que as regras de design definem padrões arquiteturais que devem ser obedecidos durante a implementação do comportamento normal da aplicação, faz-se necessário que existam regras de design específicas para o comportamento excepcional. Embora trabalhos proponham abordagens para especificação e verificação de regras de design dos sistemas [Brunet, Neto and Figueredo 2009, Neto 2010], uma limitação comum dessas abordagens é que elas não proveem maneiras apropriadas de definir regras de design relacionadas com fluxos de exceção. Outras abordagens permitem a especificação do comportamento excepcional, porém estão fortemente baseadas em documentação [Rubira et al. 2005, Kienzle 2008], impondo uma sobrecarga indesejável em ambientes ágeis, que incentivam a automação de testes e o desenvolvimento dirigido a testes.

Neste trabalho nós apresentamos uma abordagem sistemática com o objetivo de permitir a especificação e verificação de regras de design voltadas para o comportamento excepcional de aplicações Java e AspectJ. Essa abordagem se constitui na seguinte sequência de atividades realizadas para tentar garantir que as regras de design de comportamento excepcional não sejam degradadas em relação ao que está implementado na aplicação: (i) definir as regras de design excepcionais da aplicação; (ii) projetar e automatizar os testes de regras de design excepcionais; (iii) executar os testes; (iv) avaliar os

resultados, e caso necessário, executar novamente toda a sequência para refletir atualizações no sistema ou nas regras de design.

Para apoiar a abordagem foi desenvolvida uma ferramenta, a VITTAE (Verification and Information Tool to Analyze Exceptions), que permite dentre outras coisas: (i) geração automática do template de testes baseado nas regras de design excepcionais especificadas, (ii) geração de mock aspects que forçam o lançamento da exceção durante a execução dos testes e (iii) verificação das regras de design excepcionais .

Foi proposto e realizado um estudo de caso preliminar para comprovar a eficácia da ferramenta sobre várias versões de uma linha de produto de software. Este estudo mostrou que durante a evolução de um sistema em suas várias versões orientadas a aspectos e orientadas a objetos, a política de tratamento de exceções for modificada e que ocorreu um problema sério, onde exceções foram transformadas em exceções não checadas sem um tratamento específico ou até mesmo chegaram a ser disparadas alcançando o usuário final. Além deste também foi realizado um estudo avaliativo comparando a VITTAE com a JUnitE [Di Bernardo et al. 2011] que avaliou em termos qualitativos e quantitativos as duas ferramentas utilizando metodologias de engenharia de software experimental. Este estudo mostrou que ambas as ferramentas são bem sucedidas em permitir a especificação e verificação de regras de comportamento excepcional, aparentemente são equivalentes no que diz respeito a sua eficiência, mas possuem diferenças quanto à qualidade de sua utilização pelos usuários.

8.1 Publicações relacionadas

A pesquisa que resultou nesta dissertação permitiu a publicação de 3 artigos até o momento:

 SALES JUNIOR, R.; COELHO, R. S. ; LUSTOSA NETO, V. .Exception-Aware AO Refactoring. In: IV Latin American Workshop on Aspect Oriented Programming, 2010, Salvador. Anais do CBSoft, 2010 – Este artigo faz uma apresentação

preliminar da abordagem proposta e da ferramenta VITTAE (que na época era conhecida como FEAR).

 SALES JUNIOR, R. ; COELHO, R. S. Preserving the Exception Handling Design Rules in Software Product Line Context: A Practical Approach. In: I Workshop on Exception Handling in Contemporary Software Systems (EHCOS 2011), 2011. Proceedings of I Workshop on Exception Handling in Contemporary Software Systems (EHCOS 2011), 2011 – Este artigo apresentou evoluções realizadas na abordagem proposta e o estudo de caso preliminar aplicado sobre uma linha de produto de software.

 Di Bernardo, R., Sales Júnior, R., Castor, F. Coelho, R., Cacho, N., Soares S. Agile Testing of Exceptional Behavior . 25th

Brazilian Symposium on Software Engineering (SBES 2011). São Paulo, September 28-30, 2011 DOI: 10.1109/SBES.2011.28. – Este artigo apresentou a idéia da utilização de uma abordagem leve para teste de comportamento excepcional e a ferramenta JUnitE.

8.2 Trabalhos futuros

Propomos algumas sugestões de trabalhos futuros. Por exemplo, evoluções em nossa abordagem seriam interessantes como: (i) geração totalmente automatizada dos casos de teste baseados nas regras de design, talvez utilizando técnicas de análise estática para suportar o preenchimento dos

templates dos casos de teste; (ii) associação entre cada regra de design e um

teste específico, talvez utilizando anotações no teste e atributos no arquivo xml para signalers e handlers, para permitir que a ferramenta também verifique se o

signaler realmente lançou a exceção definida na regra de design excepcional;

(iii) construção de um plugin para permitir uma melhor integração com a IDE Eclipse [Eclipse 2012] e consequentemente uma utilização mais ampla da ferramenta nos ambientes de desenvolvimento reais.

Além disso, visto que os resultados do estudo avaliativo quantitativo não deram indícios estatísticos suficientes de diferenças entre as abordagens baseadas nas ferramentas VITTAE e JUnitE – muito provavelmente devido a pequena quantidade de sujeitos e simplicidade dos sistemas-alvo, mas a avaliação qualitativa mostrou diferenças, seria interessante a realização de um estudo avaliativo mais aprofundado em um sistema real, permitindo uma análise estatística mais relevante.

Referências

 [Accioly 2012] Accioly P. Comparing Testing Strategies for Software Product Line. Dissertação (Mestrado) - UFPE, Recife. 2012

 [Alencar et al. 2010] Alencar F., Castro J., Lucena M., Santos E., Silva C., Araújo J. and Moreira A. Towards modular i* models. In SAC '10: Proceedings

of the 2010 ACM Symposium on Applied Computing, pages 292-297, New

York, NY, USA, 2010. ACM

 [Alencar et al. 2010] Alencar F., Castro J., Lucena M., Santos E., Silva C., Araújo J. and Moreira A. Towards modular i* models. In SAC '10: Proceedings

of the 2010 ACM Symposium on Applied Computing, pages 292-297, New

York, NY, USA, 2010. ACM

 [Allen 2001] Allen, Eric. Bug Patterns: An introduction, 1 Feb. 2001. Disponível em: http://www.ibm.com/developerworks/java/library/j- diag1/index.html . Acesso em 18/04/2012

 [Anderson and Lee 1981] ANDERSON, T.; LEE, P. A. Fault tolerance - principles and practice. Englewood Cliffs, Prentice-Hall, 1981.

 [Aranha et al. 2009] ARANHA, E.; FERRAZ, C.; BORBA, P. Projeto de Experimentos em Engenharia de Software. In: Simpósio Brasileiro de Engenharia de Software, 2009.

 [AspectJ 2012] AspectJ Project. Disponível em:

http://www.eclipse.org/aspectj/. Acessado em 12 de Março de 2012.

 [Avizienis 1997] Avizienis A. Toward Systematic Design of Fault-Tolerant Systems. Computer, 30(4):5158 , 1997.

 [Avizienis 1998] AVIZIENIS, A. Infraestructure-based design of fault-tolerant systems. In: Proceedings of the IFIP International Workshop on Dependable Computing and its Applications. DCIA 98, Johannesburg, South Africa, January 12-14,1998. p. 51-69.

 [Avizienis et al 2004] A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr, "Basic Concepts and Taxonomy of Dependable and Secure Computing,"

IEEE Transactions on Dependable and Secure Computing, vol. 1, pp. 11-33, 2004.

 [Baldwin and Clark 1999] Baldwin, Carliss Y. e Clark, Carliss Y. Design Rules: The Power of Modularity. Volume 1. MIT Press, Cambridge, MA, USA, 1999.

 [Barbosa et al. 2000] BARBOSA, E.; MALDONADO, J.C.; VINCENZI, A.M.R.; DELAMARO, M.E; SOUZA, S.R.S. e JINO, M.. “Introdução ao Teste de Software. XIV Simpósio Brasileiro de Engenharia de Software”, 2000.

 [Basili 1995] Basili, V.R. “Applying the GQM paradigma in the experience factory”, in FENTON, N., WHITY, R., and IIZUKA, Y. (Eds.): “Software Quality Assurance and Measurement” (Thomson Computer Press, London 1995), pp. 23-37.

 [Basili, Caldiera and Rombach 1994] Victor R. Basili, Gianluigi Caldiera, and H. Dieter Rombach. The Goal Question Metric approach. In Encyclopedia of

Software Engineering, pages 528–532. John Wiley and Sons, 1994.

 [Beck 2003] Beck, K. Test-Driven Development by Example, Addison Wesley - Vaseem, 2003

 [Beck and Andres 2004] Beck K. and Andres C. Extreme Programming Explained: Embrace Change (2nd Edition). Addison-Wesley Professional, 2004.

 [Belady 1981] Belady, L. (1981). Foreword. In Software Design: Methods and

Techniques (L.J. Peters, author). Yourdon Press

 [Bianchi et al. 2001] Alessandro Bianchi, Danilo Caivano, Filippo Lanubile, and Giuseppe Visaggio. 2001. Evaluating Software Degradation through Entropy. In Proceedings of the 7th International Symposium on Software Metrics (METRICS '01). IEEE Computer Society, Washington, DC, USA, 210-.

 [Box, Hunter and Hunter 2005] George E. P. Box, J. Stuart Hunter, and William G. Hunter. Statistics for experimenters : design, innovation, and

 [Brunet, Neto and Figueredo 2009] Brunet, J., Guerredo, D. and Figueiredo J. (2009). “Design Tests: An approach to programmatically check your code against design rules”, In 31st International Conference on Software Engineering (ICSE 2009), New Ideas and Emerging Results.

 [Cabral and Marques 2007] Cabral, B. and Marques, P. Exception Handling: A Field Study in Java and .NET. In ECOOP 2007 - 21st European Conference Object-Oriented Programming, vol. 4609 of Lecture Notes in Computer Science, pp. 151-175. Springer. 2007.

 [Cacho et al. 2008] Nelio Cacho, Fernando Castor Filho, Alessandro Garcia e Eduardo Figueiredo. 2008. EJFlow: taming exceptional control flows in aspect-oriented programming. In Proceedings of the 7th international conference on Aspect-oriented software development (AOSD 2008). Páginas 72-83.

 [Cactus 2012] The Jakarta Foundation. Cactus, a Thorn in Your Bug’s Side. Disponível em: http://jakarta.apache.org/cactus. Acessado em 19/03/2012  [Castor et al. 2006] Castor Filho, F.; Cacho, N.; Figueiredo, E.; Maranhão, R.;

Garcia, A. and Rubira, C.: Exceptions and aspects: the devil is in the details. In Proc. SIGSOFT FSE 2006, 152-162.

 [Castor, Garcia and Rubira 2007] Castor Filho, F., Garcia, A., Rubira, C., Extracting Error Handling to Aspects: A Cookbook. In: Proceedings of the IEEE International Conference on Software Maitenance (ICSM), Paris, France, 2007, p.134-143.

 [Chang et al 2001] Chang, B.M. et al. Interprocedural exception analysis for java. In Proceedings of 16th ACM SAC, pp. 620-625, 2001.

 [Chess and West 2007] B. Chess and J. West, Secure Programming with Static Analysis, 1st ed. Addison-Wesley Professional, Jul. 2007.

 [Clements and Northrop 2002] Clements, P. and Northrop, L. Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.

 [Coelho et al 2008a] Coelho R et al. “Assessing the impacts of Aspects on Exception Flows: An Exploratory Study”. In Proc. 22nd ECOOP, 207-234, 2008

 [Coelho et al. 2008b] R. Coelho, A. Rashid, U. Kulesza, A. von Staa, C. Lucena, and J. Noble. Exception handling bug patterns in aspect oriented programs. In Proceedings of the 15th Conference on Pattern Languages of Programs, pages 1–19, Chicago, USA, October 2008

 [Coelho et al. 2008c] Coelho, R, Awais, R., Staa, A.v., Noble, J., Kulesza, U., Lucena, C., A Catalogue of Bug Patterns for Exception Handling in Aspect- Oriented Programs, Conference on Pattern Languages of Programs (PLoP’08), 2008.

 [Collofello 1988] Collofello J. S., “Introduction to Software Verification and

Validation”, SEI-CM-13-1.1,Software Engineering Institute,

Pittsburgh,P.A.,USA.

 [Craig and Jaskiel 2002] CRAIG, R.D., JASKIEL, S. P., “Systematic Software Testing”, Artech House Publishers, Boston, 2002.

 [Cristian 1982] Cristian, F. Exception handling and software fault tolerance.IEEE Trans. Comput. 31(6):531540, 1982.

 [Cristian 1989] F. Cristian, “Exception Handling,” in Dependability of Resilient Computers (ed. T. Anderson), Blackwell Scientific Publications, pp.68-97, 1989.

 [Cristian 1994] Cristian, F. Exception Handling and Tolerance of Software Faults. In Lyu, M.R. (ed.): Software Fault Tolerance. Wiley, 81-108, 1994.  [Csallner and Smaragdakis 2005] C. Csallner and Y. Smaragdakis. Check’n

Crash: Combining Static Checking and Testing. In Proceedings of ICSE’2005 (27th International Conference on Software Engineering). ACM, May 2005.  [Csallner and Smaragdakis 2006] C. Csallner and Y. Smaragdakis. DSD-

crasher: Ahybrid analysis tool for bug finding. In proceedings of the International Symposium on Software Testing and Analysis (ISSTA), 2006.  [Di Bernardo et al. 2011] Di Bernardo, R., Sales Júnior, R., Castor, F. Coelho,

R., Cacho, N., Soares S. Agile Testing of Exceptional Behavior . 25th Brazilian Symposium on Software Engineering (SBES 2011). São Paulo, September 28-30, 2011 DOI: 10.1109/SBES.2011.28.

 [Eclipse 2012] Eclipse Project. Disponível em: http://www.eclipse.org. Acessado em 12 de Março de 2012.

 [Fahndrich et al. 1998] Fahndrich, M. et al. Tracking down exceptions in standard ML. Technical Report CSD-98-996, University of California, Berkeley, 1998.

 [Fewster and Graham 1999] Mark Fewster & Dorothy Graham (1999). Software Test Automation. ACM Press/Addison-Wesley. ISBN 978-0-201- 33140-0.

 [Figueiredo et al. 2008] Figueiredo, E.; Cacho, N.; Sant'Anna, C.; Monteiro, M.; Kulesza, U.; Garcia, A.; Soares, S.; Ferrari, F.; Khan, S.; Dantas, F.; ,Evolving software product lines with aspects,"Software Engineering, 2008. ICSE'08. ACM/IEEE 30th International Conference on",,,261- 270,2008,IEEE

 [Freeman and Craig 2001] Mcknnon., Freeman, S., and CRAIG, P. EndoTesting: Unit Testing with Mock Objects. In: EXTREME PROGRAMMING EXAMINED, Beck, K. Addison Wesley, 2001. p. 287-301.  [Freese 2002] Freese, Tammo: EasyMock: Dynamic Mock Objects for JUnit.

In: MARCHESI, M. (Hrsg.) ; SUCCI, G. (Hrsg.): Proceedings of the 3nd International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2002), 2002.

 [Freese and Tammo 2002] Freese, Tammo: EasyMock: Dynamic Mock Objects for JUnit. In: MARCHESI, M. (Hrsg.) ; SUCCI, G. (Hrsg.): Proceedings of the 3nd International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2002), 2002.

 [Fu and Ryder 2007] Fu, C. and Ryder, B. G. Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications. In Proceedings of ICSE’2007, 230-239, 2007.

 [Garcia et al. 2001] Garcia et al. A comparative Study of Exception Handling Mechanisms for Building Dependable Object-Oriented Software. Journal of Systems and Software, Elsevier, v. 59, n.6, Nov. 2001, p. 197-222.

 [Garcia et al. 2011] Garcia, I.; Soares, E.; Cacho, N. Visualizando a Evolução do Comportamento Excepcional em Aplicações Multi-linguagem com eFlowMining.

 [IEEE 1983] Hantler S. L. and J. C. King. “An Introduction to IEEE. Standard Glossary of Software Engineering Proving the Correctness of Programs.” ACM Com- Terminology. ANSI/IEEEStd729-1983, Institute of puting Surveys 8 Electrical and Electronics Engineers, 1983.

 [Java 2012] Java Programing Language. Disponível em:

http://www.java.com. Acessado em 10 de Dezembro de 2012.

 [JMP 2012] Junit. Disponível em http://www.jmp.com/, acessado em 12 de Dezembro de 2012

 [JUnit 2012] Junit. Disponível em http://www.junit.org/, acessado em 12 de Março de 2012

 [Kienzle 2008] Kienzle, J. On exceptions and the software development life cycle. In Proceedings of the 4th international workshop on Exception handling. ACM, New York, NY, USA, 2008

 [Kolawa and Huizinga 2007] Kolawa, Adam; Huizinga, Dorota (2007). Automated Defect Prevention: Best Practices in Software Management. Wiley-IEEE Computer Society Press. p. 74. ISBN 0-470-04212-5.

 [Kruchten et al. 2006] Kruchten, P., Lago, P., and van Vliet, H. (2006). Building up and reasoning about architectural knowledge. In Hofmeister, C., Crnkovic, I., and Reussner, R., editors QoSA, volume 4214 of Lecture Notes in Computer Science, pages 43-58. Springer.

 [Laddad 2003] Ramnivas Laddad. AspectJ in Actin: Practical Aspect-Oriented Programming. Maning Publications, July 2003.

 [Laprie 1985] J.C. Laprie. Dependable computing and fault tolerance: concepts and terminology. In Proc. 15th IEEE Int. Symp. on Fault-Tolerant

 [McCreery and Phil 2007] McCreery C. and Phil D. The Chi-Square Test. Tutorial. Oxford Forum, Psychological Paper No. 2007-1, Magdalen College , Oxford, 2007

 [McCune 2006] McCune, T. Exception-handling antipatterns, 2006. In Java.Net.

Address:http://today.java.net/pub/a/today/2006/04/06/exceptionhandling- antipatterns.html

 [Meudec 2001] Meudec C. ATGen: Automatic test data generation using constraint logic programming and symbolic execution. Software Testing, Verification and Reliability 2001; 11(2):81–96.

 [Meyer 1996] Meyer B. Applying “Design by Contract”. Computer, 25(10):40– 51, 1992.

 [Misra, Kumar and Kumar 2009] Misra, S. C.; Kumar, V.; Kumar, U. 2009. Identifying some important success factors in adopting agile software development practices. J. Syst.Softw. 82, 2009.

 [Myers 1979] G. J. Myers. The art of software testing. 1979.

 [Neto 2010] Neto, A. C. Especifying Design Rules in Aspect-Oriented Systems, Tese de Doutorado, Recife, 2010

 [Palmer and Felsing 2002] Palmer, S. R.; Felsing, J. M. A Practical Guide to Feature-Driven Development. 1st ed., Prentice-Hall, 2002.

 [Parnas 1972] Parnas D. L. On the criteria To be used in Decomposing System into Modules. Commun, ACM, 15(12):1053-1058, 1972

 [Parnas 1994] David Lorge Parnas. 1994. Software aging. In Proceedings of

the 16th international conference on Software enginealdering (ICSE '94).

IEEE Computer Society Press, Los Alamitos, CA, USA, 279-287.

 [Partington 2012] Partington , V. Middleware integration testing with JUnit,

Maven and VMWare. Disponível em:

http://blog.xebia.com/2009/12/middleware-integration-testing- with- junit- maven- and- vmware-part-1. Acessado em 19/03/2012

 [Pressman 2005] PRESSMAN, R. S., “Software Engineering: A Practitioner’s Approach”, McGraw-Hill, 6th ed, Nova York, NY, 2005.

 [Ribeiro and Borba 2010] Ribeiro M. And Borba P. Towards feature modularization. In SPLASH '10: Proceedings of the ACM international

conference companion on Object oriented programming systems languages and applications companion (Doctoral Symposium), pages 225-226, New

York, NY, USA, 2010. ACM

 [Robillard and Murphy 2003] Robillard, M. P. e Murphy G.C. Static Analysis to support the evolution of exception structure in object oriented systems. ACM TOSEM 12(2), 191-221, 2003

 [Rocha et al. 2001] ROCHA, A. R. C., MALDONADO, J. C., WEBER, K. C. et al., “Qualidade de software – Teoria e prática”, Prentice Hall, São Paulo, 2001.

 [Rubira et al 2005] Rubira, C. M. F; de Lemos, R;Ferreira, R; Castor Filho, F. Exception handling in the development of dependable component-based systems, Softw. – Pract. and Exp. 35 (5), 195–236, 2005.

 [Sakia 1992] R. M. Sakia. The box-cox transformation technique: A review.

Journal of the Royal Statistical Society. Series D (The Statistician), 41(2),

1992.

 [Sales Júnior and Coelho 2011] SALES JUNIOR, R. ; COELHO, R. S. . Preserving the Exception Handling Design Rules in Software Product Line Context: A Practical Approach. In: I Workshop on Exception Handling in Contemporary Software Systems (EHCOS 2011), 2011. Proceedings of I Workshop on Exception Handling in Contemporary Software Systems (EHCOS 2011),, 2011

 [Sales Júnior, Coelho and Lustosa Neto 2010] SALES JUNIOR, R.; COELHO, R. S. ; LUSTOSA NETO, V. .Exception-Aware AO Refactoring. In: IV Latin American Workshop on Aspect Oriented Programming, 2010, Salvador. Anais do CBSoft, 2010.

 [Schaefer and Bundy 1993] Carl F. Schaefer and Gary N. Bundy. Static analysis of exception handling in Ada. Software—Practice and Experience, 23(10):1157–1174, October 1993.

 [Sha, Gorg and Harrold 2008] Shah, H.; Gorg, C. and Harrold, M. J. Visualization of exception handling constructs to support program understanding. In Proceedings of the 4th ACM symposium on Software visualization, 2008, 19-28.

 [Shah, Gerg and Harrold 2008] Shah, H.; Gerg, C. and Harrold, M. J. Why do developers neglect exception handling?. In Proceedings of the 4th international workshop on Exception handling (WEH ’08). ACM, New York, NY, USA, 62-68, 2008

 [Shapiro and Wilk 1965] S. and Wilk M. B. (1965) “An analysis of Variance Test for Normality (Complete Samples)”, Biometrika, 52, 591-611

 [Shui, Mustafiz and Kienzle 2006] Shui, A.; Mustafiz, S., Kienzle, J.: Exception-Aware Requirements Elicitation with Use Cases. Advanced Topics in Exception Handling Techniques. Springer, 2006, 221-242.

 [Silva and Castor 2013] Thiago Silva and Fernando Castor. New Exception Interfaces for Java-Like Languages. In Proceedings of the 28th ACM Symposium on Applied Computing (SAC'2013). Coimbra, Portugal, March 2013. Accepted for publication.

 [Sinha and Harrold 2000] Sinha, S., and Harrold, M. J. Analysis and testing of programs with exception handling constructs. IEEE Transac- tions on Software Engineering 26(9), 849-871, 2000.

 [Sinha and Harrold 2004] Sinha, S., and Harrold, M. J. Automated support for development, maintenance, and testing in the presence of implicit control flow. In Proceedings of the 26th International Conference on Software Engineering, 336-345, 2004.

 [Sipser 2005] Sipser, M. Introduction to the Theory of Computation, Second

Edition. New York, NY: Course Technology, 2005.

 [Sommerville 2006] Ian Sommerville, Software Engineering, 8a. Edição, Addison-Wesley, 2006

 [Sotirov 2005] Sotirov, A.I. (2005). Automatic Vulnerability Detection Using Static Source-Code Analysis. Ph.D. thesis, University of Alabama.

 [Stroustrup et al 2001] B. Stroustrup, A. Koenig, and B. Moo: The C++ Programming Language. Encyclopedia of Software Engineering. Second edition. Wiley. 2001.

 [Terra and Valente 2008] Ricardo Terra; Marco Tulio Valente. Towards a Dependency Constraint Language to Manage Software Architectures. 2nd European Conference on Software Architecture (ECSA), LNCS 5292, p. 256- 263, Springer-Verlag, 2008.

 [Torres et al. 2010] Torres M., Kulesza U., Braga R., Masiero P., Pires P., Delicato F., Cirilo E., Batista T., Teixeira L., Borba P, and Lucena C. Estudo comparativo de ferramentas de derivacao dirigidas por modelos: Resultados preliminares. In Primeiro Workshop Brasileiro de Desenvolvimento Dirigido

por Modelos (WBDDM'2010), Workshop do CBSoft 2010, 2010.

 [Turing 1936] Alan Turing. On computable numbers, with an application to the Entscheidungsproblem, Proceedings of the London Mathematical Society, Series 2, 42 (1936), pp 230–265.

 [van Gurp and Bosh 2002] Jilles van Gurp, Jan Bosch, Design Erosion: Problems & Causes, Journal of Systems & Software, 61(2), pp. 105-119, Elsevier, March 2002.

 [Wohlin et al 2000] Claes Wohlin, Per Runeson, Martin Hösrt, Magnus C. Ohlsson, Björn Regnell, and Anders Wesslén. Experimentation in Software

Apêndice A – Artigos Publicados

A seguir são apresentados os artigos publicados pelo autor, cuja evolução resultou na abordagem proposta neste trabalho.

Exception-Aware AO Refactoring

Ricardo J. Sales Júnior

Departamento de Informática e Matemática Aplicada (DIMAp)

UFRN, Brasil

[email protected]

Roberta Coelho

Departamento de Informática e Matemática Aplicada (DIMAp)

UFRN, Brasil

[email protected]

Vicente Pires Lustosa Neto

Departamento de Informática e Matemática Aplicada (DIMAp)

UFRN, Brasil

[email protected]

ABSTRACT

AO refactoring is the process of reorganizing the internal structure of code by the identification of crosscutting concerns and representation of such concerns as aspects. As any other refactoring process, the AO refactoring should preserve the external behavior of the system. However, we have observed that current AO refactoring approaches may lead to a set of flaws on the exception handling code (e.g., uncaught exceptions, exceptions mistakenly handled), and consequently does not preserve the exception handling behavior of the refactored system. Therefore, this paper proposed an extension to the existing AO refactoring approaches, which enables the developer to preserve the exception handling behavior of the refactored system. This approach is based on the definition of exception handling contracts and a set of test cases to dynamically check such contracts. Preliminary results show that our approach helps to detect the flaws that can happen on the exception handling code of aspectized systems.

Categories and Subject Descriptors

D.1.5 [Software Engineering]: Programming Techniques – General; D.2.17 [Software Engineering]: Software Construction - Programming paradigms.

General Terms

Reliability and Languages.

Keywords

Exception handling, aspect-oriented languages, refactoring.