Skip to main content
Log in

Comparing the influence of using feature-oriented programming and conditional compilation on comprehending feature-oriented software

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12

Similar content being viewed by others

Notes

  1. http://rise.com.br/riselabs/vicc/

  2. Available at http://antenna.sourceforge.net/

  3. Available at http://www.slashdev.ca/javapp/

  4. www.rise.com.br/

  5. Both MobileMedia versions are available at: http://fosd.net/experiments

  6. Both RiSEEvent versions are available at: https://github.com/riselabs-ufba/RiSEEventSPL-FH.

  7. Prophet is free and open-source and available at https://github.com/feigensp/Prophet/

  8. Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H01_H02-data.pdf

  9. Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H03-data.pdf

  10. Data available at: http://rise.com.br/riselabs/vicc/data/vicc3/H03-data.pdf

  11. http://rise.com.br/riselabs/vicc/

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

    MATH  Google Scholar 

  • 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

    Article  Google Scholar 

  • Apel S, Kästner C, Lengauer C (2013) Language-independent and automated software composition: The FeatureHouse experience. Trans Softw Eng 39(1):63–79

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • Rensis L (1932) A technique for the measurement of attitudes. Arch Psychol 22 (140):5–55

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Siegmund J, Schumann J (2014) Confounding parameters on program comprehension: A literature survey. Empir Softw Eng 20(4):1159–1192

    Article  Google Scholar 

  • 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

    Book  MATH  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Alcemir Rodrigues Santos.

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.

Table 13 Questionnaire for measuring programming experience of the participants

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-018-9658-x

Keywords

Navigation