Skip to main content
Log in

Identification and visualization of variability implementations in object-oriented variability-rich systems: a symmetry-based approach

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17

Similar content being viewed by others

Notes

  1. Their definition is given in Sect. 2.1.

  2. https://github.com/DeathStar3/symfinder.

  3. https://deathstar3.github.io/symfinder-demo/jrn20.html.

  4. https://github.com/DeathStar3/symfinder.

  5. https://neo4j.com/.

  6. https://neo4j.com/developer/cypher/.

  7. https://www.docker.com/.

  8. A version supporting both Java and C++ is also available at https://deathstar3.github.io/symfinder-demo/splc2020.html.

  9. 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.

  10. 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).

  11. The shapes in this path is the package’s name in Java.

  12. https://deathstar3.github.io/symfinder-demo/identification-method.html.

  13. https://d3js.org/.

  14. http://www.cril.univ-artois.fr/~leberre/.

  15. For counting the lines of code we used gocloc: https://github.com/hhatto/gocloc/.

  16. https://deathstar3.github.io/symfinder-demo/JRN20/standard_version/elasticsearch-v6.8.5.html.

  17. The catalog: https://but4reuse.github.io/espla_catalog/. According to its our last visit on November 20, 2020.

  18. The whole ArgoUML’s visualization is available at https://deathstar3.github.io/symfinder-demo/JRN20/hotspots_version/argoUML-bcae37.html.

  19. Sat4j’s code: https://gitlab.ow2.org/sat4j/sat4j/-/tree/master/org.sat4j.core.

  20. Sat4j’s ground truth: https://deathstar3.github.io/symfinder-demo/JRN20-files/Features.pdf

  21. The whole Sat4j’s visualization is available at https://deathstar3.github.io/symfinder-demo/JRN20/hotspots_version/sat4j-22374e5e.html.

  22. 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.

  23. https://deathstar3.github.io/symfinder-demo/mapping_process.html.

  24. http://www.cril.univ-artois.fr/~leberre/.

  25. 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Coplien, J.O.: Space: The final frontier. C++ Rep. 10(3), 11–17 (1998)

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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)

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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)

    Google Scholar 

  • Miara, R.J., Musselman, J.A., Navarro, J.A., Shneiderman, B.: Program indentation and comprehensibility. Commun. ACM 26(11), 861–867 (1983)

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  MathSciNet  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Ullmann, J.R.: An algorithm for subgraph isomorphism. J. ACM 23(1), 31–42 (1976). https://doi.org/10.1145/321921.321925

    Article  MathSciNet  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Zhao, L., Coplien, J.: Understanding symmetry in object-oriented languages. J. Object Technol. 2(5), 123–134 (2003)

    Article  Google Scholar 

  • 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xhevahire Tërnava.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10515-022-00329-x

Keywords

Navigation