Results 1 -
7 of
7
Virtual Separation of Concerns -- A Second Chance for Preprocessors
, 2009
"... Conditional compilation with preprocessors like cpp is a simple but effective means to implement variability. By annotating code fragments with #ifdef and #endif directives, different program variants with or without these fragments can be created, which can be used (among others) to implement softw ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
Conditional compilation with preprocessors like cpp is a simple but effective means to implement variability. By annotating code fragments with #ifdef and #endif directives, different program variants with or without these fragments can be created, which can be used (among others) to implement software product lines. Although, preprocessors are frequently used in practice, they are often criticized for their negative effect on code quality and maintainability. In contrast to modularized implementations, for example using components or aspects, preprocessors neglect separation of concerns, are prone to introduce subtle errors, can entirely obfuscate the source code, and limit reuse. Our aim is to rehabilitate the preprocessor by showing how simple tool support can address these problems and emulate some benefits of modularized implementations. At the same time we emphasize unique benefits of preprocessors, like simplicity and language independence. Although we do not have a definitive answer on how to implement variability, we want highlight opportunities to improve preprocessors and encourage research toward novel preprocessor-based approaches.
Feature (De)composition in Functional Programming
- Department of Informatics and Mathematics, University of Passau
, 2009
"... Abstract. The separation of concerns is a fundamental principle in software engineering. Crosscutting concerns are concerns that do not align with hierarchical and block decomposition supported by mainstream programming languages. In the past, crosscutting concerns have been studied mainly in the co ..."
Abstract
-
Cited by 9 (7 self)
- Add to MetaCart
Abstract. The separation of concerns is a fundamental principle in software engineering. Crosscutting concerns are concerns that do not align with hierarchical and block decomposition supported by mainstream programming languages. In the past, crosscutting concerns have been studied mainly in the context of object orientation. Feature orientation is a novel programming paradigm that supports the (de)composition of crosscutting concerns in a system with a hierarchical block structure. In two case studies we explore the problem of crosscutting concerns in functional programming and propose two solutions based on feature orientation. 1
Integrating Compositional and Annotative Approaches for Product Line Engineering
"... Software product lines can be implemented with many different approaches. However, there are common underlying mechanisms which allow a classification into compositional and annotative approaches. While research focuses mainly on composition approaches like aspect- or feature-oriented programming be ..."
Abstract
-
Cited by 7 (6 self)
- Add to MetaCart
Software product lines can be implemented with many different approaches. However, there are common underlying mechanisms which allow a classification into compositional and annotative approaches. While research focuses mainly on composition approaches like aspect- or feature-oriented programming because those support feature traceability and modularity, in practice annotative approaches like preprocessors are common as they are easier to adopt. In this paper, we compare both groups of approaches and find complementary strengths. We propose an integration of compositional and annotative approaches to combine advantages, increase flexibility for the developer, and ease adoption. 1.
How to Compare Program Comprehension in FOSD Empirically – An Experience Report
"... There are many different implementation approaches to realize the vision of feature oriented software development, ranging from simple preprocessors, over feature-oriented programming, to sophisticated aspect-oriented mechanisms. Their impact on readability and maintainability (or program comprehens ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
There are many different implementation approaches to realize the vision of feature oriented software development, ranging from simple preprocessors, over feature-oriented programming, to sophisticated aspect-oriented mechanisms. Their impact on readability and maintainability (or program comprehension in general) has caused a debate among researchers, but sound empirical results are missing. We report experience from our endeavor to conduct experiments to measure the influence of different implementation mechanisms on program comprehension. We describe how to design such experiments and report from possibilities and pitfalls we encountered. Finally, we present some early results of our first experiment on comparing CPP with CIDE.
Visual Support for Understanding Product Lines
- In Proc. Int’l Conf. Program Comprehension (ICPC
, 2010
"... Abstract—The C preprocessor is often used in practice to implement variability in software product lines. Using #ifdef statements provokes problems such as obfuscated source code, yet they will still be used in practice at least in the medium-term future. With CIDE, we demonstrate a tool to improve ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract—The C preprocessor is often used in practice to implement variability in software product lines. Using #ifdef statements provokes problems such as obfuscated source code, yet they will still be used in practice at least in the medium-term future. With CIDE, we demonstrate a tool to improve understanding and maintaining code that contains #ifdef statements by visualizing them with colors and providing different views on the code. I.
Issues in Mapping Change-Based Product Line Architectures to Configuration Management Systems
"... Most software product lines are first specified as an architecture, a high-level description of what the overall family system structure is to be like and from which individual product architectures can be generated. This structure, however, must be mapped onto implementation code stored in a Softwa ..."
Abstract
- Add to MetaCart
Most software product lines are first specified as an architecture, a high-level description of what the overall family system structure is to be like and from which individual product architectures can be generated. This structure, however, must be mapped onto implementation code stored in a Software Configuration Management system for it to be useful beyond the definitional phase of product line development. Various solutions have been developed to date, but the recent emergence of changebased approaches to product line architecture description challenges these existing solutions. In this paper, we characterize those challenges, and present an alternative solution that relies on a mapping to a change-based Software Configuration Management system. We motivate this choice, discuss why it is more appropriate, and carefully lay out its strengths and weaknesses relative to the existing state of the art. 1.
Feature-Oriented Software Development A Short Tutorial on Feature-Oriented Programming, Virtual Separation of Concerns, and Variability-Aware Analysis ⋆
"... Abstract. Feature-oriented software development is a paradigm for the construction, customization, and synthesis of large-scale and variable software systems, focusing on structure, reuse and variation. In this tutorial, we provide a gentle introduction to software product lines, feature oriented pr ..."
Abstract
- Add to MetaCart
Abstract. Feature-oriented software development is a paradigm for the construction, customization, and synthesis of large-scale and variable software systems, focusing on structure, reuse and variation. In this tutorial, we provide a gentle introduction to software product lines, feature oriented programming, virtual separation of concerns, and variabilityaware analysis. We provide an overview, show connections between the different lines of research, and highlight possible future research directions. 1

