Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3167132.3167351acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Physical separation of features: a survey with CPP developers

Published: 09 April 2018 Publication History

Abstract

Several implementation techniques for software product lines have emerged over time. A common distinction of these techniques is whether features are annotated in the code base (virtually separated) or composed from modules (physically separated). While each approach promises different pros and cons, mainly annotations and especially the C PreProcessor (CPP) are established in practice. Thus, the question arises, which barriers prevent the adoption of composition-based approaches. In this paper, we report an empirical study among C and C++ developers in which we investigate this issue. Therefore, we ask our participants to describe how they use the CPP and how they assess the idea of moving annotated code into modules. More precisely, we use small examples based on our Feature Compositional PreProcessor (FeatureCoPP) that enables this separation while keeping annotations---avoiding divergences from the preprocessor concept. Overall, we identify different characteristics that indicate when physical separation can be useful. While most responses are skeptical towards the approach, they also emphasize its usability for source code analysis and for implementing specific use cases.

References

[1]
Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines. Springer.
[2]
Benjamin Behringer. 2017. Projectional Editing of Software Product Lines - The PEOPL Approach. Ph.D. Dissertation. University of Luxembourg.
[3]
Fabian Benduhn, Reimar Schröter, Andy Kenner, Christopher Kruczek, Thomas Leich, and Gunter Saake. 2016. Migration from Annotation-Based to Composition-Based Product Lines: Towards a Tool-Driven Process. In International Conference on Advances and Trends in Software Engineering. IARIA, 102--109.
[4]
Alexandre Bergel, Stéphane Ducasse, and Oscar Nierstrasz. 2005. Classbox/J: Controlling the Scope of Change in Java. SIGPLAN Notices 40, 10 (2005), 177--189.
[5]
Barry W. Boehm. 1981. Software Engineering Economics. Prentice-Hall.
[6]
Paul C. Clements and Linda M. Northrop. 2001. Software Product Lines: Practices and Patterns. Addison-Wesley.
[7]
Michael D. Ernst, Greg J. Badros, and David Notkin. 2002. An Empirical Analysis of C Preprocessor Use. IEEE Transactions on Software Engineering 28, 12 (2002), 1146--1170.
[8]
Janet Feigenspan, Christian Kästner, Sven Apel, and Thomas Leich. 2009. How to Compare Program Comprehension in FOSD Empirically - An Experience Report. In International Workshop on Feature-Oriented Software Development. ACM, 55--62.
[9]
Critina Gacek and Michalis Anastasopoules. 2001. Implementing Product Line Variabilities. ACM SIGSOFT Software Engineering Notes 26, 3 (2001), 109--117.
[10]
Claus Hunsen, Bo Zhang, Janet Siegmund, Christian Kästner, Olaf Leßenich, Martin Becker, and Sven Apel. 2016. Preprocessor-Based Variability in Open-Source and Industrial Software Systems: An Empirical Study. Empirical Software Engineering 21, 2 (2016), 449--482.
[11]
Christian Kästner and Sven Apel. 2008. Integrating Compositional and Annotative Approaches for Product Line Engineering. In Workshop on Modularization, Composition and Generative Techniques for Product Line Engineering. University of Passau, 35--40.
[12]
Brian W. Kernighan and Dennis M. Ritchie. 1988. The C Programming Language. Prentice Hall.
[13]
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. 1997. Aspect-Oriented Programming. In European Conference on Object-Oriented Programming. Springer, 220--242.
[14]
Jacob Krüger. 2017. Lost in Source Code: Physically Separating Features in Legacy Systems. In International Conference on Software Engineering. IEEE, 461--462.
[15]
Jacob Krüger, Marcus Pinnecke, Andy Kenner, Christopher Kruczek, Fabian Benduhn, Thomas Leich, and Gunter Saake. 2017. Composing Annotations Without Regret? Practical Experiences Using FeatureC. Software: Practice and Experience (2017).
[16]
Jacob Krüger, Ivonne Schröter, Andy Kenner, Christopher Kruczek, and Thomas Leich. 2016. FeatureCoPP: Compositional Annotations. In International Workshop on Feature-Oriented Software Development. ACM, 74--84.
[17]
Duc Le, Eric Walkingshaw, and Martin Erwig. 2011. #ifdef Confirmed Harmful: Promoting Understandable Software Variation. In Symposium on Visual Languages and Human-Centric Computing. IEEE, 143--150.
[18]
Jörg Liebig, Sven Apel, Christian Lengauer, Christian Kästner, and Michael Schulze. 2010. An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines. In icse. ACM, 105--114.
[19]
Jörg Liebig, Christian Kästner, and Sven Apel. 2011. Analyzing the Discipline of Preprocessor Annotations in 30 Million Lines of C Code. In International Conference on Aspect-Oriented Software Development. ACM, 191--202.
[20]
Daniel Lohmann, Fabian Scheler, Reinhard Tartler, Olaf Spinczyk, and Wolfgang Schröder-Preikschat. 2006. A Quantitative Analysis of Aspects in the eCos Kernel. In SIGOPS/EuroSys European Conference on Computer Systems. ACM, 191--204.
[21]
Flávio Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, and Rohit Gheyi. 2015. The Love/Hate Relationship with the C Preprocessor: An Interview Study. In European Conference on Object-Oriented Programming. Schloss Dagstuhl, 495--518.
[22]
Renaud Pawlak. 2005. Spoon: Annotation-Driven Program Transformation - the AOP Case. In Workshop on Aspect Oriented Middleware Development. ACM, 1--6.
[23]
Dewayne E Perry, Adam A Porter, and Lawrence G Votta. 2000. Empirical Studies of Software Engineering: A Roadmap. In Conference on The Future of Software Engineering. ACM, 345--355.
[24]
Klaus Pohl, Günter Böckle, and Frank van der Linden. 2005. Software Product Line Engineering: Foundations, Principles, and Techniques. Springer.
[25]
Christian Prehofer. 1997. Feature-Oriented Programming: A Fresh Look at Objects. In European Conference on Object-Oriented Programming. Springer, 419--443.
[26]
David Sharon. 1996. Meeting the Challenge of Software Maintenance. IEEE Software 13, 1 (1996), 122--125.
[27]
Janet Siegmund. 2016. Program Comprehension: Past, Present, and Future. In International Conference on Software Analysis, Evolution and Reengineering. IEEE, 13--20.
[28]
Janet Siegmund, Christian Kästner, Jörg Liebig, and Sven Apel. 2012. Comparing Program Comprehension of Physically and Virtually Separated Concerns. In International Workshop on Feature-Oriented Software Development. ACM, 17--24.
[29]
Henry Spencer and Collyer Geoff. 1992. #ifdef Considered Harmful, or Portability Experience With C News. In USENIX Conference. USENIX Association, 185--198.
[30]
Thomas A. Standish. 1984. An Essay on Software Reuse. IEEE Transactions on Software Engineering 5 (1984), 494--497.
[31]
Rebecca Tiarks. 2011. What Maintenance Programmers Really Do: An Observational Study. In Workshop on Software Reengineering. 36--37.

