Abstract
Software reuse is a way to reduce costs and improve the quality of products. In practice, software reuse is commonly done by opportunistic strategies. In these strategies, the artifacts are simply copied/cloned and modified/adapted to fulfill existing needs. Opportunistic reuse leads to a set of system variants developed independently, generating technical debts. The maintenance and evolution of these independent variants are a costly and difficult task since most of the times the practitioners do not have a global view of such variants nor a clear understanding of the actual structure of the system. In such a case, a systematic reuse approach is paramount. Software product line engineering (SPLE) is a well-established approach to deal with a set of product variants in a specific domain, including systematic reuse in the software development process. One of the main design assets generated during the SPLE is the product line architecture (PLA), which describes how commonalities and variabilities are implemented in an SPL. Designing a PLA from scratch is challenging, since it must contemplate a detailed description of a whole family of products. PLAs can be obtained from existing product variants, requiring less effort and time from practitioners. Commonly, UML class diagrams of system products are available or can be reverse engineered easily. These UML class diagrams are a rich source of information to support PLA creation. In this chapter, we describe our method of reengineering UML class diagram of variants into an initial version of a PLA. Our method relies on a search-based technique to merge a set of UML model variants and insert annotations in model elements to describe the system features they belong to. The output of our method is an annotated UML class diagram that shows the whole structure of product variants that allows practitioners to reason better about the adoption of SPLE, aiding communication among stakeholders, supporting SPLE planning, and helping estimate maintenance, evolution, and testing activities.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Assunção, W.K.G., Lopez-Herrejon, R.E., Linsbauer, L., Vergilio, S.R., Egyed, A.: Extracting variability-safe feature models from source code dependencies in system variants. In: Genetic and Evolutionary Computation Conference (GECCO), pp. 1303–1310. ACM, New York (2015). https://doi.org/10.1145/2739480.2754720
Assunção, W.K.G., Lopez-Herrejon, R.E., Linsbauer, L., Vergilio, S.R., Egyed, A.: Reengineering legacy applications into software product lines: a systematic mapping. Empir. Softw. Eng. 1–45 (2017). https://doi.org/10.1007/s10664-017-9499-z
Assunção, W.K.G., Vergilio, S.R., Lopez-Herrejon, R.E.: Discovering software architectures with search-based merge of UML model variants. In: Botterweck, G., Werner, C. (eds.) Mastering Scale and Complexity in Software Reuse, pp. 95–111. Springer International Publishing, Berlin (2017)
Berger, T., Steghöfer, J.P., Ziadi, T., Robin, J., Martinez, J., et al.: The state of adoption and the challenges of systematic variability management in industry. Empir. Softw. Eng., 1755–1797 (2020)
Dobrica, L., Niemela, E.: A survey on software architecture analysis methods. IEEE Trans. Softw. Eng. 28(7), 638–653 (2002). https://doi.org/10.1109/TSE.2002.1019479
Durillo, J.J., Nebro, A.J.: jmetal: a Java framework for multi-objective optimization. Adv. Eng. Softw. 42, 760–771 (2011). https://doi.org/10.1016/j.advengsoft.2011.05.014. http://jmetal.sourceforge.net/
Faust, D., Verhoef, C.: Software product line migration and deployment. Softw. Pract. Exp. 33(10), 933–955 (2003)
Garcia, J., Ivkovic, I., Medvidovic, N.: A comparative analysis of software architecture recovery techniques. In: International Conference on Automated Software Engineering (ASE), pp. 486–496. IEEE, Piscataway (2013)
Goldberg, D.E., Deb, K., Clark, J.H.: Genetic algorithms, noise, and the sizing of populations. Complex Syst. 6, 333–362 (1992)
Holmes, R., Walker, R.J.: Systematizing pragmatic software reuse. ACM Trans. Softw. Eng. Methodol. 21(4), 1–44 (2013). https://doi.org/10.1145/2377656.2377657
Hussain, I., Khanum, A., Abbasi, A.Q., Javed, M.Y.: A novel approach for software architecture recovery using particle swarm optimization. Int. Arab J. Inf. Technol. 12(1), 32–41 (2015)
Jeet, K., Dhir, R.: Software architecture recovery using genetic black hole algorithm. ACM SIGSOFT Softw. Eng. Not. 40(1), 1–5 (2015)
Krueger, C.W.: Software reuse. ACM Comput. Surv. 24(2), 131–183 (1992). https://doi.org/10.1145/130844.130856
Kulkarni, N., Varma, V.: Perils of opportunistically reusing software module. Softw. Pract. Exp. 47(7), 971–984 (2017). https://doi.org/10.1002/spe.2439
Laguna, M.A., Crespo, Y.: A systematic mapping study on software product line evolution: from legacy system reengineering to product line refactoring. Sci. Comput. Program. 78(8), 1010–1034 (2013). https://doi.org/10.1016/j.scico.2012.05.003
Linsbauer, L., Lopez-Herrejon, E.R., Egyed, A.: Recovering traceability between features and code in product variants. In: 17th International Software Product Line Conference, SPLC’13, pp. 131–140. ACM, New York (2013). https://doi.org/10.1145/2491627.2491630
Marcolino, A.S., OliveiraJr, E.: Comparing SMarty and plus for variability identification and representation at product-line uml class level: a controlled quasi-experiment. J. Comput. Sci. 13(11), 617–632 (2017). https://doi.org/10.3844/jcssp.2017.617.632
Martinez, J., Ziadi, T., Klein, J., Traon, Y.L.: Identifying and visualising commonality and variability in model variants. In: 10th European Conference Modelling Foundations and Applications (ECMFA), pp. 117–131 (2014). https://doi.org/10.1007/978-3-319-09195-2_8
Martinez, J., Ziadi, T., Bissyandé, T.F., Klein, J., l. Traon, Y.: Automating the extraction of model-based software product lines from model variants. In: International Conference on Automated Software Engineering (ASE), pp. 396–406 (2015)
OliveiraJr, E., Gimenes, I.M.S., Maldonado, J.C.: Systematic management of variability in uml-based software product lines. J. Univ. Comput. Sci., 2374–2393 (2010). https://doi.org/10.3217/jucs-016-17-2374
Pohl, K., Böckle, G., van Der Linden, F.J.: Software Product Line Engineering: Foundations, Principles And Techniques. Springer Science & Business Media, Berlin (2005)
Steinberg, D., Budinsky, F., Merks, E., Paternostro, M.: EMF: eclipse modeling framework. Pearson Education, London (2008)
Acknowledgements
The work is supported by the Brazilian funding agencies CAPES and CNPq (Grant 305968/2018), by the Carlos Chagas Filho Foundation for Supporting Research in the State of Rio de Janeiro (FAPERJ), under the PDR-10 program, grant 202073/2020, and by the Natural Sciences and Engineering Research Council of Canada (NSERC) grant RGPIN-2017-05421.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Assunção, W.G., Vergilio, S.R., Lopez-Herrejon, R.E. (2023). Reengineering UML Class Diagram Variants into a Product Line Architecture. In: OliveiraJr, E. (eds) UML-Based Software Product Line Engineering with SMarty. Springer, Cham. https://doi.org/10.1007/978-3-031-18556-4_18
Download citation
DOI: https://doi.org/10.1007/978-3-031-18556-4_18
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-18555-7
Online ISBN: 978-3-031-18556-4
eBook Packages: Computer ScienceComputer Science (R0)