Understanding How Feature Dependent Variables Affect Configurable System Comprehensibility

Authors

DOI:

https://doi.org/10.5753/jserd.2025.4803

Keywords:

Feature dependency, Program comprehension, Configurable Systems, Dependent variable, Eye-tracking, Heart rate monitor

Abstract

Background: #ifdefs allow developers to define source code related to features that should or should not be compiled. A feature dependency occurs in a configurable system when source code snippets of different features share code elements, such as variables. Variables that produce feature dependency are called dependent variables. The dependency between two features may include just one dependent variable or more than one. It is reasonable to suspect that a high number of dependent variables and their use make the analysis of variability scenarios more complex. In fact, previous studies show that #ifdefs may affect comprehensibility, especially when their use implies feature dependency. Aims: In this sense, our goal is to understand how feature dependent variables affect the comprehensibility of configurable system source code. We conducted two complementary empirical studies. In Study 1, we evaluate if the comprehensibility of configurable system source code varies according to the number of dependent variables. Testing this hypothesis is important so that we can recommend practitioners and researchers the extent to which writing #ifdef code with dependencies is harmful. In study 2, we carried out an experiment in which developers analyzed programs with different degrees of variability. Our results show that the degree of variability did not affect the comprehensibility of programs with feature dependent variables. Method: We executed a controlled experiment with 12 participants who analyzed programs trying to specify their output. We quantified comprehensibility using metrics based on time and attempts to answer tasks correctly, participants’ visual effort, and participants’ heart rate. Results: Our results indicate that the higher the number of dependent variables the more difficult it was to understand programs with feature dependency. Conclusions: In practice, our results indicate that comprehensibility is more negatively affected in programs with higher number of dependent variables and when these variables are defined at a point far from the points where they are used.

Downloads

Download data is not yet available.

References

Abal, I., Brabrand, C., and Wasowski, A. (2014). 42 variability bugs in the linux kernel: a qualitative analysis. In 29th ACM/IEEE international conference on Automated software engineering.

Bailey, R. A. (2008). Design of comparative experiments, volume 25. Cambridge University Press.

Baniassad, E. and Murphy, G. (1998). Conceptual module querying for software reengineering. In 20th International Conference on Software Engineering.

Camilli, G. and Hopkins, K. D. (1978). Applicability of chi-square to 2× 2 contingency tables with small expected cell frequencies. Psychological Bulletin.

da Costa, J. A. S., Gheyi, R., Ribeiro, M., Apel, S., Alves, V., Fonseca, B., Medeiros, F., and Garcia, A. (2021). Evaluating refactorings for disciplining# ifdef annotations: An eye tracking study with novices. Empirical Software Engineering.

Feigenspan, J., Kästner, C., Apel, S., Liebig, J., Schulze, M., Dachselt, R., Papendieck, M., Leich, T., and Saake, G. (2013). Do background colors improve program comprehension in the# ifdef hell? Empirical Software Engineering.

Fenske, W., Krüger, J., Kanyshkova, M., and Schulze, S. (2020). # ifdef directives and program comprehension: The dilemma between correctness and preference. In 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME).

Fenske, W., Schulze, S., and Saake, G. (2017). How preprocessor annotations (do not) affect maintainability: a case study on change-proneness. ACM SIGPLAN Notices.

Fritz, T., Begel, A., Müller, S. C., Yigit-Elliott, S., and Züger, M. (2014). Using psycho-physiological measures to assess task difficulty in software development. In 36th International Conference on Software Engineering (ICSE)

Garvin, B. J. and Cohen, M. B. (2011). Feature interaction faults revisited: An exploratory study. In 22nd International Symposium on Software Reliability Engineering (ISSRE).

Hijazi, H., Couceiro, R., Castelhano, J., De Carvalho, P., Castelo-Branco, M., and Madeira, H. (2021). Intelligent biofeedback augmented content comprehension (tellback). IEEE Access.

Lanza, M. and Marinescu, R. (2007). Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Springer Science & Business Media.

Liebig, J., Apel, S., Lengauer, C., Kästner, C., and Schulze, M. (2010). An analysis of the variability in forty preprocessor-based software product lines. In 32nd ACM/IEEE International Conference on Software Engineering (ICSE).

Malaquias, R., Ribeiro, M., Bonifácio, R., Monteiro, E., Medeiros, F., Garcia, A., and Gheyi, R. (2017). The discipline of preprocessor-based annotations-does# ifdef tag n’t# endif matter. In 25th International Conference on Program Comprehension (ICPC).

