Skip to main content
Erschienen in: Empirical Software Engineering 4/2013

01.08.2013

Do background colors improve program comprehension in the #ifdef hell?

verfasst von: Janet Feigenspan, Christian Kästner, Sven Apel, Jörg Liebig, Michael Schulze, Raimund Dachselt, Maria Papendieck, Thomas Leich, Gunter Saake

Erschienen in: Empirical Software Engineering | Ausgabe 4/2013

Einloggen

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

Software-product-line engineering aims at the development of variable and reusable software systems. In practice, software product lines are often implemented with preprocessors. Preprocessor directives are easy to use, and many mature tools are available for practitioners. However, preprocessor directives have been heavily criticized in academia and even referred to as “#ifdef hell”, because they introduce threats to program comprehension and correctness. There are many voices that suggest to use other implementation techniques instead, but these voices ignore the fact that a transition from preprocessors to other languages and tools is tedious, erroneous, and expensive in practice. Instead, we and others propose to increase the readability of preprocessor directives by using background colors to highlight source code annotated with ifdef directives. In three controlled experiments with over 70 subjects in total, we evaluate whether and how background colors improve program comprehension in preprocessor-based implementations. Our results demonstrate that background colors have the potential to improve program comprehension, independently of size and programming language of the underlying product. Additionally, we found that subjects generally favor background colors. We integrate these and other findings in a tool called FeatureCommander, which facilitates program comprehension in practice and which can serve as a basis for further research.

Sie haben noch keine Lizenz? Dann Informieren Sie sich jetzt über unsere Produkte:

Springer Professional "Wirtschaft"

Online-Abonnement

Mit Springer Professional "Wirtschaft" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 340 Zeitschriften

aus folgenden Fachgebieten:

  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Versicherung + Risiko




Jetzt Wissensvorsprung sichern!

Springer Professional "Technik"

Online-Abonnement

Mit Springer Professional "Technik" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 390 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Maschinenbau + Werkstoffe




 

Jetzt Wissensvorsprung sichern!

Springer Professional "Wirtschaft+Technik"

Online-Abonnement

Mit Springer Professional "Wirtschaft+Technik" erhalten Sie Zugriff auf:

  • über 102.000 Bücher
  • über 537 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Maschinenbau + Werkstoffe
  • Versicherung + Risiko

Jetzt Wissensvorsprung sichern!

Fußnoten
1
We discuss problems arising from preprocessor usage in Section 2.
 
3
Preattentive perception is the fast recognition of a limited set of visual properties (Goldstein 2002).
 
5
Size is between 900 and 40,000 lines of code (von Mayrhauser and Vans 1993).
 
6
MobileMedia was developed in eight releases, from which we took the fifth, because it offered the best balance between size and complexity for our experiment. We omitted 9 exception classes and 2 small features for different screen resolutions, because they are irrelevant for understanding the source code and fixing the bugs.
 
7
In the source code, there is no #else combination of ifdef directives, so it was always clear from the background colors that feature code concerned selected features.
 
8
Figure 4 uses a box plot to describe data (Anderson and Finn 1996). It plots the median as thick line and the quartiles as thin line, so that 50% of all measurements are inside the box. Values that strongly deviate from the median are outliers and drawn as separate dots.
 
14
Code of an else directive is selected when code of an according ifdef directive is not selected.
 
15
The tasks are available at the project’s website.
 
16
Expected frequencies for single tasks are too small due to the small number of observations.
 
17
We cannot provide p values in this case, because due to our small sample, we had to look up whether observed differences are significant in a table of the U distribution (Giventer 2008).
 
18
http://​fosd.​de/​fc. On the website, there is also a video demonstrating the use of FeatureCommander. This video shows all functionality of FeatureCommander, not the reduced set we used in the third experiment. FeatureCommander with the reduced set is also available at the website.
 
19
To recognize feature code, FeatureCommander uses a file that describes where an ifdef directive starts and where it ends.
 
