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

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.

[1]  Claus Brabrand,et al.  Emergo: a tool for improving maintainability of preprocessor-based product lines , 2012, AOSD.

[2]  Cláudio Sant'Anna,et al.  Evolving software product lines with aspects , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[3]  Sven Apel,et al.  Strategies for product-line verification: Case studies and experiments , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[4]  David Grove,et al.  A framework for call graph construction algorithms , 2001, TOPL.

[5]  Walter F. Tichy,et al.  Proceedings 25th International Conference on Software Engineering , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[6]  Cecília M. F. Rubira,et al.  A comparative study of exception handling mechanisms for building dependable object-oriented software , 2001, J. Syst. Softw..

[7]  Chen Fu,et al.  Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[8]  Thaís Vasconcelos Batista,et al.  An exploratory study of fault-proneness in evolving aspect-oriented programs , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[9]  Trevor J. Young,et al.  Using AspectJ to build a software product line for mobile devices , 2005 .

[10]  Hans-Arno Jacobsen,et al.  Horizontal decomposition of Prevayler , 2005, CASCON.

[11]  Carlos José Pereira de Lucena,et al.  Unveiling and taming liabilities of aspects in the presence of exceptions: A static analysis based approach , 2011, Inf. Sci..

[12]  Ajitha Rajan,et al.  Proceedings of the 30th international conference on Software engineering , 2008 .

[13]  Hina Shah,et al.  Understanding Exception Handling: Viewpoints of Novices and Experts , 2010, IEEE Transactions on Software Engineering.

[14]  Cecília M. F. Rubira,et al.  Explicit exception handling variability in component-based product line architectures , 2008, WEH '08.

[15]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[16]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[17]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[18]  Anand R. Tripathi,et al.  Issues with Exception Handling in Object-Oriented Systems , 1997, ECOOP.

[19]  Márcio Ribeiro,et al.  Emergent feature modularization , 2010, SPLASH/OOPSLA Companion.

[20]  Martin P. Robillard,et al.  Static analysis to support the evolution of exception structure in object-oriented systems , 2003, TSEM.

[21]  Carlos José Pereira de Lucena,et al.  Assessing the Impact of Aspects on Exception Flows: An Exploratory Study , 2008, ECOOP.

[22]  Ismael Figueroa Avoiding confusion with exception handling in aspect-oriented programming , 2011, AOSD '11.

[23]  Claus Brabrand,et al.  Intraprocedural dataflow analysis for software product lines , 2012, AOSD.

[24]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[25]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

[26]  Uirá Kulesza,et al.  On a Feature-Oriented Characterization of Exception Flows in Software Product Lines , 2012, 2012 26th Brazilian Symposium on Software Engineering.

[27]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[28]  Nélio Cacho,et al.  eFlowMining: An Exception-Flow Analysis Tool for .NET Applications , 2011, 2011 Fifth Latin-American Symposium on Dependable Computing Workshops.

[29]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[30]  Dalton Serey Guerrero,et al.  Design tests: An approach to programmatically check your code against design rules , 2009, 2009 31st International Conference on Software Engineering - Companion Volume.