Abstract
Several variability representations have been proposed over the years. Software maintenance in the presence of variability is known to be hard. One of the reasons is that maintenance tasks require a large amount of cognitive effort for program comprehension. In fact, the different ways of representing variability in source code might influence the comprehension process in different ways. Despite the differences, there is little evidence about how these variability representations – such as conditional-compilation directives or feature-oriented programming – influence program comprehension. Existing research has focused primarily on either understanding how code using modern paradigms evolves compared to the traditional way of realizing variability, namely conditional compilation, or on the aspects influencing the comprehension of conditional compilation only. We used two different programs implemented in Java and each of these variability representations. As Java does not support conditional compilation natively, we relied on the mimicking (i.e., preprocessing annotations in comments) that has been used in the literature. Our results show no significant statistical differences regarding the evaluated measures (correctness, understanding, or response time) in the tasks. Our heterogeneous sample allowed us to produce evidence about the influence of using CC and FOP variability representations on the aspects involved in the comprehension of feature-oriented software, while addressing bug-finding tasks.
Similar content being viewed by others
Notes
Available at http://antenna.sourceforge.net/
Available at http://www.slashdev.ca/javapp/
Both MobileMedia versions are available at: http://fosd.net/experiments
Both RiSEEvent versions are available at: https://github.com/riselabs-ufba/RiSEEventSPL-FH.
Prophet is free and open-source and available at https://github.com/feigensp/Prophet/
Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H01_H02-data.pdf
Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H03-data.pdf
Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H03-data.pdf
References
Anderson TW, Finn J (1996) The new statistical analysis of data, Springer, Berlin
Anderson TW, Rubin H (1956) Statistical inference in factor analysis. University of California Press, Berkeley, pp 111–150
Apel S, Batory D, Kästner C, Saake G (2013) Feature-oriented software product lines: concepts and implementation, Springer, Berlin
Apel S, Kästner C (2009) An overview of feature-oriented software development. J Object Techn 8(5):49–84
Apel S, Kästner C, Lengauer C (2013) Language-independent and automated software composition: The FeatureHouse experience. Trans Softw Eng 39(1):63–79
Batory D (2005) Feature models, grammars, and propositional formulas. In: Proceedings of the international software product lines conference. Springer, Berlin, pp 7–20
Costello AB, Osborne JW (2005) Best practices in exploratory factor analysis Four recommendations for getting the most from your analysis. Pract Assess Res Eval 10:173–178
da Mota Silveira Neto PA, de Santana TL, de Almeida ES, Cavalcanti YC (2016) Rise events: A testbed for software product lines experimentation. In: Proceedings of the international workshop on variability and complexity in software design. ACM, pp 12–13
Feigenspan J, Kästner C, Apel S, Leich T (2009) How to compare program comprehension in fosd empirically An experience report. In: Proceedings of the international workshop on feature-oriented software development. ACM, pp 55–62
Feigenspan J, Kästner C, Apel S, Liebig J, Schulze M, Dachselt R, Papendieck M, Leich T, Saake G (2013) Do background colors improve program comprehension in the #ifdef hell? Empir Softw Eng 18(4):699–745
Feigenspan J, Siegmund N, Hasselberg A, Köppen M (2011) PROPHET: tool infrastructure to support program comprehension experiments. In: Proceedings of the international symposium on empirical software engineering and measurement. IEEE
Ferreira GCS, Gaia FN, Figueiredo E, Maia MA (2014) On the use of feature-oriented programming for evolving software product lines— A comparative study. Sci Comput Program 93(Part A(1)):65–85
Figueiredo E, Cacho N, Sant’Anna C, Monteiro M, Kulesza U, Garcia A, Soares S, Ferrari F, Khan S, Castor Filho F, Dantas F (2008) Evolving software product lines with aspects: an empirical study on design stability. In: Proceedings of the 30th international conference on software engineering. ACM, pp 261–270
Gaia FN, Ferreira GCS, Figueiredo E, Maia MA (2014) A quantitative and qualitative assessment of aspectual feature modules for evolving software product lines. Sci Comput Program 96(Part 2(1)):230–253. Selected and extended papers of the Brazilian Symposium on Programming Languages 2012
Maalej W, Tiarks R, Roehm T, Koschke R (2014) On the comprehension of program comprehension. Trans Softw Eng Methodol 23(4):31,1–31,37
Malaquias R, Ribeiro M, Bonifácio R, Monteiro E, Medeiros F, Garcia A, Gheyi R (2017) The discipline of preprocessor-based annotations - does #ifdef TAG n’t #endif matter. In: Proceedings of the international conference on program comprehension, pp 297–307
Medeiros F, Kästner C, Ribeiro M, Nadi S, Gheyi R (2015) The love/hate relationship with the C preprocessor: sn interview study. In: Proceedings of the European conference on object-oriented programming. Dagstuhl Publishing, pp 495–518
Melo J, Brabrand C, Wa̧sowski A (2016) How does the degree of variability affect bug finding? In: Proceedings of the international conference on software engineering. ACM, pp 679–690
Melo J, Narcizo FB, Hansen DW, Brabrand C, Wasowski A (2017) Variability through the eyes of the programmer. In: Proceedings of the international conference on program comprehension. IEEE, pp 34–44
Meyer B (1988) Object-oriented software construction, vol 2. Prentice Hall, New York
Rensis L (1932) A technique for the measurement of attitudes. Arch Psychol 22 (140):5–55
Salman I, Misirli AT, Juristo N (2015) Are students representatives of professionals in software engineering experiments? In: 37th IEEE international conference on software engineering (ICSE). IEEE, pp 666–676
Santos AR, Machado IC, Almeida ES (2016) RiPLE-HC Javascript systems meets SPL composition. In: Proceedings of the international systems and software product line conference. ACM, pp 154–163
Santos AR, Machado IC, Almeida ES (2017) Aspects influencing feature-oriented software comprehension: Observations from a focus group. In: Proceedings of the Brazilian symposium on software components, architectures, and reuse. ACM, pp 1–10
Santos JAM, de Mendonça MG (2015) Exploring decision drivers on god class detection in three controlled experiments. In: Proceedings of the annual ACM symposium on applied computing, SAC ’15. ACM, pp 1472–1479
Schulze S, Liebig J, Siegmund J, Apel S (2013) Does the discipline of preprocessor annotations matter?: A controlled experiment. In: Proceedings of the 12th international conference on generative programming: Concepts & experiences. ACM, pp 65–74
Shull FJ, Carver JC, Vegas S, Juristo N (2008) The role of replications in empirical software engineering. Empir Softw Eng 13(2):211–218
Siegmund J, Kästner C, Apel S, Parnin C, Bethmann A, Leich T, Saake G, Brechmann A (2014) Understanding understanding source code with functional magnetic resonance imaging. In: Proceedings of the international conference on software engineering. ACM, pp 378–389
Siegmund J, Kästner C, Liebig J, Apel S (2012) Comparing program comprehension of physically and virtually separated concerns. In: Proceedings of the international workshop on feature-oriented software development. ACM, pp 17–24
Siegmund J, Kästner C, Liebig J, Apel S, Hanenberg S (2014) Measuring and modeling programming experience. Empir Softw Eng 19(5):1299–1334
Siegmund J, Schumann J (2014) Confounding parameters on program comprehension: A literature survey. Empir Softw Eng 20(4):1159–1192
Spencer H, Collyer G (1992) #ifdef considered harmful, or portability experience with C news. In: Proceedings of the USENIX Summer 1992 Technical Conference, pp 185–197. USENIX
Wohlin C, Runeson P, Höst M, Ohlsson MC, Regnell B, Wesslén A (2012) Experimentation in software engineering. Springer, Berlin
Acknowledgment
This work is partially supported by INES (grant CNPq/465614/2014-0), FAPESB (grants BOL0820/2014 and JCB0060/2016), CAPES (grant PDSE 99999.007061/2015-03), the German Research Foundation (AP 206/6, SI 2045/2/̄1), and the Bavarian State Ministry of Education, Science and the Arts in the framework of the Centre Digitisation.Bavaria (ZD.B).
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Massimiliano Di Penta
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Appendix Questionnaire
Appendix Questionnaire
Table 13 shows the questionnaire used for the characterization of the programming experience.
Rights and permissions
About this article
Cite this article
Rodrigues Santos, A., do Carmo Machado, I., Santana de Almeida, E. et al. Comparing the influence of using feature-oriented programming and conditional compilation on comprehending feature-oriented software. Empir Software Eng 24, 1226–1258 (2019). https://doi.org/10.1007/s10664-018-9658-x
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-018-9658-x