In-depth characterization of exception flows in software product lines: an empirical study

Sociedade Brasileira de Computacao - SB - Tập 1 - Trang 1-30 - 2013
Hugo Melo1, Roberta Coelho1, Uirá Kulesza1, Demostenes Sena1
1Informatics and Applied Mathematics Department (DIMAp), Federal University of Rio Grande do Norte, Natal, Brazil

Tóm tắt

Software Product Lines (SPLs) play an essential role in contemporary software development, improving program quality and reducing the time to market. However, despite its importance, several questions concerning SPL dependability did not get enough attention yet, such as: how the exception handling code has been implemented in SPLs? The characteristics of the exception handling code may lead to faulty SPL products? The Exception Handling (EH) is a widely used mechanism for building robust systems and is embedded in most of mainstream programming languages. In SPL context we can find exception signalers and handlers spread over code assets associated to common and variable SPL features. If exception signalers and handlers are added to a SPL in an unplanned way, products can be generated on which variable features may signal exceptions that remain uncaught or are mistakenly caught by common features or other variable features. This paper describes an empirical study that categorizes the possible ways exceptions flow through SPL features and investigates whether some of their characteristics can lead to faulty exception handling behavior. The study outcomes presented in this paper are helpful in several ways, such as: (i) enhancing the general understanding of how exceptions flow through mandatory and variable features; (ii) providing information about the potential problems related to specific kinds of flows detected in this study; and (iii) presenting how a static analysis tool can be used to support the identification of potentially faulty exception handling flows.

Tài liệu tham khảo

