The influence of color on program readability and comprehensibility
SIGCSE '86 Proceedings of the seventeenth SIGCSE technical symposium on Computer science education
Visual Displays: the highlighting Paradox
Human Factors
Expert problem solving strategies for program comprehension
CHI '91 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Software modeling and measurement: the Goal/Question/Metric paradigm
Software modeling and measurement: the Goal/Question/Metric paradigm
Seesoft-A Tool for Visualizing Line Oriented Software Statistics
IEEE Transactions on Software Engineering - Special issue on software measurement principles, techniques, and environments
Subject-oriented programming: a critique of pure objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Journal of Systems and Software
On the inference of configuration structures from source code
ICSE '94 Proceedings of the 16th international conference on Software engineering
Program understanding behaviour during enhancement of large-scale software
Journal of Software Maintenance: Research and Practice
Information visualization: perception for design
Information visualization: perception for design
Software product lines: practices and patterns
Software product lines: practices and patterns
Software Engineering Economics
Software Engineering Economics
IEEE Transactions on Software Engineering
IEEE Computer Graphics and Applications
Display Color Coding: 10 Rules of Thumb
IEEE Software
Error Reporting with Graduated Color
IEEE Software
An Empirical Analysis of C Preprocessor Use
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Visual separation of concerns through multidimensional program storage
Proceedings of the 2nd international conference on Aspect-oriented software development
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Generic Implementation of Product Line Components
NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World
Using a behavioral theory of program comprehension in software engineering
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Handling Preprocessor-Conditioned Declarations
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
Preprocessor Conditional Removal by Simple Partial Evaluation
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Folding: An Approach to Enable Program Understanding of Preprocessed Languages
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
WPC '97 Proceedings of the 5th International Workshop on Program Comprehension (WPC '97)
The effect of inheritance on the maintainability of object-oriented software: an empirical study
ICSM '95 Proceedings of the International Conference on Software Maintenance
Experiences Developing and Maintaining Software in a Multi-Platform Environment
ICSM '97 Proceedings of the International Conference on Software Maintenance
C/C++ Conditional Compilation Analysis Using Symbolic Execution
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Programming Wireless Devices with the Java 2 Platform, Micro Edition
Programming Wireless Devices with the Java 2 Platform, Micro Edition
Factors affecting computer program comprehension.
Factors affecting computer program comprehension.
Global Analysis and Transformations in Preprocessed Languages
IEEE Transactions on Software Engineering
Columbus Schema for C/C++ Preprocessing
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
ASTEC: a new approach to refactoring C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Analyzing Multiple Configurations of a C Program
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Software Product Line Engineering: Foundations, Principles and Techniques
Software Product Line Engineering: Foundations, Principles and Techniques
CViMe: viewing conditionally compiled C/C++ sources through Java
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software
Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software
A quantitative analysis of aspects in the eCos kernel
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
C-CLR: a tool for navigating highly configurable system software
Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software
Spotlight: A Prototype Tool for Software Plans
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Evaluating guidelines for reporting empirical software engineering studies
Empirical Software Engineering
Evolving software product lines with aspects: an empirical study on design stability
Proceedings of the 30th international conference on Software engineering
Granularity in software product lines
Proceedings of the 30th international conference on Software engineering
FeatureMapper: mapping features to models
Companion of the 30th international conference on Software engineering
IEEE Transactions on Software Engineering
Aspect mining in the presence of the C preprocessor
Proceedings of the 2008 AOSD workshop on Linking aspect technology and evolution
Can we refactor conditional compilation into aspects?
Proceedings of the 8th ACM international conference on Aspect-oriented software development
FeatureIDE: A tool framework for feature-oriented software development
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A model of refactoring physically and virtually separated features
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
How to compare program comprehension in FOSD empirically: an experience report
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Using text animated transitions to support navigation in document histories
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
An analysis of the variability in forty preprocessor-based software product lines
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Visual Support for Understanding Product Lines
ICPC '10 Proceedings of the 2010 IEEE 18th International Conference on Program Comprehension
Toolchain-independent variant management with the Leviathan filesystem
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Emergent feature modularization
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Analyzing the discipline of preprocessor annotations in 30 million lines of C code
Proceedings of the tenth international conference on Aspect-oriented software development
Extracting Software Product Lines: A Case Study Using Conditional Compilation
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Proceedings of the sixth conference on Computer systems
View infinity: a zoomable interface for feature-oriented software development
Proceedings of the 33rd International Conference on Software Engineering
FeatureCommander: colorful #ifdef world
Proceedings of the 15th International Software Product Line Conference, Volume 2
Mapping features to models: a template approach based on superimposed variants
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Adaptive but non-optimal visual search behavior with highlighted displays
Cognitive Systems Research
IEEE Transactions on Software Engineering
Empirical Studies of Programming Knowledge
IEEE Transactions on Software Engineering
Generating color palettes using intuitive parameters
EuroVis'08 Proceedings of the 10th Joint Eurographics / IEEE - VGTC conference on Visualization
Does the discipline of preprocessor annotations matter?: a controlled experiment
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
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.