McCabe, T. J. (1976). A complexity measure. IEEE Transactions on Software Engineering.

Medeiros, F., Ribeiro, M., and Gheyi, R. (2013). Investigating preprocessor-based syntax errors. In ACM SIGPLAN Notices.

Medeiros, F., Ribeiro, M., Gheyi, R., Apel, S., Kästner, C., Ferreira, B., Carvalho, L., and Fonseca, B. (2017). Discipline matters: Refactoring of preprocessor directives in the# ifdef hell. IEEE Transactions on Software Engineering.

Medeiros, F., Ribeiro, M., Gheyi, R., Braz, L., Kästner, C., Apel, S., and Santos, K. (2020). An empirical study on configuration-related code weaknesses. In XXXIV Brazilian Symposium on Software Engineering.

Medeiros, F., Rodrigues, I., Ribeiro, M., Teixeira, L., and Gheyi, R. (2015). An empirical study on configuration-related issues: Investigating undeclared and unused identifiers. ACM SIGPLAN Notices.

Melo, J., Brabrand, C., and Wasowski, A. (2016). How does the degree of variability affect bug finding? In 38th International Conference on Software Engineering (ICSE).

Melo, J., Narcizo, F. B., Hansen, D. W., Brabrand, C., and Wasowski, A. (2017). Variability through the eyes of the programmer. In 25th International Conference on Program Comprehension (ICPC).

Müller, S. C. and Fritz, T. (2015). Stuck and frustrated or in flow and happy: Sensing developers’ emotions and progress. In 37th IEEE International Conference on Software Engineering (ICSE).

Nakagawa, T., Kamei, Y., Uwano, H., Monden, A., Matsumoto, K., and German, D. M. (2014). Quantifying programmers’ mental workload during program comprehension based on cerebral blood flow measurement: A controlled experiment. In 36th international conference on software engineering.

Rayner, K. (1998). Eye movements in reading and information processing: 20 years of research. Psychological bulletin.

Rayner, K. (2009). Eye movements and attention in reading, scene perception, and visual search. The quarterly journal of experimental psychology.

Ribeiro, M., Borba, P., and Kästner, C. (2014). Feature maintenance with emergent interfaces. In 36th International Conference on Software Engineering (ICSE).

Ribeiro, M., Pacheco, H., Teixeira, L., and Borba, P. (2010). Emergent feature modularization. In International conference companion on Object-oriented programming systems languages and applications companion.

Rodrigues, I., Ribeiro, M., Medeiros, F., Borba, P., Fonseca, B., and Gheyi, R. (2016). Assessing fine-grained feature dependencies. Information and Software Technology.

Santos, D. and Sant’Anna, C. (2019). How does feature dependency affect configurable system comprehensibility? In 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).

Santos, D., SantAnna, C., and Ribeiro, M. (2023). An experiment on how feature dependent variables affect configurable system comprehensibility. In 17th Brazilian Symposium on Software Components, Architectures, and Reuse, pages 61–70.

Schulze, S., Liebig, J., Siegmund, J., and Apel, S. (2013). Does the discipline of preprocessor annotations matter? a controlled experiment. In 12th international conference on Generative programming: concepts & experiences. Association for Computing Machinery.

Spencer, H. and Collyer, G. (1992). # ifdef considered harmful, or portability experience with c news. Usenix Summer 1992 Technical Conf., pages 185–197.

Tartler, R., Dietrich, C., Sincero, J., Schröder-Preikschat, W., and Lohmann, D. (2014). Static analysis of variability in system software: The 90,000# ifdefs issue. In 2014 USENIX Annual Technical Conference (USENIX ATC 14).

Voßkühler, A., Nordmeier, V., Kuchinke, L., and Jacobs, A. M. (2008). Ogama (open gaze and mouse analyzer): open-source software designed to analyze eye and mouse movements in slideshow study designs. Behavior research methods.

Walter, G. F. and Porges, S. W. (1976). Heart rate and respiratory responses as a function of task difficulty: The use of discriminant analysis in the selection of psychologically sensitive physiological responses. Psychophysiology.

Downloads

Published

2025-05-28

How to Cite

Santos, D., Ribeiro, M., & Sant’Anna, C. (2025). Understanding How Feature Dependent Variables Affect Configurable System Comprehensibility. Journal of Software Engineering Research and Development, 13(2), 13:1 – 13:18. https://doi.org/10.5753/jserd.2025.4803

Issue

Section

Research Article

Most read articles by the same author(s)