Cited By

View all
  • (2023)Evolutionary Feature Dependencies: Analyzing Feature Co-Changes in C Systems2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00019(84-95)Online publication date: 2-Oct-2023
  • (2020)EXtracting product lines from vAriaNTs (EXPLANT)Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3377024.3377046(1-2)Online publication date: 5-Feb-2020
  • (2020)FeatureCoPPProceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3377024.3377039(1-9)Online publication date: 5-Feb-2020
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SAC '18: Proceedings of the 33rd Annual ACM Symposium on Applied Computing
April 2018
2327 pages
ISBN:9781450351911
DOI:10.1145/3167132
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 April 2018

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. empirical study
  2. product line
  3. separation of concerns

Qualifiers

  • Research-article

Funding Sources

  • German Research Foundation (DFG)

Conference

SAC 2018
Sponsor:
SAC 2018: Symposium on Applied Computing
April 9 - 13, 2018
Pau, France

Acceptance Rates

Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)1
Reflects downloads up to 28 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Evolutionary Feature Dependencies: Analyzing Feature Co-Changes in C Systems2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00019(84-95)Online publication date: 2-Oct-2023
  • (2020)EXtracting product lines from vAriaNTs (EXPLANT)Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3377024.3377046(1-2)Online publication date: 5-Feb-2020
  • (2020)FeatureCoPPProceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3377024.3377039(1-9)Online publication date: 5-Feb-2020
  • (2020)Towards projectional editing for model-based SPLsProceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3377024.3377030(1-10)Online publication date: 5-Feb-2020
  • (2020)#ifdef Directives and Program Comprehension: The Dilemma between Correctness and Preference2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00033(255-266)Online publication date: Sep-2020
  • (2019)Tackling knowledge needs during software evolutionProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3342505(1244-1246)Online publication date: 12-Aug-2019
  • (2019)Effects of explicit feature traceability on program comprehensionProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338968(338-349)Online publication date: 12-Aug-2019
  • (2019)Covert and Phantom Features in AnnotationsProceedings of the 23rd International Systems and Software Product Line Conference - Volume A10.1145/3336294.3336296(218-230)Online publication date: 9-Sep-2019
  • (2018)When to extract featuresProceedings of the 40th International Conference on Software Engineering: Companion Proceeedings10.1145/3183440.3190328(518-520)Online publication date: 27-May-2018

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media