Literatur
Zurück zum Zitat Adams B et al (2008) Aspect mining in the presence of the C preprocessor. In: Proc.AOSD workshop on linking aspect technology and evolution. ACM Press, pp 1–6 Adams B et al (2008) Aspect mining in the presence of the C preprocessor. In: Proc.AOSD workshop on linking aspect technology and evolution. ACM Press, pp 1–6
Zurück zum Zitat Adams B et al (2009) Can we refactor conditional compilation into aspects? In: Proc. Int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 243–254 Adams B et al (2009) Can we refactor conditional compilation into aspects? In: Proc. Int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 243–254
Zurück zum Zitat Anderson T, Finn J (1996) The new statistical analysis of data. Springer Anderson T, Finn J (1996) The new statistical analysis of data. Springer
Zurück zum Zitat Apel S, Kästner C (2009) An overview of feature-oriented software development. J Obj Techn 8(4):1–36 Apel S, Kästner C (2009) An overview of feature-oriented software development. J Obj Techn 8(4):1–36
Zurück zum Zitat Apel S et al (2008) Aspectual feature modules. IEEE Trans Softw Eng 34(2):162–180CrossRef Apel S et al (2008) Aspectual feature modules. IEEE Trans Softw Eng 34(2):162–180CrossRef
Zurück zum Zitat Atkins D et al (2002) Using version control data to evaluate the impact of software tools: a case study of the version editor. IEEE Trans Softw Eng 28(7):625–637CrossRef Atkins D et al (2002) Using version control data to evaluate the impact of software tools: a case study of the version editor. IEEE Trans Softw Eng 28(7):625–637CrossRef
Zurück zum Zitat Aversano L et al (2002) Handling preprocessor-conditioned declarations. In: Proc. IEEE int’l workshop on source code analysis and manipulation. IEEE CS, pp 83–92 Aversano L et al (2002) Handling preprocessor-conditioned declarations. In: Proc. IEEE int’l workshop on source code analysis and manipulation. IEEE CS, pp 83–92
Zurück zum Zitat Basili VR (1992) Software modeling and measurement: the goal/question/metric paradigm. Tech. Rep. CS-TR-2956 (UMIACS-TR-92-96) Basili VR (1992) Software modeling and measurement: the goal/question/metric paradigm. Tech. Rep. CS-TR-2956 (UMIACS-TR-92-96)
Zurück zum Zitat Baxter ID, Mehlich M (2001) Preprocessor conditional removal by simple partial evaluation. In: Proc. working conf. reverse engineering (WCRE). IEEE CS, pp 281–290 Baxter ID, Mehlich M (2001) Preprocessor conditional removal by simple partial evaluation. In: Proc. working conf. reverse engineering (WCRE). IEEE CS, pp 281–290
Zurück zum Zitat Boehm B (1981) Software engineering economics. Prentice Hall Boehm B (1981) Software engineering economics. Prentice Hall
Zurück zum Zitat Boysen J (1977) Factors affecting computer program comprehension. PhD thesis, Iowa State University Boysen J (1977) Factors affecting computer program comprehension. PhD thesis, Iowa State University
Zurück zum Zitat Brooks R (1978) Using a behavioral theory of program comprehension in software engineering. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 196–201 Brooks R (1978) Using a behavioral theory of program comprehension in software engineering. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 196–201
Zurück zum Zitat Chevalier F et al (2010) Using text animated transitions to support navigation in document histories. In: Proc. conf. human factors in computing systems (CHI). ACM Press, pp 683–692 Chevalier F et al (2010) Using text animated transitions to support navigation in document histories. In: Proc. conf. human factors in computing systems (CHI). ACM Press, pp 683–692
Zurück zum Zitat Chu-Carroll M et al (2003) Visual separation of concerns through multidimensional program storage. In: Proc. int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 188–197 Chu-Carroll M et al (2003) Visual separation of concerns through multidimensional program storage. In: Proc. int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 188–197
Zurück zum Zitat Clements P, Northrop L (2001) Software product lines: practice and patterns. Addison-Wesley, Reading, MA Clements P, Northrop L (2001) Software product lines: practice and patterns. Addison-Wesley, Reading, MA
Zurück zum Zitat Cliff N (1993) Dominance statistics: ordinal analyses to answer ordinal questions. Psychol Bull 114(3):494–509MathSciNetCrossRef Cliff N (1993) Dominance statistics: ordinal analyses to answer ordinal questions. Psychol Bull 114(3):494–509MathSciNetCrossRef
Zurück zum Zitat Cohen J (1969) Statistical power analysis for the behavioral sciences. Academic Press Cohen J (1969) Statistical power analysis for the behavioral sciences. Academic Press
Zurück zum Zitat Coppit D et al (2007) Spotlight: a prototype tool for software plans. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 754–757 Coppit D et al (2007) Spotlight: a prototype tool for software plans. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 754–757
Zurück zum Zitat Couto MV et al (2011) Extracting software product lines: a case study using conditional compilation. In: Proc. Europ. conf. software maintenance and reengineering (CSMR), pp 191–200 Couto MV et al (2011) Extracting software product lines: a case study using conditional compilation. In: Proc. Europ. conf. software maintenance and reengineering (CSMR), pp 191–200
Zurück zum Zitat Czarnecki K, Antkiewicz M (2005) Mapping features to models: a template approach based on superimposed variants. In: Proc. int’l conf. generative programming and component engineering (GPCE). Springer, pp 422–437 Czarnecki K, Antkiewicz M (2005) Mapping features to models: a template approach based on superimposed variants. In: Proc. int’l conf. generative programming and component engineering (GPCE). Springer, pp 422–437
Zurück zum Zitat Daly J et al (1995) The effect of inheritance on the maintainability of object-oriented software: an empirical study. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 20–29 Daly J et al (1995) The effect of inheritance on the maintainability of object-oriented software: an empirical study. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 20–29
Zurück zum Zitat Diehl S (2007) Software visualization: visualizing the structure, behaviour, and evolution of software. Springer Diehl S (2007) Software visualization: visualizing the structure, behaviour, and evolution of software. Springer
Zurück zum Zitat Dunsmore A, Roper M (2000) A comparative evaluation of program comprehension measures. Tech. Rep. EFoCS 35-2000, Department of Computer Science, University of Strathclyde Dunsmore A, Roper M (2000) A comparative evaluation of program comprehension measures. Tech. Rep. EFoCS 35-2000, Department of Computer Science, University of Strathclyde
Zurück zum Zitat Eick S et al (1992) SeeSoft—a tool for visualizing line oriented software statistics. IEEE Trans Softw Eng 18(11):957–968CrossRef Eick S et al (1992) SeeSoft—a tool for visualizing line oriented software statistics. IEEE Trans Softw Eng 18(11):957–968CrossRef
Zurück zum Zitat Favre J-M (1995) The CPP paradox. In: Proc. European workshop on software maintenance Favre J-M (1995) The CPP paradox. In: Proc. European workshop on software maintenance
Zurück zum Zitat Favre J-M (1997) Understanding-in-the-large. In: Proc. int’l workshop on program comprehension (IWPC). IEEE CS, p 29 Favre J-M (1997) Understanding-in-the-large. In: Proc. int’l workshop on program comprehension (IWPC). IEEE CS, p 29
Zurück zum Zitat Feigenspan J (2009) Empirical comparison of FOSD approaches regarding program comprehension—a feasibility study. Master’s thesis, University of Magdeburg Feigenspan J (2009) Empirical comparison of FOSD approaches regarding program comprehension—a feasibility study. Master’s thesis, University of Magdeburg
Zurück zum Zitat Feigenspan J et al (2009) How to compare program comprehension in FOSD empirically - an experience report. In: Proc. int’l workshop on feature-oriented software development. ACM Press, pp 55–62 Feigenspan J et al (2009) How to compare program comprehension in FOSD empirically - an experience report. In: Proc. int’l workshop on feature-oriented software development. ACM Press, pp 55–62
Zurück zum Zitat Feigenspan J et al (2010) Visual support for understanding product lines. In: Proc. int’l conf. program comprehension (ICPC). IEEE CS, Demo Paper, pp 34–35 Feigenspan J et al (2010) Visual support for understanding product lines. In: Proc. int’l conf. program comprehension (ICPC). IEEE CS, Demo Paper, pp 34–35
Zurück zum Zitat Feigenspan J et al (2011a) FeatureCommander: colorful #ifdef world. In: Software product line conference (SPLC), paper 3. ACM Press, pp 1–2 Feigenspan J et al (2011a) FeatureCommander: colorful #ifdef world. In: Software product line conference (SPLC), paper 3. ACM Press, pp 1–2
Zurück zum Zitat Feigenspan J et al (2011b) Using background colors to support program comprehension in software product lines. In: Proc. int’l conf. evaluation and assessment in software engineering (EASE). Institution of Engineering and Technology, pp 66–75 Feigenspan J et al (2011b) Using background colors to support program comprehension in software product lines. In: Proc. int’l conf. evaluation and assessment in software engineering (EASE). Institution of Engineering and Technology, pp 66–75
Zurück zum Zitat Figueiredo E et al (2008) Evolving software product lines with aspects: an empirical study on design stability. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 261–270 Figueiredo E et al (2008) Evolving software product lines with aspects: an empirical study on design stability. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 261–270
Zurück zum Zitat Fisher D, Tan K (1989) Visual displays: the highlighting paradox. Human Factors 31(1):17–30 Fisher D, Tan K (1989) Visual displays: the highlighting paradox. Human Factors 31(1):17–30
Zurück zum Zitat Garrido A, Johnson RE (2005) Analyzing multiple configurations of a C program. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 379–388 Garrido A, Johnson RE (2005) Analyzing multiple configurations of a C program. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 379–388
Zurück zum Zitat Giventer L (2008) Statistical analysis for public administration, 2nd edn. Jones and Bartlett Publishing Giventer L (2008) Statistical analysis for public administration, 2nd edn. Jones and Bartlett Publishing
Zurück zum Zitat Goldstein B (2002) Sensation and perception, 5th edn. Cengage Learning Services Goldstein B (2002) Sensation and perception, 5th edn. Cengage Learning Services
Zurück zum Zitat Hanenberg S (2010) An experiment about static and dynamic type sytems. In: Proc. int’l conf. object-oriented programming, systems, languages and applications (OOPSLA). ACM Press, pp 22–35 Hanenberg S (2010) An experiment about static and dynamic type sytems. In: Proc. int’l conf. object-oriented programming, systems, languages and applications (OOPSLA). ACM Press, pp 22–35
Zurück zum Zitat Harrison W, Ossher H (1993) Subject-oriented programming: a critique of pure objects. In: Proc. int’l conf. object-oriented programming, systems, languages and applications (OOPSLA). IEEE CS, pp 411–428 Harrison W, Ossher H (1993) Subject-oriented programming: a critique of pure objects. In: Proc. int’l conf. object-oriented programming, systems, languages and applications (OOPSLA). IEEE CS, pp 411–428
Zurück zum Zitat Heidenreich F et al (2008) FeatureMapper: mapping features to models. In: Comp. int’l conf. software engineering (ICSE). ACM Press, Demo Paper, pp 943–944 Heidenreich F et al (2008) FeatureMapper: mapping features to models. In: Comp. int’l conf. software engineering (ICSE). ACM Press, Demo Paper, pp 943–944
Zurück zum Zitat Hofer W et al (2010) Toolchain-independent variant management with the Leviathan filesystem. In: Proc. int’l workshop on feature-oriented software development (FOSD). ACM Press, pp 18–24 Hofer W et al (2010) Toolchain-independent variant management with the Leviathan filesystem. In: Proc. int’l workshop on feature-oriented software development (FOSD). ACM Press, pp 18–24
Zurück zum Zitat Hu Y et al (2000) C/C++ conditional compilation analysis using symbolic execution. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 196–206 Hu Y et al (2000) C/C++ conditional compilation analysis using symbolic execution. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 196–206
Zurück zum Zitat Kästner C (2010) Virtual separation of concerns: preprocessors 2.0. PhD thesis, University of Magdeburg Kästner C (2010) Virtual separation of concerns: preprocessors 2.0. PhD thesis, University of Magdeburg
Zurück zum Zitat Kästner C et al (2008) Granularity in software product lines. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 311–320 Kästner C et al (2008) Granularity in software product lines. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 311–320
Zurück zum Zitat Kästner C et al (2009a) A model of refactoring physically and virtually separated features. In: Proc. int’l conf. generative programming and component engineering (GPCE). ACM Press, pp 157–166 Kästner C et al (2009a) A model of refactoring physically and virtually separated features. In: Proc. int’l conf. generative programming and component engineering (GPCE). ACM Press, pp 157–166
Zurück zum Zitat Kästner C et al (2009b) FeatureIDE: tool framework for feature-oriented software development. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, Demo Paper, pp 611–614 Kästner C et al (2009b) FeatureIDE: tool framework for feature-oriented software development. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, Demo Paper, pp 611–614
Zurück zum Zitat Kiczales G et al (1997) Aspect-oriented programming. In: Proc. Europ. conf. object-oriented programming (ECOOP). Springer, pp 220–242 Kiczales G et al (1997) Aspect-oriented programming. In: Proc. Europ. conf. object-oriented programming (ECOOP). Springer, pp 220–242
Zurück zum Zitat Kitchenham B et al (2008) Evaluating guidelines for reporting empirical software engineering studies. Empir Software Eng 13(1):97–121CrossRef Kitchenham B et al (2008) Evaluating guidelines for reporting empirical software engineering studies. Empir Software Eng 13(1):97–121CrossRef
Zurück zum Zitat Koenemann J, Robertson S (1991) Expert problem solving strategies for program comprehension. In: Proc. conf. human factors in computing systems (CHI). ACM Press, pp 125–130 Koenemann J, Robertson S (1991) Expert problem solving strategies for program comprehension. In: Proc. conf. human factors in computing systems (CHI). ACM Press, pp 125–130
Zurück zum Zitat Krone M, Snelting G (1994) On the inference of configuration structures from source code. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 49–57 Krone M, Snelting G (1994) On the inference of configuration structures from source code. In: Proc. int’l conf. software engineering (ICSE). IEEE CS, pp 49–57
Zurück zum Zitat Kullbach B, Riediger V (2001) Folding: an approach to enable program understanding of preprocessed languages. In: Proc. working conf. reverse engineering (WCRE). IEEE CS, pp 3–12 Kullbach B, Riediger V (2001) Folding: an approach to enable program understanding of preprocessed languages. In: Proc. working conf. reverse engineering (WCRE). IEEE CS, pp 3–12
Zurück zum Zitat Levkowitz H, Herman GT (1992) Color scales for image data. IEEE Comput Graph Appl 12(1):72–80CrossRef Levkowitz H, Herman GT (1992) Color scales for image data. IEEE Comput Graph Appl 12(1):72–80CrossRef
Zurück zum Zitat Liebig J et al (2010) An analysis of the variability in forty preprocessor-based software product lines. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 105–114 Liebig J et al (2010) An analysis of the variability in forty preprocessor-based software product lines. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 105–114
Zurück zum Zitat Liebig J et al (2011) Analyzing the discipline of preprocessor annotations in 30 million lines of C code. In: Proc. int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 191–202 Liebig J et al (2011) Analyzing the discipline of preprocessor annotations in 30 million lines of C code. In: Proc. int’l conf. aspect-oriented software development (AOSD). ACM Press, pp 191–202
Zurück zum Zitat Likert R (1932) A technique for the measurement of attitudes. Arch Psychol 22(140):1–55 Likert R (1932) A technique for the measurement of attitudes. Arch Psychol 22(140):1–55
Zurück zum Zitat Livadas P, Small D (1994) Understanding code containing preprocessor constructs. In: Proc. int’l workshop program comprehension (IWPC). IEEE CS, pp 89–97 Livadas P, Small D (1994) Understanding code containing preprocessor constructs. In: Proc. int’l workshop program comprehension (IWPC). IEEE CS, pp 89–97
Zurück zum Zitat Lohmann D et al (2006) A quantitative analysis of aspects in the eCos kernel. In: Proc. Europ. conf. computer systems (EuroSys). ACM Press, pp 191–204 Lohmann D et al (2006) A quantitative analysis of aspects in the eCos kernel. In: Proc. Europ. conf. computer systems (EuroSys). ACM Press, pp 191–204
Zurück zum Zitat McCloskey B, Brewer E (2005) ASTEC: a new approach to refactoring C. In: Proc. Europ. software engineering conf./foundations of software engineering (ESEC/FSE). ACM Press, pp 21–30 McCloskey B, Brewer E (2005) ASTEC: a new approach to refactoring C. In: Proc. Europ. software engineering conf./foundations of software engineering (ESEC/FSE). ACM Press, pp 21–30
Zurück zum Zitat Miller G (1956) The magical number seven, plus or minus two: some limits on our capacity for processing information. Psychol Rev 63(2):81–97CrossRef Miller G (1956) The magical number seven, plus or minus two: some limits on our capacity for processing information. Psychol Rev 63(2):81–97CrossRef
Zurück zum Zitat Mook D (1996) Motivation: the organization of action, 2nd edn. W.W. Norton & Co Mook D (1996) Motivation: the organization of action, 2nd edn. W.W. Norton & Co
Zurück zum Zitat Muthig D, Patzke T (2003) Generic implementation of product line components. In: Int’l conf. NetObjectDays. Springer, pp 313–329 Muthig D, Patzke T (2003) Generic implementation of product line components. In: Int’l conf. NetObjectDays. Springer, pp 313–329
Zurück zum Zitat Oberg B, Notkin D (1992) Error reporting with graduated color. IEEE Softw 9(6):33–38CrossRef Oberg B, Notkin D (1992) Error reporting with graduated color. IEEE Softw 9(6):33–38CrossRef
Zurück zum Zitat Otero M, Dolado J (2004) Evaluation of the comprehension of the dynamic modeling in UML. J Inf Softw Technol 46(1):35–53CrossRef Otero M, Dolado J (2004) Evaluation of the comprehension of the dynamic modeling in UML. J Inf Softw Technol 46(1):35–53CrossRef
Zurück zum Zitat Overbey JL, Johnson RE (2009) Software language engineering. In: Generating rewritable abstract syntax trees, pp 114–133. Overbey JL, Johnson RE (2009) Software language engineering. In: Generating rewritable abstract syntax trees, pp 114–133.
Zurück zum Zitat Pearse T, Oman P (1997) Experiences developing and maintaining software in a multi-platform environment. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 270–277 Pearse T, Oman P (1997) Experiences developing and maintaining software in a multi-platform environment. In: Proc. int’l conf. software maintenance (ICSM). IEEE CS, pp 270–277
Zurück zum Zitat Pennington N (1987) Stimulus structures and mental representations in expert comprehension of computer programs. Cogn Psychol 19(3):295–341CrossRef Pennington N (1987) Stimulus structures and mental representations in expert comprehension of computer programs. Cogn Psychol 19(3):295–341CrossRef
Zurück zum Zitat Pohl K et al (2005) Software product line engineering: foundations, principles, and techniques. Springer Pohl K et al (2005) Software product line engineering: foundations, principles, and techniques. Springer
Zurück zum Zitat Prechelt L et al (2002) Two controlled experiments assessing the usefulness of design pattern documentation in program maintenance. IEEE Trans Softw Eng 28(6):595–606CrossRef Prechelt L et al (2002) Two controlled experiments assessing the usefulness of design pattern documentation in program maintenance. IEEE Trans Softw Eng 28(6):595–606CrossRef
Zurück zum Zitat Prehofer C (1997) Feature-oriented programming: a fresh look at objects. In: Europ. conf. on objectoriented programming (ECOOP). Springer, pp 419–443 Prehofer C (1997) Feature-oriented programming: a fresh look at objects. In: Europ. conf. on objectoriented programming (ECOOP). Springer, pp 419–443
Zurück zum Zitat Rambally G (1986) The influence of color on program readability and comprehensibility. In: Proc. technical symposium on computer science education (SIGCSE). ACM Press, pp 173–181 Rambally G (1986) The influence of color on program readability and comprehensibility. In: Proc. technical symposium on computer science education (SIGCSE). ACM Press, pp 173–181
Zurück zum Zitat Ribeiro M et al (2010) Emergent feature modularization. In: Proceedings of the ACM international conference companion on object oriented programming systems languages and applications companion (SPLASH). ACM Press, pp 11–18 Ribeiro M et al (2010) Emergent feature modularization. In: Proceedings of the ACM international conference companion on object oriented programming systems languages and applications companion (SPLASH). ACM Press, pp 11–18
Zurück zum Zitat Rice J (1991) Display color coding: 10 rules of thumb. IEEE Softw 8(1):86–88 Rice J (1991) Display color coding: 10 rules of thumb. IEEE Softw 8(1):86–88
Zurück zum Zitat Riggs R et al (2003) Programming wireless devices with the java 2 platform, micro edition. Sun Microsystems, Inc Riggs R et al (2003) Programming wireless devices with the java 2 platform, micro edition. Sun Microsystems, Inc
Zurück zum Zitat Shaft T, Vessey I (1995) The relevance of application domain knowledge: the case of computer program comprehension. Inf Syst Res 6(3):286–299CrossRef Shaft T, Vessey I (1995) The relevance of application domain knowledge: the case of computer program comprehension. Inf Syst Res 6(3):286–299CrossRef
Zurück zum Zitat Shneiderman B, Mayer R (1979) Syntactic/semantic interactions in programmer behavior: a model and experimental results. Int J Parallel Prog 8(3):219–238MATH Shneiderman B, Mayer R (1979) Syntactic/semantic interactions in programmer behavior: a model and experimental results. Int J Parallel Prog 8(3):219–238MATH
Zurück zum Zitat Singh N et al (2006) CViMe: viewing conditionally compiled C/C++ sources through java. In: Companion to the 21st ACM SIGPLAN symposium on object-oriented programming systems, languages, and applications. ACM Press, pp 730–731 Singh N et al (2006) CViMe: viewing conditionally compiled C/C++ sources through java. In: Companion to the 21st ACM SIGPLAN symposium on object-oriented programming systems, languages, and applications. ACM Press, pp 730–731
Zurück zum Zitat Singh N et al (2007) C-CLR: a tool for navigating highly configurable system software. In: Proc. workshop aspects, components, and patterns for infrastr. software. ACM Press Singh N et al (2007) C-CLR: a tool for navigating highly configurable system software. In: Proc. workshop aspects, components, and patterns for infrastr. software. ACM Press
Zurück zum Zitat Smaragdakis Y, Batory D (1998) Implementing layered designs with mixin layers. In: Proc. Europ. conf. object-oriented programming (ECOOP). Springer, pp 550–570 Smaragdakis Y, Batory D (1998) Implementing layered designs with mixin layers. In: Proc. Europ. conf. object-oriented programming (ECOOP). Springer, pp 550–570
Zurück zum Zitat Soloway E, Ehrlich K (1984) Empirical studies of programming knowledge. IEEE Trans Softw Eng 10(5):595–609CrossRef Soloway E, Ehrlich K (1984) Empirical studies of programming knowledge. IEEE Trans Softw Eng 10(5):595–609CrossRef
Zurück zum Zitat Someren M et al (1994) The think aloud method: a practical guide to modelling cognitive processes. Academic Press Someren M et al (1994) The think aloud method: a practical guide to modelling cognitive processes. Academic Press
Zurück zum Zitat Spencer H, Collyer G (1992) #ifdef considered harmful or portability experience with C news. In: Proc. USENIX conf. USENIX Association, pp 185–198 Spencer H, Collyer G (1992) #ifdef considered harmful or portability experience with C news. In: Proc. USENIX conf. USENIX Association, pp 185–198
Zurück zum Zitat Spinellis D (2003) Global analysis and transformations in preprocessed languages. IEEE Trans Softw Eng 29(11):1019–1030CrossRef Spinellis D (2003) Global analysis and transformations in preprocessed languages. IEEE Trans Softw Eng 29(11):1019–1030CrossRef
Zurück zum Zitat Standish T (1984) An essay on software reuse. IEEE Trans Softw Eng SE–10(5):494–497CrossRef Standish T (1984) An essay on software reuse. IEEE Trans Softw Eng SE–10(5):494–497CrossRef
Zurück zum Zitat Stengel M et al (2011) View infinity: a zoomable interface for feature-oriented software development. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 1031–1033 Stengel M et al (2011) View infinity: a zoomable interface for feature-oriented software development. In: Proc. int’l conf. software engineering (ICSE). ACM Press, pp 1031–1033
Zurück zum Zitat Tamborello F, Byrne M (2007) Adaptive but non-optimal visual search with highlighted displays. Cogn Syst Res 8(3):182–191CrossRef Tamborello F, Byrne M (2007) Adaptive but non-optimal visual search with highlighted displays. Cogn Syst Res 8(3):182–191CrossRef
Zurück zum Zitat Tartler R et al (2011) Feature consistency in compile-time configurable system software. In: Proc. Europ. conf. computer systems conference (EuroSys). ACM Press, pp 47–60 Tartler R et al (2011) Feature consistency in compile-time configurable system software. In: Proc. Europ. conf. computer systems conference (EuroSys). ACM Press, pp 47–60
Zurück zum Zitat Tiarks R (2011) What programmers really do: an observational study’. In: Proc. workshop software reengineering (WSR), pp 36–37 Tiarks R (2011) What programmers really do: an observational study’. In: Proc. workshop software reengineering (WSR), pp 36–37
Zurück zum Zitat Vidacs L et al (2004) Columbus schema for C/C++ preprocessing. In: Proc. Europ. conf. software maintenance and reengineering (CSMR). IEEE CS, pp 75–84 Vidacs L et al (2004) Columbus schema for C/C++ preprocessing. In: Proc. Europ. conf. software maintenance and reengineering (CSMR). IEEE CS, pp 75–84
Zurück zum Zitat von Mayrhauser A, Vans A (1993) From program comprehension to tool requirements for an industrial environment. In: Proc. int’l workshop program comprehension (IWPC). IEEE CS, pp 78–86 von Mayrhauser A, Vans A (1993) From program comprehension to tool requirements for an industrial environment. In: Proc. int’l workshop program comprehension (IWPC). IEEE CS, pp 78–86
Zurück zum Zitat von Mayrhauser A et al (1997) Program understanding behaviour during enhancement of large-scale software. J Softw Maint: Res Pract 9(5):299–327CrossRef von Mayrhauser A et al (1997) Program understanding behaviour during enhancement of large-scale software. J Softw Maint: Res Pract 9(5):299–327CrossRef
Zurück zum Zitat von Mayrhauser A, Vans M (1995) Program comprehension during software maintenance and evolution. Computer 28(8):44–55CrossRef von Mayrhauser A, Vans M (1995) Program comprehension during software maintenance and evolution. Computer 28(8):44–55CrossRef
Zurück zum Zitat Ware C (2000) Information visualization: perception for design. Morgan Kaufmann Ware C (2000) Information visualization: perception for design. Morgan Kaufmann
Zurück zum Zitat Wijffelaars M et al (2008) Generating color palettes using intuitive parameters. Comput Graph Forum 27(3):743–750CrossRef Wijffelaars M et al (2008) Generating color palettes using intuitive parameters. Comput Graph Forum 27(3):743–750CrossRef
Zurück zum Zitat Yang W (1994) How to merge program texts. J Syst Softw 27(2):129–135CrossRef Yang W (1994) How to merge program texts. J Syst Softw 27(2):129–135CrossRef
Zurück zum Zitat Yellott J (1971) Correction for fast guessing and the speed accuracy trade-off in choice reaction time. J Math Psych 8(2):159–199MathSciNetMATHCrossRef Yellott J (1971) Correction for fast guessing and the speed accuracy trade-off in choice reaction time. J Math Psych 8(2):159–199MathSciNetMATHCrossRef
Metadaten
Titel
Do background colors improve program comprehension in the #ifdef hell?
verfasst von
Janet Feigenspan
Christian Kästner
Sven Apel
Jörg Liebig
Michael Schulze
Raimund Dachselt
Maria Papendieck
Thomas Leich
Gunter Saake
Publikationsdatum
01.08.2013
Verlag
Springer US
Erschienen in
Empirical Software Engineering / Ausgabe 4/2013
Print ISSN: 1382-3256
Elektronische ISSN: 1573-7616
DOI
https://doi.org/10.1007/s10664-012-9208-x

Weitere Artikel der Ausgabe 4/2013

Empirical Software Engineering 4/2013 Zur Ausgabe