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

skip to main content
10.1145/3336294.3336311acmotherconferencesArticle/Chapter ViewAbstractPublication PagessplcConference Proceedingsconference-collections
research-article

Identifying and Visualizing Variability in Object-Oriented Variability-Rich Systems

Published: 09 September 2019 Publication History

Abstract

In many variability-intensive systems, variability is implemented in code units provided by a host language, such as classes or functions, which do not align well with the domain features. Annotating or creating an orthogonal decomposition of code in terms of features implies extra effort, as well as massive and cumbersome refactoring activities. In this paper, we introduce an approach for identifying and visualizing the variability implementation places within the main decomposition structure of object-oriented code assets in a single variability-rich system. First, we propose to use symmetry, as a common property of some main implementation techniques, such as inheritance or overloading, to identify uniformly these places. We study symmetry in different constructs (e.g., classes), techniques (e.g., subtyping, overloading) and design patterns (e.g., strategy, factory), and we also show how we can use such symmetries to find variation points with variants. We then report on the implementation and application of a toolchain, symfinder, which automatically identifies and visualizes places with symmetry. The publicly available application to several large open-source systems shows that symfinder can help in characterizing code bases that are variability-rich or not, as well as in discerning zones of interest w.r.t. variability.

References

[1]
Christopher Alexander. 1993. A Foreshadowing of 21st Century Art: The Color and Geometry of Very Early Turkish Carpets (Center for Environmental Structure, Vol 7). New York: Oxford University Press.
[2]
Christopher Alexander. 2002. The nature of order: an essay on the art of building and the nature of the universe. Book 1, The phenomenon of life. Center for Environmental Structure.
[3]
Christopher Alexander. 2002. The process of creating life: Nature of order, Book 2: An essay on the art of building and the nature of the universe. Berkeley: Center for Environmental Structure (2002).
[4]
Christopher Alexander and Susan Carey. 1968. Subsymmetries. Perception & Psychophysics 4, 2 (1968), 73--77.
[5]
Berima Andam, Andreas Burger, Thorsten Berger, and Michel RV Chaudron. 2017. Florida: Feature location dashboard for extracting and visualizing feature traces. In Proceedings of the Eleventh International Workshop on Variability Modelling of Software-intensive Systems. ACM, 100--107.
[6]
Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines. Springer.
[7]
Sven Apel and Dirk Beyer. 2011. Feature cohesion in software product lines: an exploratory study. In Software Engineering (ICSE), 2011 33rd International Conference on. IEEE, 421--430.
[8]
Wesley KG Assunção, Roberto E Lopez-Herrejon, Lukas Linsbauer, Silvia R Vergilio, and Alexander Egyed. 2017. Reengineering legacy applications into software product lines: a systematic mapping. Empirical Software Engineering 22, 6 (2017), 2972--3016.
[9]
Rafael Capilla, Jan Bosch, and Kyo-Chul Kang. 2013. Systems and Software Variability Management. Springer.
[10]
J Coplien. 1998. Space: the final frontier. C++ Report 10, 3 (1998), 11--17.
[11]
James O Coplien. 1999. Multi-paradigm design for C++. Vol. 53. Addison-Wesley Reading, MA.
[12]
James O Coplien and Liping Zhao. 2000. Symmetry breaking in software patterns. In International Symposium on Generative and Component-Based Software Engineering. Springer, 37--54.
[13]
James O. Coplien and Liping Zhao. 2019. Toward a general formal foundation of design. Symmetry and broken symmetry. Technical Report. A VUB Lecture Series Publication. Working draft.
[14]
David Legland. 2019. JavaGeom - Geometry library for Java. https://github.com/dlegland/javaGeom/tree/master/src {Online}.
[15]
Stephan Diehl. 2007. Software visualization: visualizing the structure, behaviour, and evolution of software. Springer Science & Business Media.
[16]
Bogdan Dit, Meghan Revelle, Malcom Gethers, and Denys Poshyvanyk. 2013. Feature location in source code: a taxonomy and survey. Journal of software: Evolution and Process 25, 1 (2013), 53--95.
[17]
Slawomir Duszynski and Martin Becker. 2012. Recovering variability information from the source code of similar software products. In 2012 Third International Workshop on Product LinE Approaches in Software Engineering (PLEASE). IEEE, 37--40.
[18]
Sascha El-Sharkawy, Nozomi Yamagishi-Eichler, and Klaus Schmid. 2018. Metrics for analyzing variability and its implementation in software product lines: A systematic literature review. Information and Software Technology (2018).
[19]
Eric Freeman, Elisabeth Robson, Bert Bates, and Kathy Sierra. 2004. Head first design patterns. "O'Reilly Media, Inc.".
[20]
Claudia Fritsch, Andreas Lehn, and Thomas Strohm. 2002. Evaluating variability implementation mechanisms. In Proceedings of International Workshop on Product Line Engineering (PLEES). sn, 59--64.
[21]
Richard P Gabriel. 1996. Patterns of software. Vol. 62. Oxford University Press New York.
[22]
Critina Gacek and Michalis Anastasopoules. 2001. Implementing product line variabilities. In ACM SIGSOFT Software Engineering Notes, Vol. 26. ACM, 109--117.
[23]
Axel Halin, Alexandre Nuttinck, Mathieu Acher, Xavier Devroey, Gilles Perrouin, and Patrick Heymans. 2017. Yo variability! JHipster: a playground for web-apps analyses. In Proceedings of the Eleventh International Workshop on Variability Modelling of Software-intensive Systems. ACM, 44--51.
[24]
Kevlin Henney. 2003. The Good, the Bad, and the Koyaanisqatsi. In Proceedings of the Second Nordic Pattern Languages of Programs Conference, VikingPLoP, Vol. 2003.
[25]
Weyl Hermann. 1952. Symmetry. Princeton University Press.
[26]
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.
[27]
Ivar Jacobson, Martin Griss, and Patrik Jonsson. 1997. Software reuse: architecture, process and organization for business success. ACM Press/Addison-Wesley Publishing Co.
[28]
Kyo C Kang, Sholom G Cohen, James A Hess, William E Novak, and A Spencer Peterson. 1990. Feature-oriented domain analysis (FODA) feasibility study. Technical Report. Carnegie-Mellon Univ Pittsburgh Pa Software Engineering Inst.
[29]
Christian Kästner, Klaus Ostermann, and Sebastian Erdweg. 2012. A variability-aware module system. In ACM SIGPLAN Notices, Vol. 47. ACM, 773--792.
[30]
Christian Kästner, Salvador Trujillo, and Sven Apel. 2008. Visualizing Software Product Line Variabilities in Source Code. In SPLC (2). 303--312.
[31]
Maren Krone and Gregor Snelting. 1994. On the inference of configuration structures from source code. In Proceedings of 16th International Conference on Software Engineering. IEEE, 49--57.
[32]
CharlesW Krueger. 2001. Easing the transition to software mass customization. In International Workshop on Software Product-Family Engineering. Springer, 282--293.
[33]
Michele Lanza and Stéphane Ducasse. 2003. Polymetric views-a lightweight visual approach to reverse engineering. IEEE Transactions on Software Engineering 29, 9 (2003), 782--795.
[34]
Michele Lanza, Stéphane Ducasse, Harald Gall, and Martin Pinzger. 2005. Code-crawler: an information visualization tool for program comprehension. In Proceedings of the 27th international conference on Software engineering. ACM, 672--673.
[35]
Duc Le, Eric Walkingshaw, and Martin Erwig. 2011. # ifdef confirmed harmful: Promoting understandable software variation. In 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). IEEE, 143--150.
[36]
Duc Minh Le, Hyesun Lee, Kyo Chul Kang, and Lee Keun. 2013. Validating consistency between a feature model and its implementation. In International Conference on Software Reuse. Springer, 1--16.
[37]
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 Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 1. ACM, 105--114.
[38]
Roberto Erick Lopez-Herrejon, Sheny Illescas, and Alexander Egyed. 2018. A systematic mapping study of information visualization for software product line engineering. Journal of Software: Evolution and Process 30, 2 (2018), e1912.
[39]
Angela Lozano. 2011. An overview of techniques for detecting software variability concepts in source code. In International Conference on Conceptual Modeling. Springer, 141--150.
[40]
Jabier Martinez, Nicolas Ordoñez, Xhevahire Tërnava, Tewfik Ziadi, Jairo Aponte, Eduardo Figueiredo, and Marco Tulio Valente. 2018. Feature location benchmark with argo UML SPL. In Proceeedings of the 22nd International Conference on Systems and Software Product Line-Volume 1. ACM, 257--263.
[41]
Jabier Martinez, Tewfik Ziadi, Tegawendé F Bissyandé, Jacques Klein, and Yves Le Traon. 2017. Bottom-up technologies for reuse: automated extractive adoption of software product lines. In Proceedings of the 39th International Conference on Software Engineering Companion. IEEE Press, 67--70.
[42]
Andreas Metzger and Klaus Pohl. 2014. Software product line engineering and variability management: achievements and challenges. In Proceedings of the on Future of Software Engineering. ACM, 70--84.
[43]
Andreas Metzger, Klaus Pohl, Patrick Heymans, Pierre-Yves Schobbens, and Germain Saval. 2007. Disambiguating the documentation of variability in software product lines: A separation of concerns, formalization and automated analysis. In Requirements Engineering Conference, 2007. RE'07. 15th IEEE International. IEEE, 243--253.
[44]
Bertrand Meyer. 1988. Object-oriented software construction. Vol. 2. Prentice hall New York.
[45]
Richard J Miara, Joyce A Musselman, Juan A Navarro, and Ben Shneiderman. 1983. Program indentation and comprehensibility. Commun. ACM 26, 11 (1983), 861--867.
[46]
Thomas Patzke and D. Muthig. 2002. Product line implementation technologies. Programming language view. Technical Report 057.02/E. Fraunhofer IESE.
[47]
Andreas Pleuss and Goetz Botterweck. 2012. Visualization of variability and configuration options. International Journal on Software Tools for Technology Transfer 14, 5 (2012), 497--510.
[48]
Joe Rosen. 1995. Symmetry in science. Springer.
[49]
Joseph Rosen. 2008. Symmetry rules: How science and nature are founded on symmetry. Springer Science & Business Media.
[50]
Julia Rubin and Marsha Chechik. 2013. A survey of feature location techniques. In Domain Engineering. Springer, 29--58.
[51]
Nikos Salingaros. 2014. Complexity in architecture and design. Oz 36, 1 (2014), 4.
[52]
Denny Schneeweiss and Goetz Botterweck. 2010. Using Flow Maps to Visualize Product Attributes during Feature Configuration. In SPLC Workshops. 219--228.
[53]
Stefan Sobernig, Sven Apel, Sergiy Kolesnikov, and Norbert Siegmund. 2016. Quantifying structural attributes of system decompositions in 28 feature-oriented software product lines. Empirical Software Engineering 21, 4 (2016), 1670--1705.
[54]
Henry Spencer and Geoff Collyer. 1992. # ifdef considered harmful, or portability experience with C News. (1992).
[55]
Ian Stewart and Martin Golubitsky. 2010. Fearful symmetry: is God a geometer? Courier Corporation.
[56]
Mikael Svahnberg, Jilles Van Gurp, and Jan Bosch. 2005. A taxonomy of variability realization techniques. Software: Practice and Experience 35, 8 (2005), 705--754.
[57]
Peri Tarr, Harold Ossher, William Harrison, and Stanley M Sutton. 1999. N degrees of separation: multi-dimensional separation of concerns. In Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No. 99CB37002). IEEE, 107--119.
[58]
Xhevahire Tërnava and Philippe Collet. 2017. On the Diversity of Capturing Variability at the Implementation Level. In Proceedings of the 21st International Systems and Software Product Line Conference-Volume B. ACM, 81--88.
[59]
Xhevahire Tërnava and Philippe Collet. 2017. Tracing Imperfectly Modular Variability in Software Product Line Implementation. In The 16th International Conference on Software Reuse.
[60]
Adam Tornhill. 2015. Your code as a crime scene: use forensic techniques to arrest defects, bottlenecks, and bad design in your programs. Pragmatic Bookshelf.
[61]
C Reid Turner, Alfonso Fuggetta, Luigi Lavazza, and Alexander L Wolf. 1999. A conceptual basis for feature engineering. Journal of Systems and Software 49, 1 (1999), 3--15.
[62]
Richard Wettel and Michele Lanza. 2007. Visualizing software systems as cities. In 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis. IEEE, 92--99.
[63]
Richard Wettel and Michele Lanza. 2008. Visual exploration of large-scale system evolution. In 2008 15th Working Conference on Reverse Engineering. IEEE, 219--228.
[64]
Wikipedia contributors. 2019. Class (computer programming) --- Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/w/index.php?title=Class_(computer_programming)&oldid=884947448 {Online; accessed 26-February-2019}.
[65]
Liping Zhao. 2008. Patterns, symmetry, and symmetry breaking. Commun. ACM 51, 3 (2008), 40--46.
[66]
Liping Zhao and James Coplien. 2003. Understanding symmetry in object-oriented languages. Journal of Object Technology 2, 5 (2003), 123--134.
[67]
Liping Zhao and James O Coplien. 2002. Symmetry in class and type hierarchy. In Proceedings of the Fortieth International Conference on Tools Pacific: Objects for internet, mobile and embedded applications. Australian Computer Society, Inc., 181--189.
[68]
Tewfik Ziadi, Luz Frias, Marcos Aurélio Almeida da Silva, and Mikal Ziane. 2012. Feature identification from the source code of product variants. In 2012 16th European Conference on Software Maintenance and Reengineering. IEEE, 417--422.

