Abstract
In this paper, we consider the problem of refactoring related software products specified in UML into annotative product line representations. Our approach relies on identifying commonalities and variabilities in existing products and further merging those into product line representations which reduce duplications and facilitate reuse. Varying merge strategies can lead to producing several semantically correct, yet syntactically different refactoring results. Depending on the goal of the refactoring, one result can be preferred to another. We thus propose to capture the goal using a syntactic quality function and use that function to guide the merge strategy. We define and implement a quality-based merge-refactoring framework for UML models containing class and statechart diagrams and report on our experience applying it on three case-studies.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Apel, S., Beyer, D.: Feature Cohesion in Software Product Lines: an Exploratory Study. In: Proc. of ICSE 2011, pp. 421–430 (2011)
Beuche, D.: Transforming Legacy Systems into Software Product Lines. In: Bosch, J., Lee, J. (eds.) SPLC 2010. LNCS, vol. 6287, pp. 509–510. Springer, Heidelberg (2010)
Boucher, Q., Classen, A., Heymans, P., Bourdoux, A., Demonceau, L.: Tag and Prune: a Pragmatic Approach to Software Product Line Implementation. In: Proc. of ASE 2010, pp. 333–336 (2010)
Clements, P.C., Northrop, L.: Software Product Lines: Practices and Patterns (2001)
Cruz-Lemus, J.A., Genero, M., Piattini, M.: Using Controlled Experiments for Validating UML Statechart Diagrams Measures. In: Cuadrado-Gallego, J.J., Braungarten, R., Dumke, R.R., Abran, A. (eds.) IWSM-Mensura 2007. LNCS, vol. 4895, pp. 129–138. Springer, Heidelberg (2008)
Esperanza Manso, M., Cruz-Lemus, J.A., Genero, M., Piattini, M.: Empirical Validation of Measures for UML Class Diagrams: A Meta-Analysis Study. In: Chaudron, M.R.V. (ed.) MODELS 2008 Workshops. LNCS, vol. 5421, pp. 303–313. Springer, Heidelberg (2009)
Faust, D., Verhoef, C.: Software Product Line Migration and Deployment. Journal of Software Practice and Experiences 30(10), 933–955 (2003)
Ferber, S., Haag, J., Savolainen, J.: Feature Interaction and Dependencies: Modeling Features for Reengineering a Legacy Product Line. In: Chastek, G.J. (ed.) SPLC 2002. LNCS, vol. 2379, pp. 235–256. Springer, Heidelberg (2002)
Gomaa, H.: Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison Wesley (2004)
Her, J.S., Kim, J.H., Oh, S.H., Rhew, S.Y., Kim, S.D.: A Framework for Evaluating Reusability of Core Asset in Product Line Engineering. Information and Software Technology 49(7), 740–760 (2007)
Kästner, C., Apel, S.: Integrating Compositional and Annotative Approaches for Product Line Engineering. In: Proc. of GPCE Workshops (McGPLE 2008), pp. 35–40 (2008)
Kästner, C., Apel, S., Kuhlemann, M.: Granularity in Software Product Lines. In: Proc. of ICSE 2008, pp. 311–320 (2008)
Kelter, U., Wehren, J., Niere, J.: A Generic Difference Algorithm for UML Models. In: Software Engineering. LNI, vol. 64, pp. 105–116 (2005)
Kolb, R., Muthig, D., Patzke, T., Yamauchi, K.: Refactoring a Legacy Component for Reuse in a Software Product Line: a Case Study: Practice Articles. J. of Software Maintenance and Evolution 18(2), 109–132 (2006)
Koschke, R., Frenzel, P., Breu, A.P., Angstmann, K.: Extending the Reflexion Method for Consolidating Software Variants into Product Lines. Software Quality Control 17(4), 331–366 (2009)
Liebig, J., Apel, S., Lengauer, C., Kästner, C., Schulze, M.: An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines. In: Proc. of ICSE 2010, pp. 105–114 (2010)
McQuillan, J.A., Power, J.F.: On the Application of Software Metrics to UML Models. In: Kühne, T. (ed.) MoDELS 2006 Workshops. LNCS, vol. 4364, pp. 217–226. Springer, Heidelberg (2007)
Mende, T., Koschke, R., Beckwermert, F.: An Evaluation of Code Similarity Identification for the Grow-and-Prune Model. J. of Software Maintenance and Evolution 21(2), 143–169 (2009)
Nejati, S., Sabetzadeh, M., Chechik, M., Easterbrook, S., Zave, P.: Matching and Merging of Statecharts Specifications. In: Proc. of ICSE 2007, pp. 54–64 (2007)
Oliveira Junior, E., Maldonado, J., Gimenes, I.: Empirical Validation of Complexity and Extensibility Metrics for Software Product Line Architectures. In: Proc. of SBCARS 2010, pp. 31–40 (2010)
Pardalos, P., Resende, M.: Handbook of Applied Optimization (2002)
Rubin, J., Chechik, M.: From Products to Product Lines Using Model Matching and Refactoring. In: Proc. of SPLC Wrksp, MAPLE 2010, pp. 155–162 (2010)
Rubin, J., Chechik, M.: (2012), http://www.cs.toronto.edu/~mjulia/PLRefactoring/
Rubin, J., Chechik, M.: Combining Related Products into Product Lines. In: de Lara, J., Zisman, A. (eds.) FASE 2012. LNCS, vol. 7212, pp. 285–300. Springer, Heidelberg (2012)
Ryssel, U., Ploennigs, J., Kabitzsch, K.: Automatic Variation-Point Identification in Function-Block-Based Models. In: Proc. of GPCE 2010, pp. 23–32 (2010)
Sabetzadeh, M., Easterbrook, S.: View Merging in the Presence of Incompleteness and Inconsistency. Requirement Engineering 11, 174–193 (2006)
Trendowicz, A., Punter, T.: Quality Modeling for Software Product Lines. In: Proc. of ECOOP Workshops, QAOOSE 2003 (2003)
van der Hoek, A., Dincel, E., Medvidovic, N.: Using Service Utilization Metrics to Assess the Structure of Product Line Architectures. In: Proc. METRICS 2003, pp. 298–308 (2003)
Xing, Z., Stroulia, E.: UMLDiff: an Algorithm for Object-Oriented Design Differencing. In: Proc. of ASE 2005, pp. 54–65 (2005)
Yoshimura, K., Narisawa, F., Hashimoto, K., Kikuno, T.: FAVE: Factor Analysis Based Approach for Detecting Product Line Variability from Change History. In: Proc. of MSR 2008, pp. 11–18 (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Rubin, J., Chechik, M. (2013). Quality of Merge-Refactorings for Product Lines. In: Cortellessa, V., Varró, D. (eds) Fundamental Approaches to Software Engineering. FASE 2013. Lecture Notes in Computer Science, vol 7793. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-37057-1_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-37057-1_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-37056-4
Online ISBN: 978-3-642-37057-1
eBook Packages: Computer ScienceComputer Science (R0)