Extracting Software Product Lines: A Case Study Using Conditional Compilation

Software Product Line (SPL) is a development paradigm that targets the creation of variable software systems. Despite the increasing interest in product lines, research in the area usually relies on small systems implemented in the laboratories of the authors involved in the investigative work. This characteristic hampers broader conclusions about industry-strength product lines. Therefore, in order to address the unavailability of public and realistic product lines, this paper describes an experiment involving the extraction of a SPL for ArgoUML, an open source tool widely used for designing systems in UML. Using conditional compilation we have extracted eight complex and relevant features from ArgoUML, resulting in a product line called ArgoUML-SPL. By making the extracted SPL publicly available, we hope it can be used to evaluate the various flavors of techniques, tools, and languages that have been proposed to implement product lines. Moreover, we have characterized the implementation of the features considered in our experiment relying on a set of product-line specific metrics. Using the results of this characterization, it was possible to shed light on the major challenges involved in extracting features from real-world systems.

[1]  Mark Harman,et al.  Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects , 2006, IEEE Transactions on Software Engineering.

[2]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[3]  Stéphane Ducasse,et al.  Distribution Map , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[4]  Cláudio Sant'Anna,et al.  Crosscutting patterns and design stability: An exploratory analysis , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[5]  Marco Tulio Valente,et al.  Object-oriented transformations for extracting aspects , 2009, Inf. Softw. Technol..

[6]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[7]  Roberto Erick Lopez-Herrejon,et al.  Evaluating Support for Features in Advanced Modularization Technologies , 2005, ECOOP.

[8]  Alfred V. Aho,et al.  Do Crosscutting Concerns Cause Defects? , 2008, IEEE Transactions on Software Engineering.

[9]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[10]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[11]  Marco Tulio Valente,et al.  On the benefits of quantification in AspectJ systems , 2010, Journal of the Brazilian Computer Society.

[12]  Sven Apel,et al.  An analysis of the variability in forty preprocessor-based software product lines , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[13]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE '06.

[14]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

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

[16]  Wolfgang De Meuter,et al.  Can we refactor conditional compilation into aspects? , 2009, AOSD '09.

[17]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[18]  Sven Apel,et al.  Virtual Separation of Concerns - A Second Chance for Preprocessors , 2009, J. Object Technol..

[19]  Marco Tulio Valente,et al.  Guidelines for Enabling the Extraction of Aspects from Existing Object-Oriented Code , 2009, J. Object Technol..

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

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

[22]  David M. Weiss,et al.  The Product Line Hall of Fame , 2008, 2008 12th International Software Product Line Conference.

[23]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

[24]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[25]  Reidar Conradi,et al.  An empirical investigation of software reuse benefits in a large telecom product , 2008, TSEM.

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

[27]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[28]  Jason E. Robbins,et al.  Cognitive support, UML adherence, and XMI interchange in Argo/UML , 2000, Inf. Softw. Technol..

[29]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[30]  Roberto Erick Lopez-Herrejon,et al.  A Standard Problem for Evaluating Product-Line Methodologies , 2001, GCSE.