Cited By

View all
  • (2024)Identification of Variability Implementations in TypeScript: the 2Cities VisualizationProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3676598(22-25)Online publication date: 2-Sep-2024
  • (2024)Visualizing Variability Implemented with Object-Orientation and Code Clones: A Tale of Two CitiesProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3673037(107-112)Online publication date: 2-Sep-2024
  • (2024)The VariCity Ecosystem: City Visualization of Object-Oriented Variability in Java and TypeScriptScience of Computer Programming10.1016/j.scico.2024.103210(103210)Online publication date: Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
SPLC '19: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume A
September 2019
356 pages
ISBN:9781450371384
DOI:10.1145/3336294
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 ACM 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]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 September 2019

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. identifying software variability
  2. object-oriented variability-rich systems
  3. software product line engineering
  4. tool support for understanding software variability
  5. visualizing software variability

Qualifiers

  • Research-article

Conference

SPLC 2019

Acceptance Rates

Overall Acceptance Rate 167 of 463 submissions, 36%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)5
Reflects downloads up to 18 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Identification of Variability Implementations in TypeScript: the 2Cities VisualizationProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3676598(22-25)Online publication date: 2-Sep-2024
  • (2024)Visualizing Variability Implemented with Object-Orientation and Code Clones: A Tale of Two CitiesProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3673037(107-112)Online publication date: 2-Sep-2024
  • (2024)The VariCity Ecosystem: City Visualization of Object-Oriented Variability in Java and TypeScriptScience of Computer Programming10.1016/j.scico.2024.103210(103210)Online publication date: Sep-2024
  • (2023)Visualizations for the evolution of Variant-Rich SystemsInformation and Software Technology10.1016/j.infsof.2022.107084154:COnline publication date: 20-Jan-2023
  • (2022)Customizable visualization of quality metrics for object-oriented variability implementationsProceedings of the 26th ACM International Systems and Software Product Line Conference - Volume A10.1145/3546932.3547073(43-54)Online publication date: 12-Sep-2022
  • (2022)IDE-assisted visualization of indebted OO variability implementationsProceedings of the 26th ACM International Systems and Software Product Line Conference - Volume B10.1145/3503229.3547066(74-77)Online publication date: 12-Sep-2022
  • (2021)Extending the identification of object-oriented variability implementations using usage relationshipsProceedings of the 25th ACM International Systems and Software Product Line Conference - Volume B10.1145/3461002.3473943(91-98)Online publication date: 6-Sep-2021
  • (2021)The architectural divergence problem in security and privacy of eHealth IoT product linesProceedings of the 25th ACM International Systems and Software Product Line Conference - Volume A10.1145/3461001.3473061(114-119)Online publication date: 6-Sep-2021
  • (2021)How I met your implemented variabilityProceedings of the 25th ACM International Systems and Software Product Line Conference - Volume A10.1145/3461001.3472733(208-208)Online publication date: 6-Sep-2021
  • (2021)Visualization of Object-Oriented Variability Implementations as Cities2021 Working Conference on Software Visualization (VISSOFT)10.1109/VISSOFT52517.2021.00017(76-87)Online publication date: Sep-2021
  • Show More Cited By

View Options

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