Abstract
Most modern object-oriented software systems are variability-rich, despite that they may not be developed as product lines. Their variability is implemented by several traditional techniques in combination, such as inheritance, overloading, or design patterns. As domain features or variation points with variants are not a by-product of these techniques, variability in code assets of such systems is implicit, and hardly documented, hampering qualities such as understandability and maintainability. In this article, we present an approach for automatic identification and visualization of variability implementation places, that is, variation points with variants, in variability-rich systems. To uniformly identify them, we propose to rely on the existing symmetries in the different software constructs and patterns. We then propose to visualize them according to their density. By means of our realized toolchain implementing the approach, symfinder, we report on a threefold evaluation, (i) on the identified potential variability in sixteen large open-source systems and symfinder ’s scalability, (ii) on measuring symfinder ’s precision and robustness when mapping identified variability to domain features, and (iii) on its usage by a software architect. Results show that symfinder can indeed help in identifying and comprehending the variability of the targeted systems.
Similar content being viewed by others
Notes
Their definition is given in Sect. 2.1.
A version supporting both Java and C++ is also available at https://deathstar3.github.io/symfinder-demo/splc2020.html.
This second parsing stage is needed as, due to limitations of Eclipse JDT, the structure of the whole codebase is needed in the database in order to query it and determine the correct types of each element.
Our identification of local symmetries in software constructs is using a graph representation of the codebase, but it must not be confused with the graph symmetry detection or automorphisms (McKay et al. 1981).
The shapes in this path is the package’s name in Java.
For counting the lines of code we used gocloc: https://github.com/hhatto/gocloc/.
The catalog: https://but4reuse.github.io/espla_catalog/. According to its our last visit on November 20, 2020.
The whole ArgoUML’s visualization is available at https://deathstar3.github.io/symfinder-demo/JRN20/hotspots_version/argoUML-bcae37.html.
Sat4j’s ground truth: https://deathstar3.github.io/symfinder-demo/JRN20-files/Features.pdf
The whole Sat4j’s visualization is available at https://deathstar3.github.io/symfinder-demo/JRN20/hotspots_version/sat4j-22374e5e.html.
While the term ’tracing’ / ’trace links’ is used in the ground truth, we will distinguish from this term in this experiment by using ’mapping’ / ’mapping links’ for vp-s and variants mapped to features, although both of them have the same meaning.
This request was considered and is now addressed: https://deathstar3.github.io/symfinder-demo/splc2020.html.
References
Alexander, C.: 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 (2002)
Alexander, C., Carey, S.: Subsymmetries. Perception and Psychophysics 4(2), 73–77 (1968). https://doi.org/10.3758/BF03209511
Andam, B., Burger, A., Berger, T., Chaudron, M.R.: 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, VAMOS ’17, pp 100–107, (2017) https://doi.org/10.1145/3023956.3023967
Anquetil, N., Kulesza, U., Mitschke, R., Moreira, A., Royer, J.C., Rummler, A., Sousa, A.: A model-driven traceability framework for software product lines. Softw. Syst. Model. 9(4), 427–451 (2010). https://doi.org/10.1007/s10270-009-0120-9
Apel, S., Batory, D., Kästner, C., Saake, G.: Feature-Oriented Software Product Lines. Springer (2016)
Assunção, W.K., Lopez-Herrejon, R.E., Linsbauer, L., Vergilio, S.R., Egyed, A.: Reengineering legacy applications into software product lines: A systematic mapping. Empir. Softw. Eng. 22(6), 2972–3016 (2017). https://doi.org/10.1007/s10664-017-9499-z
Bachmann, F., Clements, P.: Variability in software product lines. Tech. Rep. CMU/SEI-2005-TR-012, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA, (2005) http://resources.sei.cmu.edu/library/asset-view.cfm?AssetID=7675
Beuche, D.: Industrial variant management with pure::variants. In: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume B, ACM, pp 37–39, (2019) https://doi.org/10.1145/3307630.3342391
Bosch, J., Florijn, G., Greefhorst, D., Kuusela, J., Obbink, J. H., Pohl, K.: Variability issues in software product lines. In: International Workshop on Software Product-Family Engineering, Springer, PFE ’01, pp 13–21, (2001) https://doi.org/10.1007/3-540-47833-7_3
Caldiera, V.R.B.G., Rombach, H.D.: The goal question metric approach. Encyclopedia of Software Engineering pp 528–532, (1994) https://doi.org/10.1002/0471028959.sof142
Capilla, R., Bosch, J., Kang, K.C., et al.: Systems and software variability management. Concepts Tools and Experiences (2013)
Coplien, J., Hoffman, D., Weiss, D.: Commonality and variability in software engineering. IEEE Softw. 15(6), 37–45 (1998). https://doi.org/10.1109/52.730836
Coplien, J.O.: Space: The final frontier. C++ Rep. 10(3), 11–17 (1998)
Coplien, J.O.: Multi-Paradigm Design for C++. Addison-Wesley Longman Publishing Co. Inc, (1999)
Coplien, J.O.: The future of language: Symmetry or broken symmetry? In: Proceedings of VS Live 2001, pp 1–7, (2001) https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/Symmetry/FutureOfLanguage
Coplien, J.O., Zhao, L.: Symmetry breaking in software patterns. In: International Symposium on Generative and Component-Based Software Engineering, Springer, Springer, GCSE 2000, pp 37–54 (2000)
Coplien, J.O., Zhao, L.: Toward a general formal foundation of fesign. symmetry and broken symmetry. (2020) (Forthcoming publication)
Couto, M.V., Valente, M.T., Figueiredo, E.: Extracting software product lines: A case study using conditional compilation. In: 2011 15th European Conference on Software Maintenance and Reengineering, IEEE, pp 191–200, (2011) https://doi.org/10.1109/CSMR.2011.25
Cruz, D., Figueiredo, E., Martinez, J.: A literature review and comparison of three feature location techniques using ArgoUML-SPL. In: Proceedings of the 13th International Workshop on Variability Modelling of Software-Intensive Systems, ACM, VAMOS ’19, pp 1–10, (2019) https://doi.org/10.1145/3302333.3302343
Czarnecki, K., Grünbacher, P., Rabiser, R., Schmid, K., Wasowski, A.: Cool features and tough decisions: A comparison of variability modeling approaches. In: Proceedings of the Sixth International Workshop on Variability Modeling of Software-Intensive Systems, ACM, VaMoS ’12, pp 173–182, (2012) https://doi.org/10.1145/2110147.2110167
De Lucia, A., Deufemia, V., Gravino, C., Risi, M.: Improving behavioral design pattern detection through model checking. In: 2010 14th European Conference on Software Maintenance and Reengineering, pp 176–185 (2010)
Diehl, S.: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer Science & Business Media (2007)
Dit, B., Revelle, M., Gethers, M., Poshyvanyk, D.: Feature location in source code: a taxonomy and survey. J. Softw: Evol. Proc. 25(1), 53–95 (2013). https://doi.org/10.1002/smr.567
Duszynski, S., Becker, M.: Recovering variability information from the source code of similar software products. In: 2012 Third International Workshop on Product Line Approaches in Software Engineering, IEEE, PLEASE, pp 37–40, (2012) https://doi.org/10.1109/PLEASE.2012.6229768
El-Sharkawy, S., Yamagishi-Eichler, N., Schmid, K.: Metrics for analyzing variability and its implementation in software product lines: a systematic literature review. Inf. Softw. Technol. 106, 1–30 (2019). https://doi.org/10.1016/j.infsof.2018.08.015
Fritsch, C., Lehn, A., Strohm, T., Bosch, R.: Evaluating variability implementation mechanisms. In: Proceedings of International Workshop on Product Line Engineering, sn, PLEES ’02, pp 59–64 (2002)
Gabriel, R.P.: Patterns of Software, vol. 62. Oxford University Press, New York (1996)
Gacek, C., Anastasopoules, M.: Implementing product line variabilities. In: Proceedings of the 2001 Symposium on Software Reusability: Putting Software Reuse in Context, ACM, SSR ’01, pp 109–117, (2001) https://doi.org/10.1145/375212.375269
Galster, M.: Variability-intensive software systems: Product lines and beyond. In: Proceedings of the 13th International Workshop on Variability Modelling of Software-Intensive Systems, ACM, VaMoS ’19, pp 1–1, (2019) https://doi.org/10.1145/3302333.3302336
Galster, M., Weyns, D., Tofan, D., Michalik, B., Avgeriou, P.: Variability in software systems – a systematic literature review. IEEE Trans. Software Eng. 40(3), 282–306 (2013). https://doi.org/10.1109/TSE.2013.56
Garcia, J., Ivkovic, I., Medvidovic, N.: A comparative analysis of software architecture recovery techniques. In: 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), IEEE, pp 486–496, (2013) https://doi.org/10.1109/ASE.2013.6693106
Halin, A., Nuttinck, A., Acher, M., Devroey, X., Perrouin, G., Heymans, P.: Yo variability! JHipster: A playground for web-apps analyses. In: Proceedings of the 11th International Workshop on Variability Modelling of Software-Intensive Systems, ACM, VAMOS ’17, p 44–51, (2017) https://doi.org/10.1145/3023956.3023963
Henney, K.: The good, the bad, and the koyaanisqatsi. Proceedings of the Second Nordic Pattern Languages of Programs Conference, VikingPLoP 2003, 1–8 (2003)
Heuzeroth, D., Holl, T., Hogstrom, G., Lowe, W.: Automatic design pattern detection. In: 11th IEEE International Workshop on Program Comprehension, 2003., pp 94–103 (2003)
Hilliard, R.: On representing variation. In: Proceedings of the Fourth European Conference on Software Architecture: Companion Volume, ACM, ECSA ’10, p 312–315, (2010) https://doi.org/10.1145/1842752.1842810
Hunsen, C., Zhang, B., Siegmund, J., Kästner, C., Leßenich, O., Becker, M., Apel, S.: Preprocessor-based variability in open-source and industrial software systems: an empirical study. Empir. Softw. Eng. 21(2), 449–482 (2016). https://doi.org/10.1007/s10664-015-9360-1
Jacobson, I., Griss, M., Jonsson, P.: Software Reuse: Architecture. Addison-Wesley Professional, Process and Organization for Business Success (1997)
Jayaraman, K., Harvison, D., Ganesh, V., Kiezun, A.: jFuzz: A concolic whitebox fuzzer for java. Proceedings of the First NASA Formal Methods Symposium pp 121–125, (2009) https://ntrs.nasa.gov/search.jsp?R=20100024457
John, I., Lee, J., Muthig, D.: Separation of variability dimension and development dimension. In: Proocedings of the 1st International Workshop on Variability Modelling of Software-Intensive Systems, VaMoS ’07, pp 45–49 (2007)
Kamali, S. R., Kasaei, S., Lopez-Herrejon, R. E. (2019) Answering the call of the wild? thoughts on the elusive quest for ecological validity in variability modeling. In: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume B, ACM, SPLC ’19, pp 143–150, https://doi.org/10.1145/3307630.3342400
Kang, K.C., Cohen, S.G., Hess, J.A., Novak, W.E., Peterson, A.S.: Feature-oriented domain analysis (FODA) feasibility study. Carnegie-Mellon Univ Pittsburgh Pa Software Engineering Inst, Tech. rep. (1990)
Kästner, C., Trujillo, S., Apel, S.: Visualizing software product line variabilities in source code. In: Proceedings of the 12th International Software Product Line Conference: 2nd International Workshop on Visualisation in Software Product Line Engineering, SPLC - ViSPLE ’08, pp 303–312 (2008)
Krueger, C. W.: Easing the transition to software mass customization. In: International Workshop on Software Product-Family Engineering, Springer, PFE ’01, pp 282–293, (2001). https://doi.org/10.1007/3-540-47833-7_25
Krüger, J., Gu, W., Shen, H., Mukelabai, M., Hebig, R., Berger, T.: Towards a better understanding of software features and their characteristics: A case study of marlin. In: Proceedings of the 12th International Workshop on Variability Modelling of Software-Intensive Systems, VaMoS ’18, pp 105–112, (2018). https://doi.org/10.1145/3168365.3168371
Krüger, J., Berger, T., Leich, T.: Features and how to find them: A survey of manual feature location. Software Engineering for Variability Intensive Systems pp 153–172 (2019a)
Krüger, J., Mukelabai, M., Gu, W., Shen, H., Hebig, R., Berger, T.: Where is my feature and what is it about? A case study on recovering feature facets. J. Syst. Softw. 152, 239–253 (2019). https://doi.org/10.1016/j.jss.2019.01.057
Lanza, M., Ducasse, S.: Polymetric views - a lightweight visual approach to reverse engineering. IEEE Trans. Software Eng. 29(9), 782–795 (2003). https://doi.org/10.1109/TSE.2003.1232284
Lanza, M., Ducasse, S., Gall, H., Pinzger, M.: CodeCrawler: An information visualization tool for program comprehension. In: Proceedings of the 27th International Conference on Software Engineering, ACM, ICSE ’05, pp 672–673, (2005) https://doi.org/10.1145/1062455.1062602
Le, D. M., Lee, H., Kang, K. C., Keun, L.: Validating consistency between a feature model and its implementation. In: International Conference on Software Reuse, Springer, ICSR ’13, pp 1–16, (2013) https://doi.org/10.1007/978-3-642-38977-1_1
Le Berre, D., Parrain, A.: The sat4j library, release 2.2. J. Satisf., Boolean Model. Comput. 7(2–3), 59–64 (2010). https://doi.org/10.3233/SAT190075
Le Berre, D., Rapicault, P.: Dependency management for the Eclipse ecosystem: Eclipse p2, metadata and resolution. In: Proceedings of the 1st International Workshop on Open Component Ecosystems, IWOCE ’09, pp 21–30, (2009) https://doi.org/10.1145/1595800.1595805
Liebig, J., Apel, S., Lengauer, C., Kästner, C., Schulze, M.: 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, ICSE ’10, pp 105–114, (2010) https://doi.org/10.1145/1806799.1806819
Lopez-Herrejon, R.E., Illescas, S., Egyed, A.: A systematic mapping study of information visualization for software product line engineering. J. Softw: Evol. Proc. 30(2), e1912 (2018). https://doi.org/10.1002/smr.1912
Lozano, A.: An overview of techniques for detecting software variability concepts in source code. In: International Conference on Conceptual Modeling, Springer, ER ’11, pp 141–150, (2011) https://doi.org/10.1007/978-3-642-24574-9
Martinez, J., Ziadi, T., Bissyandé, T. F., Klein, J., Traon, Y. L.: Name suggestions during feature identification: the variclouds approach. In: Proceedings of the 20th International Systems and Software Product Line Conference, ACM, pp 119–123, (2016) https://doi.org/10.1145/2934466.2934480
Martinez, J., Assunção, W. K., Ziadi, T.: Espla: A catalog of extractive SPL adoption case studies. In: Proceedings of the 21st International Systems and Software Product Line Conference - Volume B, ACM, SPLC ’17, pp 38–41, (2017a) https://doi.org/10.1145/3109729.3109748
Martinez, J., Ziadi, T., Bissyandé, T. F., Klein, J., Le Traon, Y.: Bottom-up technologies for reuse: Automated extractive adoption of software product lines. In: 2017 IEEE/ACM 39th International Conference on Software Engineering Companion, IEEE, ICSE-C ’17, pp 67–70, (2017b) https://doi.org/10.1109/ICSE-C.2017.15
Martinez, J., Ordoñez, N., Tërnava Xh., Ziadi, T., Aponte, J., Figueiredo, E., Valente, M. T.: Feature location benchmark with ArgoUML SPL. In: Proceedings of the 22nd International Systems and Software Product Line Conference - Volume 1, ACM, SPLC ’18, pp 257–263, (2018a) https://doi.org/10.1145/3233027.3236402
Martinez, J., Tërnava Xh., Ziadi, T.: Software product line extraction from variability-rich systems: The robocode case study. In: Proceedings of the 22nd International Systems and Software Product Line Conference-Volume 1, ACM, SPLC ’18, pp 132–142, (2018b) https://doi.org/10.1145/3233027.3233038
McKay, B.D., et al.: Practical Graph Isomorphism. Vanderbilt University Tennessee, USA, Department of Computer Science (1981)
Meinicke, J., Thüm, T., Schröter, R., Benduhn, F., Leich, T., Saake, G.: Mastering Software Variability with FeatureIDE. Springer (2017)
Metzger, A., Pohl, K.: Software product line engineering and variability management: Achievements and challenges. In: Proceedings of the on Future of Software Engineering, ACM, FOSE ’14, pp 70–84, (2014) https://doi.org/10.1145/2593882.2593888
Metzger, A., Pohl, K., Heymans, P., Schobbens, P. Y., Saval, G.: Disambiguating the documentation of variability in software product lines: A separation of concerns, formalization and automated analysis. In: 15th IEEE International Requirements Engineering Conference, IEEE, RE ’07, pp 243–253, (2007) https://doi.org/10.1109/RE.2007.61
Meyer, B.: Object-Oriented Software Construction. Prentice Hall, New York (1988)
Miara, R.J., Musselman, J.A., Navarro, J.A., Shneiderman, B.: Program indentation and comprehensibility. Commun. ACM 26(11), 861–867 (1983)
Michelon, G. K., Linsbauer, L., Assunção, W. K., Egyed, A.: Comparison-based feature location in ArgoUML variants. In: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume A, ACM, SPLC ’19, pp 93–97, (2019) https://doi.org/10.1145/3336294.3342360
Mortara, J., Tërnava Xh., Collet, P.: symfinder: a toolchain for the identification and visualization of object-oriented variability implementations. In: Proceedings of the 23rd International Systems and Software Product Line Conference-Volume B, ACM, SPLC ’19, Tools and Demonstrations, pp 5–8, (2019) https://doi.org/10.1145/3307630.3342394
Mortara, J., Collet, P., Tërnava Xh.: Identifying and mapping implemented variabilities in java and c++ systems using symfinder. In: 24th International Systems and Software Product Line Conference, ACM, SPLC’20, (2020a) https://doi.org/10.1145/3382025.3414987
Mortara, J., Tërnava Xh., Collet, P.: Mapping features to automatically identified object-oriented variability implementations-the case of ArgoUML-SPL. In: 14th International Working Conference on Variability Modelling of Software-Intensive Systems, ACM, VaMoS ’20, pp 1–9, (2020b) https://doi.org/10.1145/3377024.3377037
Niere, J., Schäfer, W., Wadsack, J. P., Wendehals, L., Welsh, J.: Towards pattern-based design recovery. In: Proceedings of the 24th International Conference on Software Engineering, Association for Computing Machinery, New York, NY, USA, ICSE ’02, p 338–348, (2002) https://doi.org/10.1145/581339.581382
OASIS (2020) Oasis variability exchange language (vel) tc. https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=vel, [Online; accessed 25-April-2020]
Paskevicius, P., Damasevicius, R., Štuikys, V.: Change impact analysis of feature models. In: International Conference on Information and Software Technologies, Springer, ICIST ’12, CCIS 319, pp 108–122, (2012) https://doi.org/10.1007/978-3-642-33308-8_10
Patzke, T., Muthig, D.: Product line implementation technologies. programming language view. Tech. rep., Fraunhofer IESE (2002)
Pure-systems GmbH (2020) pure::variants. https://www.pure-systems.com/products/pure-variants-9.html
Pleuss, A., Botterweck, G.: Visualization of variability and configuration options. Int. J. Softw. Tools Technol. Transfer. 14(5), 497–510 (2012). https://doi.org/10.1007/s10009-012-0252-z
Pohl, K., Böckle, G., van Der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer Science & Business Media (2005)
Rabiser, R.: Feature modeling vs. decision modeling: History, comparison and perspectives. In: Proceedings of the 23rd International Systems and Software Product Line Conference-Volume B, ACM, SPLC ’19, pp 134–136, (2019) https://doi.org/10.1145/3307630.3342399
Rosen, J.: Symmetry in Science. Springer (1995)
Rosen, J.: Symmetry Rules: How Science and Nature are Founded on Symmetry. Springer Science & Business Media (2008)
Rubin, J., Chechik, M.: A survey of feature location techniques. In: Domain Engineering: Product Lines, Languages, and Conceptual Models, Springer, pp 29–58, (2013) https://doi.org/10.1007/978-3-642-36654-3-2
Schmid, K., John, I.: A customizable approach to full lifecycle variability management. Sci. Comput. Program. 53(3), 259–284 (2004). https://doi.org/10.1016/j.scico.2003.04.002
Schneeweiss, D., Botterweck, G.: Using flow maps to visualize product attributes during feature configuration. In: Proceedings of the 14th Software Product Lines Conference, Workshop Proceedings (Volume 2 : Workshops, Industrial Track, Doctoral Symposium, Demonstrations and Tools), Springer, SPLC ’10, pp 219–228 (2010)
Shi, N., Olsson, R. A.: Reverse engineering of design patterns from java source code. In: 21st IEEE/ACM International Conference on Automated Software Engineering (ASE’06), pp 123–134 (2006)
Shneiderman, B.: The eyes have it: A task by data type taxonomy for information visualizations. In: Proceedings 1996 IEEE Symposium on Visual Languages, IEEE, pp 336–343, (1996) https://doi.org/10.1109/VL.1996.545307
Stewart, I., Golubitsky, M.: Fearful Symmetry: Is God a Geometer? Courier Corporation (1992)
Svahnberg, M., Van Gurp, J., Bosch, J.: A taxonomy of variability realization techniques. Softw: Pract. exper. 35(8), 705–754 (2005). https://doi.org/10.1002/spe.652
Tërnava Xh., Collet, P.: 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, SPLC ’17, pp 81–88, (2017a) https://doi.org/10.1145/3109729.3109733
Tërnava, Xh., Collet, P.: Tracing imperfectly modular variability in software product line implementation. In: International Conference on Software Reuse, Springer, ICSR ’17, pp 112–120, (2017b) https://doi.org/10.1007/978-3-319-56856-0_8
Tërnava, Xh., Mortara, J., Collet, P.: Identifying and visualizing variability in object-oriented variability-rich systems. In: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume A, pp 231–243, (2019) https://doi.org/10.1145/3336294.3336311
Tornhill, A.: Your Code as a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs. Pragmatic Bookshelf (2015)
Turner, C.R., Fuggetta, A., Lavazza, L., Wolf, A.L.: A conceptual basis for feature engineering. J. Syst. Softw. 49(1), 3–15 (1999). https://doi.org/10.1016/S0164-1212(99)00062-X
Ullmann, J.R.: An algorithm for subgraph isomorphism. J. ACM 23(1), 31–42 (1976). https://doi.org/10.1145/321921.321925
Vera-Pérez, O.L., Danglot, B., Monperrus, M., Baudry, B.: A comprehensive study of pseudo-tested methods. Empir. Softw. Eng. 24(3), 1195–1225 (2019). https://doi.org/10.1007/s10664-018-9653-2
Wettel, R., Lanza, M.: Visualizing software systems as cities. In: 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis, IEEE, pp 92–99, (2007) https://doi.org/10.1109/VISSOF.2007.4290706
Wettel, R., Lanza, M.: Visual exploration of large-scale system evolution. In: 2008 15th Working Conference on Reverse Engineering, IEEE, pp 219–228, (2008) https://doi.org/10.1109/WCRE.2008.55
Yu, D., Zhang, Y., Chen, Z.: A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures. J. Syst. Softw. 103, 1–16 (2015). https://doi.org/10.1016/j.jss.2015.01.019
Zhang, B., Becker, M., Patzke, T., Sierszecki, K., Savolainen, J. E.: Variability evolution and erosion in industrial product lines: A case study. In: Proceedings of the 17th International Software Product Line Conference, ACM, SPLC ’13, pp 168–177, (2013) https://doi.org/10.1145/2491627.2491645
Zhao, L.: Patterns, symmetry, and symmetry breaking. Commun. ACM 51(3), 40–46 (2008). https://doi.org/10.1145/1325555.1325564
Zhao, L., Coplien, J.: Understanding symmetry in object-oriented languages. J. Object Technol. 2(5), 123–134 (2003)
Zhao, L., Coplien, J. O.: 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., ACM, CRPIT ’02, pp 181–189, (2002) https://doi.org/10.5555/564092.564119
Ziadi, T., Frias, L., da Silva, M. A. A., Ziane, M.: Feature identification from the source code of product variants. In: 2012 16th European Conference on Software Maintenance and Reengineering, IEEE, pp 417–422, (2012) https://doi.org/10.1109/CSMR.2012.52
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
Not applicable.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Tërnava, X., Mortara, J., Collet, P. et al. Identification and visualization of variability implementations in object-oriented variability-rich systems: a symmetry-based approach. Autom Softw Eng 29, 25 (2022). https://doi.org/10.1007/s10515-022-00329-x
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s10515-022-00329-x