• Nenhum resultado encontrado

7. CONCLUSÃO E TRABALHOS FUTUROS

7.1 Trabalhos futuros

A versão atual da PLEA é uma ferramenta que auxilia a análise dos fluxos excepcionais de LPSs. Ela possui limitações que reduzem a cobertura de fluxos calculados e também a precisão da classificação. Os próximos trabalhos de nossa pesquisa têm como objetivo:

Melhorar implementação do componente AF. A maioria das ferramentas de análise estática sofre de limitações que impedem o cálculo preciso (sem falsos positivos ou negativos) dos fluxos excepcionais de uma aplicação. Para atingir uma qualidade satisfatória, o componente AF deve garantir que os fluxos reportados pela PLEA realmente ocorrem na LPS analisada. Isso implica na utilização de algoritmos mais precisos de análise estática, ou mesmo de ferramentas de análise híbridas (estática e dinâmica).

Suportar diferentes técnicas de desenvolvimento. As features de uma LPS podem ser implementadas utilizando-se de técnicas anotativas ou composicionais. As técnicas anotativas, mais populares, são representadas principalmente pelas diretivas de pré-processamento da linguagem C (#ifdef) e pela ferramenta CIDE. Para dar suporte a um maior número de desenvolvedores e LPSs, a PLEA deve ser capaz de processar e analisar LPSs implementadas com diferentes técnicas anotativas.

Identificar padrões de bug e propor um conjunto de boas práticas para

o desenvolvimento do tratamento de exceções em LPS. Nesse estudo exploratório, classificamos os fluxos excepcionais de três LPS e percebemos que determinados tipos têm um maior potencial para causarem falhas na LPS. A classificação adotada neste estudo pode dar origem a um catálogo de padrões de

bug que ocorrem no tratamento de exceções em LPSs. Munidos de tais padrões,

podemos elaborar um conjunto de boas práticas com o objetivo de prevenir as falhas causadas por eles. Estas boas práticas seriam incluídas na própria PLEA, auxiliando o desenvolvimento da LPS no momento de escrita do código-fonte.

REFERÊNCIAS

(Adachi et al., 2009) ADACHI, E.; BATISTA, T.; CHAVEZ, C.; KULESZA, U.; GARCIA, A. Um Estilo Arquitetural para Linhas de Produtos de Software. III Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software. 2009.

(Alférez et al., 2009) ALFÉREZ, M.; SANTOS, J.; MOREIRA, A.; GARCIA, A.; KULESZA, U.; ARAÚJO, J.; AMARAL, V. Multi-view composition language for software product line requirements. Proceedings of the Second international conference on Software Language Engineering. 2009.

(Bacon e Sweeney, 1996) BACON, D.; SWEENEY, P. Fast Static Analysis of C++ Virtual Function Calls. Proceedings of the Eleventh Annual Conference on Object- Oriented Programming Systems, Languages, and Applications. 1996.

(Bertoncello et al., 2008) BERTONCELLO, I.; DIAS, M.; BRITO, M.; RUBIRA, C. Explicit Exception Handling Variability in Component-based Product Line Architectures. Proceedings of the 4th International Workshop on Exception Handling. 2008.

(Brabrand et al., 2012) BRABRAND, C.; RIBEIRO, M.; TOLÊDO, T.; BORBA, P. Intraprocedural Dataflow Analysis for Software Product Lines. Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development. 2012.

(Bravenboer e Smaragdakis, 2009) BRAVENBOER, M.; SMARAGDAKIS, Y. Exception Analysis and Points-to Analysis: Better Together. 18th International Symposium on Software Testing and Analysis. 2009.

(Brunet, Guerrero e Figueiredo, 2009) BRUNET, J.; GUERRERO, D.; FIGUEIREDO, J. Design Tests: An Approach to Programmatically Check your Code Against Design Rules. Proceedings of the 31st International Conference on Software Engineering. Vancouver. Canada. 2009.

(Cabral 2010) CABRAL, I. Designing Software Product Lines for Testability. Dissertação. Universidade de Nebraska. Lincoln, Nebraska. 2010.

(Câmara, 2010) CÂMARA, H. Uma Abordagem Sistemática para Implementação, Gerenciamento e Customização de Testes de Linhas de Produto de Software. Dissertação. Natal, RN. Universidade Federal do Rrio Grande do Norte. 2011.

(Cirilo, 2008) CIRILO, E. GenArch: Uma Ferramenta Baseada em Modelos para Derivação de Produtos de Software. Mestrado. Pontifícia Universidade Católica do Rio de Janeiro. 2008.

(Clements e Northrop, 2001) CLEMENTS, P.; NORTHROP, L. Software Product Lines: Practices and Patterns. Addison Wesley. 2001.

(Coelho et al., 2008) COELHO, R.; RASHID, A.; GARCIA, A.; FERRARI, F.; CACHO, N.; KULESZA, U.; STAA, A.; LUCENA, C. Assessing the Impact of Aspects on Exception Flows: An Exploratory Study. 22nd European Conference on Object- Oriented Programming. Cyprus, LNCS. Springer-Verlag. 2008.

(Coelho et al., 2010) COELHO, R.; STAA, A.; KULESZA, U.; RASHID, A.; LUCENA, C. Unveiling and Taming Liabilities of Aspects in the Presence of Exceptions: A Static Analysis Based Approach. Information Sciences. 2010.

(Coelho, 2008) COELHO, R. Analyzing Exception Flows of Aspect-Oriented Programs. Tese. Pontifícia Universidade Católica do Rio de Janeiro. Rio de Janeiro, RJ. 2008.

(Czarnecki e Eisenecker, 2000) CZARNECKI, K.; EISENECKER, U. Generative Programming: Methods, Tools, and Applications. Addison-Wesley. 2000.

(Czarnecki e Helsen, 2006) CZARNECKI, K.; HELSEN, S. Feature-Based Survey of Model Transformation Approaches. IBM Systems Journal. 2006.

(Dean, e Chambers, 1995) DEAN, J.; CHAMBERS, C. Optimization of Object- oriented Programs Using Static Class Hierarchy Analysis. Proceedings of the Ninth European Conference on Object-Oriented Programming. 1995

(Eclipse IDE, 2012) Eclipse IDE. Disponível em: <http://www.eclipse.org/>. Acesso em 03/04/2012.

(Ernst, 2003) ERNST, M. Static and Dynamic Analysis: Synergy and Duality. Workshop on Dynamic Analysis. 2003.

(Ferrante, Ottenstein e Warren, 1987) FERRANTE, J.; OTTENSTEIN, K.; WARREN, J. The Program Dependence Graph and Its Use in Optimization. ACM Transactions on Programming Languages and Systems. 1987.

(Ferrari et al., 2010) 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. Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering 2010.

(Figueiredo et al., 2008) FIGUEIREDO, E.; CACHO, C.; SANT'ANNA, C.; MONTEIRO, M.; KULESZA, K.; GARCIA, A.; SOARES, S.; FERRARI, F.; KHAN, S.; CASTOR FILHO, F.; DANTAS, F. Evolving software product lines with aspects: an empirical study on design stability. Proceedings of the 30th international conference on Software engineering. 2008.

(Figueroa, 2012) FIGUEROA, I. Avoiding confusion with exception handling in aspect-oriented programming. ACM Student Research Competition, AOSD 2012. 2012.

(Fu e Ryder, 2007) FU, C.; RYDER, B. Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications. International Conference on Software Engeneering. ACM Press. 2007.

(Gamma et al., 1994) GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley. 1994.

(Garcia e Cacho, 2011) GARCIA, I.; CACHO, N. eFlowMining: An Exception-Flow Analysis Tool for .NET Applications. Dependable Computing Workshops. 2011.

(Garcia e Rubira, 2001) GARCIA, A.; RUBIRA, C. A Comparative Study of Exception Handling Mechanisms for Building Dependable Object-Oriented Software. Journal of Systems and Software. 2001.

(Goodenough, 1975) GOODENOUGH, J. B. Exception Handling: Issues and a Proposed Notation. Communications of the ACM. 1975.

(Gurp, Bosch e Svahnberg, 2001) GURP, J.; BOSCH, J.; SVAHNBERG, M. On the Notion of Variability in Software Product Lines. Proceedings of the Working IEEE/IFIP Conference on Software Architecture. 2001.

(Ismail, 2009) ISMAIL, U. Incremental Call Graph Construction for the Eclipse IDE. University of Waterloo Technical Report. 2009

(Juristo e Moreno, 2006) JURISTO, N.; MORENO, A. M. Software testing practices in industry. Guest editor's introduction. IEEE Software. 2006.

(Kästner, Apel e Kuhlemann, 2008) KÄSTNER, C.; APEL, S.; KUHLEMANN, M. Granularity in software product lines. Proceedings of the 30th international conference on Software engineering. 2008.

(Kim, Batory e Khurshid, 2006) KIM, C.; BATORY, D.; KHURSHID, S. Reducing combinatorics in testing product lines. Proceedings of the Tenth International Conference on Aspect-oriented Software Development. 2011.

(Krueger, 2001) KRUEGER, C. Easing the Transition to Software Mass Customization. Proceedings of the 4th International Workshop on Software Product- Family Engineering. 2001.

(Lhot´ak, 2007) LHOT´AK, O. Comparing call graphs. Workshop on Program Analysis for Software Tools and Engineering. 2007

(McGregor, 2006) MCGREGOR, J. Building Reusable Testing Assets for a Software Product Line. Software Product Line Conference. 2006.

(McGregor, 2009) MCGREGOR, J. Building Reusable Testing Assets for a Software Product Line. Proceedings of the 13th International Software Product Line Conference. 2009.

(Miller e Tripathi, 1997) MILLER, R.; TRIPATHI, A. Issues with Exception Handling in Object-Oriented Systems. Proceedings of the European Conference on Object Oriented Programming. Springer. 1997.

(Oster, Markert e Ritter, 2010) OSTER, S.; MARKERT, F.; RITTER, P. Automated Incremental Pairwise Testing of Software Product Lines. Proceedings of the 14th international conference on Software product lines: going beyond. 2010.

(Prevayler, 2012) Prevayler. Disponível em <http://prevayler.org/>. Acesso em 07/06/2012.

(pure::variants, 2012) Pure::Variants. Disponível em: <http://www.pure- systems.com>. Acesso em 03/04/2012.

(Ribeiro et al., 2010) RIBEIRO, M.; PACHECO, H.; TEIXEIRA, L.; BORBA, P. Emergent Feature Modularization. Proceedings of Onward! 2010, affiliated with ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity. Reno-Tahoe, Nevada. USA. 2010.

(Ribeiro et al., 2012) RIBEIRO, M.; TOLÊDO, T.; WINTHER, J.; BRABRAND, C.; BORBA, P. Emergo: A Tool for Improving Maintainability of Preprocessor-based Product Lines. 11th Annual International Conference on Aspect-oriented Software Development Companion. 2012.

(Robillard e Murphy, 2003) ROBILLARD, M.; MURPHY, G. Static Analysis to Support the Evolution of Exception Structure in Object-Oriented Systems. ACM Transactions on Software Engineering Methodologies. 2003.

(Shah, Gorg e Harrold, 2010) SHAH, H.; GORG, C.; HARROLD, M. Understanding exception handling: Viewpoints of novices and experts. IEEE Transaction on Software Engineering. 2010.

(Srivastava, 1992) SRIVASTAVA, A. Unreachable Procedures in Object-oriented Programming. ACM Letters on Programming Languages

and Systems. 1992.

(Tip e Palsberg, 2000) TIP, F.; PALSBERG, J. Scalable Propagation-Based Call Graph Construction Algorithms. 15th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications. 2000.

(Valente, Borges e Passos, 2011) VALENTE, M.; BORGES, V.; PASSOS, L. A Semi- Automatic Approach for Extracting Software Product Lines. IEEE Transactions on Software Engineering, 16 Jun. 2011. IEEE computer Society Digital Library. IEEE Computer Society.

(Weiss e Lai, 1999) WEISS, D; LAI, D. Software Product-Line Engineering: A Family- Based Software Development Process. Addison-Wesley Professional. 1999.

(Young, 2005) YOUNG, T. Using AspectJ to Build a Software Product Line for Mobile Devices. Dissertação. University of British Columbia. 2005.

Documentos relacionados