Preprocessor-based variability in open-source and industrial software systems: An empirical study

被引:0
作者
Claus Hunsen
Bo Zhang
Janet Siegmund
Christian Kästner
Olaf Leßenich
Martin Becker
Sven Apel
机构
[1] University of Passau,
[2] University of Kaiserslautern,undefined
[3] Carnegie Mellon University,undefined
[4] Fraunhofer Institute of Experimental Software Engineering,undefined
来源
Empirical Software Engineering | 2016年 / 21卷
关键词
C preprocessor; Variability; Configurable systems; Open-source systems; Industrial systems; Software product lines;
D O I
暂无
中图分类号
学科分类号
摘要
Almost every sufficiently complex software system today is configurable. Conditional compilation is a simple variability-implementation mechanism that is widely used in open-source projects and industry. Especially, the C preprocessor (CPP) is very popular in practice, but it is also gaining (again) interest in academia. Although there have been several attempts to understand and improve CPP, there is a lack of understanding of how it is used in open-source and industrial systems and whether different usage patterns have emerged. The background is that much research on configurable systems and product lines concentrates on open-source systems, simply because they are available for study in the first place. This leads to the potentially problematic situation that it is unclear whether the results obtained from these studies are transferable to industrial systems. We aim at lowering this gap by comparing the use of CPP in open-source projects and industry—especially from the embedded-systems domain—based on a substantial set of subject systems and well-known variability metrics, including size, scattering, and tangling metrics. A key result of our empirical study is that, regarding almost all aspects we studied, the analyzed open-source systems and the considered embedded systems from industry are similar regarding most metrics, including systems that have been developed in industry and made open source at some point. So, our study indicates that, regarding CPP as variability-implementation mechanism, insights, methods, and tools developed based on studies of open-source systems are transferable to industrial systems—at least, with respect to the metrics we considered.
引用
收藏
页码:449 / 482
页数:33
相关论文
共 24 条
[1]  
Benjamini Y(1995)Controlling the false discovery rate: a practical and powerful approach to multiple testing J R Stat Soc Ser B (Methodological) 57 289-300
[2]  
Hochberg Y(1968)How do committees invent? Datamation 14 28-31
[3]  
Conway ME(1982)On the origins of the .05 level of statistical significance Am Psychol 37 553-558
[4]  
Cowles M(2002)An empirical analysis of C preprocessor use IEEE Trans Softw Eng (TSE) 12 1146-1170
[5]  
Davis C(2011)The choice calculus: a representation for software variation ACM Trans Softw Eng Methodol (TOSEM) 21 6:1-6:27
[6]  
Ernst MD(2013)Do background colors improve program comprehension in the #ifdef hell? Empir Softw Eng 18 699-745
[7]  
Badros GJ(2006)The transformation of open source software MIS Quarterly 30 587-598
[8]  
Notkin D(2014)On the evolution of Lehman’s laws J Softw Evol Process 26 613-619
[9]  
Erwig M(2013)Open source engineering processes Inform Technol 55 196-203
[10]  
Walkingshaw E(undefined)undefined undefined undefined undefined-undefined