Apel S, Von Rhein A, Wendler P, Größlinger A, Beyer D Proceedings of the 35th International Conference on Software Engineering (ICSE 2013), San Francisco. In Strategies for product-line verification: case studies and experiments. NJ, USA: IEEE Press Piscataway; 2013:482–491. Bertoncello I, Dias M, Brito P, Rubira C Proceedings of the 4th International Workshop on Exception Handling, Atlanta. In Explicit Exception Handling Variability in Component-based Product Line Architectures. New York, NY, USA: ACM; 2008:47–54. doi:10.1145/1454268.1454275 doi:10.1145/1454268.1454275 Brabrand C, Ribeiro M, Tolêdo T, Borba P Proceedings of the 11th International Conference on Aspect-Oriented Software Development (AOSD 2012), Potsdam. In Intraprocedural Dataflow Analysis for Software Product Lines. New York, NY, USA: ACM; 2012:13–24. doi:10.1145/2162049.2162052 doi:10.1145/2162049.2162052 Brunet J, Guerrero D, Figueiredo J Proceedings of 31st International Conference on Software Engineering (ICSE 2009). In Design Tests: An Approach to Programmatically Check your Code Against Design Rules. Vancouver: New Ideas and Emerging Results; 2009:255–258. doi:10.1109/ICSE-COMPANION.2009.5070995 doi:10.1109/ICSE-COMPANION.2009.5070995 Clements P, Northrop L: Software Product Lines: Practices and Patterns. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc; 2001. Coelho R, Rashid A, Garcia A, Ferrari F, Cacho N, Kulesza U, Staa A, Lucena C Proceedings of the 22nd European Conference on Object-Oriented Programming (ECOOP 2008). In Assessing the Impact of Aspects on Exception Flows: An Exploratory Study. Paphos: Cypress; 2008:207–234. doi:10.1007/978–3-504–70592–5 10 doi:10.1007/978-3-504-70592-5 10 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 2011, 181: 2700–2720. 10.1016/j.ins.2010.06.002 Czarnecki K, Eisenecker U: Generative Programming: Methods, Tools, and Applications. New York, NY, USA: ACM Press/Addison-Wesley Publishing Co; 2000. Eclipse IDE: Eclipse. 2012. . Accessed 03 April 2012 http://www.eclipse.org/ . Accessed 03 April 2012 Ferrante J, Ottenstein K, Warren J: The program dependence graph and its Use in optimization. ACM Transactions on Programming Languages and Systems (TOPLAS) 1987, 9: 319–349. 10.1145/24039.24041 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 Proceedings of the 32nd International Conference on Software Engineering, Cape Town. In An Exploratory Study of Fault-proneness in Evolving Aspect-oriented Programs. NY, USA: ACM New York; 2010:65–74. doi:10.1145/1806799.1806813 doi:10.1145/1806799.1806813 Figueiredo E, Cacho N, Sant'Anna C, Monteiro M, Kulesza U, Garcia A, Soares S, Ferrari F, Khan S, Castor Filho C, Dantas F Proceedings of the 30th International Conference on Software Engineering. In Evolving Software Product Lines with Aspects: an Empirical Study on Design Stability. Leipzig: ACM Press; 2008:261–270. doi:10.1145/1368088.1368124 doi:10.1145/1368088.1368124 Figueroa I Proceedings of the 10th International Conference on Aspect-oriented Software Development. In Avoiding Confusion with Exception Handling in Aspect-oriented Programming. ACM New York, NY, USA: Porto de Galinhas; 2011:81–82. doi:10.1145/1960314.1960345 doi:10.1145/1960314.1960345 Fu C, Ryder B Proceedings of the 29th International Conference on Software Engineering. In Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications. Minneapolis: ACM Press; 2007:230–239. doi:10.1109/ICSE.2007.35 doi:10.1109/ICSE.2007.35 Gamma E, Helm R, Johnson R, Vlissides J: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional; 1994. Garcia A, Rubira C, Romanovsky A, Xu J: A comparative study of exception handling mechanisms for building dependable object-oriented software. Journal of Systems and Software 2001, 59: 197–222. 10.1016/S0164-1212(01)00062-0 Garcia I, Cacho N Proceedings of the 1st Workshop on Exception Handling in Contemporary Software Systems, São José dos Campos. eFlowMining: An Exception-Flow Analysis Tool for .NET Applications 2011, 1–8. doi:10.1109/LADCW.2011.18 doi:10.1109/LADCW.2011.18 Godil I, Jacobsen H-A Proceedings of the Centre for Advanced Studies on Collaborative research (CASCON’05). In Horizontal Decomposition of Prevayler. Toronto, Canada: IBM Press; 2005:83–100. Goodenough J: Exception handling: issues and a proposed notation. Communications of the ACM 1975, 18: 683–696. 10.1145/361227.361230 Grove D, Chambers C: A framework for call graph construction algorithms. ACM Transactions on Programmming Languages and Systems (TOPLAS) 2001, 23: 685–746. 10.1145/506315.506316 Kästner C, Apel S, Kuhlemann M Proceedings of the 30th International Conference on Software Engineering, Leipzig. In Granularity in Software Product Lines. ACM New York, NY, USA; 2008:311–320. doi:10.1145/1368088.1368131 doi:10.1145/1368088.1368131 Melo H, Coelho R, Kulesza U Proceedings of the 26th Brazilian Symposium on Software Engineering (SBES). In On a Feature-Oriented Characterization of Exception Flows in Software Product Lines. Natal, Natal; 2012:121–130. doi:10.1109/SBES.2012.15 doi:10.1109/SBES.2012.15 Miller R, Tripathi A Proceedings of the 21st European Conference on Object Oriented Programming (ECOOP 97). In Issues with Exception Handling in Object-Oriented Systems. Berlin: Springer-Verlag; 1997:85–103. Parnas D: On the design and development of program families. IEEE Transactions on Software Engineering 1976, 2: 1–9. Prevayler: Prevayler. 2013. . Accessed 07 June 2013 http://prevayler.org/ . Accessed 07 June 2013 Ribeiro M, Pacheco H, Teixeira L, Borba P Proceedings of ACM Conference on Systems, Programming, Languages and Applications (OOPSLA 2010). In Emergent Feature Modularization. Reno: Software for Humanity Onward!; 2010:17–21. Ribeiro M, Tolêdo T, Winther J, Brabrand C, Borba P Proceedings of the 12th International Conference on Aspect-Oriented Software Development (AOSD 2012). Hasso-Plattner-Institut, Potsdam, Hasso-Plattner-Institut, Potsdam, March 2012. In Emergo: A Tool for Improving Maintainability of Preprocessor-based Product Lines. ACM New York, NY, USA; 2012:23–26. doi:10.1145/2162110.2162128 doi:10.1145/2162110.2162128 Robillard M, Murphy G: Static analysis to support the evolution of exception structure in object-oriented systems. ACM Transactions on Software Engineering and Methodology 2003, 12: 191–221. 10.1145/941566.941569 Shah H, Gorg C, Harrold M: Understanding exception handling: viewpoints of novices and experts. IEEE Transactions on Software Engineering 2010, 36: 150–161. Young T: Using AspectJ to Build a Software Product Line for Mobile Devices. MSc Thesis: University of British Columbia, Canada; 2005.