On a Feature-Oriented Characterization of Exception Flows in Software Product Lines

The Exception Handling (EH) is a widely used mechanism for building robust systems. In Software Product Line (SPL) context it is not different. As EH mechanisms are embedded in most of mainstream programming languages, we can find exception signalers and handlers spread over code assets associated to common and variable SPL features. When exception signalers and handlers are added to an SPL in an unplanned way, one of the possible consequences is the generation of faulty family instances (i.e., instances on which common or variable features signal exceptions that are mistakenly caught inside the system). This paper reports a first systematic study, based on manual inspection and static code analysis, in order to categorize the possible ways exceptions flow in SPLs, and analyze its consequences. Fault-prone exception handling flows were consistently detected during this study, such as flows on which a variable feature signaled an exception a different variable feature handled it.

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

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

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

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

[5]  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.

[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]  Claus Brabrand,et al.  Intraprocedural dataflow analysis for software product lines , 2012, AOSD.

[8]  João Araújo,et al.  Multi-view Composition Language for Software Product Line Requirements , 2009, SLE.

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

[10]  John D. McGregor Building Reusable Testing Assets for a Software Product Line , 2008, 2008 12th International Software Product Line Conference.

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

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

[13]  Charles W. Krueger,et al.  Easing the Transition to Software Mass Customization , 2001, PFE.

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

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

[16]  Heitor Mariano de Aquino Câmara Uma abordagem sistemática para implementação, gerenciamento e customização de testes de linhas de produto de software , 2011 .

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

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

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

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

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

[22]  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..

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

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

[25]  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.

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

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

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