The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.04 - July-Aug. (2012 vol.38)
pp: 737-754
Marco Tulio Valente , University of Minas Gerais, Belo Horizonte
Virgilio Borges , COTEMIG, Brazil
Leonardo Passos , University of Waterloo, Waterloo
ABSTRACT
The extraction of nontrivial software product lines (SPL) from a legacy application is a time-consuming task. First, developers must identify the components responsible for the implementation of each program feature. Next, they must locate the lines of code that reference the components discovered in the previous step. Finally, they must extract those lines to independent modules or annotate them in some way. To speed up product line extraction, this paper describes a semi-automatic approach to annotate the code of optional features in SPLs. The proposed approach is based on an existing tool for product line development, called CIDE, that enhances standard IDEs with the ability to associate background colors with the lines of code that implement a feature. We have evaluated and successfully applied our approach to the extraction of optional features from three nontrivial systems: Prevayler (an in-memory database system), JFreeChart (a chart library), and ArgoUML (a UML modeling tool).
INDEX TERMS
Software product lines, virtual separation of concerns, refactoring tools, annotations
CITATION
Marco Tulio Valente, Virgilio Borges, Leonardo Passos, "A Semi-Automatic Approach for Extracting Software Product Lines", IEEE Transactions on Software Engineering, vol.38, no. 4, pp. 737-754, July-Aug. 2012, doi:10.1109/TSE.2011.57
REFERENCES
[1] B. Adams, W.D. Meuter, H. Tromp, and A.E. Hassan, "Can We Refactor Conditional Compilation into Aspects?" Proc. Eighth ACM Int'l Conf. Aspect-Oriented Software Development, pp. 243-254, 2009.
[2] M. Antkiewicz and K. Czarnecki, "FeaturePlugin: Feature Modeling Plug-In for Eclipse," Proc. OOPSLA Workshop Eclipse Technology eXchange, pp. 67-72, 2004.
[3] D. Batory, "Feature-Oriented Programming and the AHEAD Tool Suite," Proc. 26th Int'l Conf. Software Eng., pp. 702-703, 2004.
[4] D. Beuche, "Modeling and Building Software Product Lines with Pure::Variants," Proc. 11th Int'l Conf. Software Product Lines, pp. 143-144, 2007.
[5] D. Binkley, M. Ceccato, M. Harman, F. Ricca, and P. Tonella, "Automated Refactoring of Object Oriented Code into Aspects," Proc. IEEE 21st Int'l Conf. Software Maintenance, pp. 27-36, 2005.
[6] D. Binkley, M. Ceccato, M. Harman, F. Ricca, and P. Tonella, "Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects," IEEE Trans. Software Eng., vol. 32, no. 9, pp. 698-717, Sept. 2006.
[7] M. Bruntink, A. van Deursen, M. D'Hondt, and T. Tourwe, "Simple Crosscutting Concerns Are Not So Simple," Proc. Sixth Int'l Conf. Aspect-Oriented Software Development, pp. 199-211, 2007.
[8] M. Calder, M. Kolberg, E.H. Magill, and S. Reiff-Marganiec, "Feature Interaction: A Critical Review and Considered Forecast," Computer Networks, vol. 41, no. 1, pp. 115-141, 2003.
[9] P. Clements and L.M. Northrop, Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.
[10] M.V. Couto, M.T. Valente, and E. Figueiredo, "Extracting Software Product Lines: A Case Study Using Conditional Compilation," Proc. 15th European Conf. Software Maintenance and Reeng., pp. 191-200, 2011.
[11] K. Czarnecki and K. Pietroszek, "Verifying Feature-Based Model Templates against Well-Formedness OCL Constraints," Proc. Fifth Int'l Conf. Generative Programming and Component Eng., pp. 211-220, 2006.
[12] P. Ebraert, A. Classen, P. Heymans, and T. D'Hondt, "Feature Diagrams for Change-Oriented Programming," Proc. 10th Int'l Conf. Feature Interactions, pp. 107-122, 2009.
[13] P. Ebraert, J. Vallejos, P. Costanza, E.V. Paesschen, and T. D'Hondt, "Change-Oriented Software Engineering," Proc. Int'l Conf. Dynamic Languages, pp. 3-24, 2007.
[14] M.D. Ernst, G.J. Badros, and D. Notkin, "An Empirical Analysis of C Preprocessor Use," IEEE Trans. Software Eng., vol. 28, no. 12, pp. 1146-1170, Dec. 2002.
[15] W.B. Frakes and K. Kang, "Software Reuse Research: Status and Future," IEEE Trans. Software Eng., vol. 31, no. 7, pp. 529-536, July 2005.
[16] I. Godil and H.-A. Jacobsen, "Horizontal Decomposition of Prevayler," Proc. 15th Conf. Centre for Advanced Studies on Collaborative Research, pp. 83-100, 2005.
[17] W.G. Griswold, J.J. Yuan, and Y. Kato, "Exploiting the Map Metaphor in a Tool for Software Evolution," Proc. 23rd Int'l Conf. Software Eng., pp. 265-274, 2001.
[18] M. Harman, D. Binkley, K. Gallagher, N. Gold, and J. Krinke, "Dependence Clusters in Source Code," ACM Trans. Programming Languages and Systems, vol. 32, no. 1, pp. 1-33, 2009.
[19] M. Harman and R. Hierons, "An Overview of Program Slicing," Software Focus, vol. 2, no. 3, pp. 85-92, 2001.
[20] A. Igarashi, B.C. Pierce, and P. Wadler, "Featherweight Java: A Minimal Core Calculus for Java and GJ," ACM Trans. Programming Languages and Systems, vol. 23, no. 3, pp. 396-450, 2001.
[21] D. Janzen and K.D. Volder, "Navigating and Querying Code without Getting Lost," Proc. Second Int'l Conf. Aspect-Oriented Software Development, pp. 178-187, 2003.
[22] C. Kästner and S. Apel, "Type-Checking Software Product Lines a Formal Approach," Proc. 23rd Int'l Conf. Automated Software Eng., pp. 258-267, 2008.
[23] C. Kästne, S. Apel, and D. Batory, "A Case Study Implementing Features Using AspectJ," Proc. 11th Int'l Software Product Line Conf., pp. 223-232, 2007.
[24] C. Kästner, S. Apel, and M. Kuhlemann, "Granularity in Software Product Lines," Proc. 30th Int'l Conf. Software Eng., pp. 311-320, 2008.
[25] C. Kästner, S. Apel, S.S. ur Rahman, M. Rosenmüller, D. Batory, and G. Saake, "On the Impact of the Optional Feature Problem: Analysis and Case Studies," Proc. 13th Int'l Software Product Line Conf., pp. 181-190, 2009.
[26] C. Kästner, S. Trujillo, and S. Apel, "Visualizing Software Product Line Variabilities in Source Code," Proc. Second Int'l Workshop Visualisation in Software Product Line Eng., pp. 303-313, 2008.
[27] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W.G. Griswold, "An Overview of AspectJ," Proc. 15th European Conf. Object-Oriented Programming, pp. 327-355, 2001.
[28] C.W. Krueger, "Easing the Transition to Software Mass Customization," Proc. Fourth Int'l Workshop Software Product-Family Eng., pp. 282-293, 2001.
[29] A.F. Layouni, L. Logrippo, and K.J. Turner, "Conflict Detection in Call Control Using First-Order Logic Model Checking," Proc. Ninth Int'l Conf. Feature Interactions in Software and Comm. Systems, pp. 66-82, 2007.
[30] G.T. Leavens, Y. Cheon, C. Clifton, C. Ruby, and D.R. Cok, "How the Design of JML Accommodates Both Runtime Assertion Checking and Formal Verification," Science of Computer Programming, vol. 55, nos. 1-3, pp. 185-208, 2005.
[31] J. Liu, D. Batory, and C. Lengauer, "Feature Oriented Refactoring of Legacy Applications," Proc. 28th Int'l Conf. Software Eng., pp. 112-121, 2006.
[32] R. Lopez-Herrejon, D. Batory, and W.R. Cook, "Evaluating Support for Features in Advanced Modularization Technologies," Proc. 19th European Conf. Object-Oriented Programming, pp. 169-194, 2005.
[33] G.C. Murphy, A. Lai, R.J. Walker, and M.P. Robillard, "Separating Features in Source Code: An Exploratory Study," Proc. 23rd Int'l Conf. Software Eng., pp. 275-284, 2001.
[34] M. Nassau, S. Oliveira, and M.T. Valente, "Guidelines for Enabling the Extraction of Aspects from Existing Object-Oriented Code," J. Object Technology, vol. 8, no. 3, pp. 1-19, 2009.
[35] M. Nassau and M.T. Valente, "Object-Oriented Transformations for Extracting Aspects," Information and Software Technology, vol. 51, no. 1, pp. 138-149, 2009.
[36] D.L. Parnas, "On the Design and Development of Program Families," IEEE Trans. Software Eng., vol. 2, no. 1, pp. 1-9, Mar. 1976.
[37] J.E. Robbins and D.F. Redmiles, "Cognitive Support, UML Adherence, and XMI Interchange in Argo/UML," Information and Software Technology, vol. 42, no. 2, pp. 79-89, 2000.
[38] M.P. Robillard and G.C. Murphy, "Concern Graphs: Finding and Describing Concerns Using Structural Program Dependencies," Proc. 24th Int'l Conf. Software Eng., pp. 406-416, 2002.
[39] M.P. Robillard and G.C. Murphy, "Representing Concerns in Source Code," ACM Trans. Software Eng. and Methodology, vol. 16, no. 1, pp. 1-38, 2007.
[40] S. Soares, F. Calheiros, V. Nepomuceno, A. Menezes, P. Borba, and V. Alves, "Supporting Software Product Lines Development: FLiP —Product Line Derivation Tool," Proc. 23rd Conf. Object-Oriented Programming, Systems, Languages, and Applications, Tool Demonstrations, pp. 737-738, 2008.
[41] H. Spencer, "#ifdef Considered Harmful, or Portability Experience with C News," Proc. USENIX Conf., pp. 185-197, 1992.
[42] V. Sugumaran, S. Park, and K.C. Kang, "Introduction to the Special Issue on Software Product Line Engineering," Comm. ACM, vol. 49, no. 12, pp. 28-32, 2006.
[43] S. Thaker, D. Batory, D. Kitchin, and W. Cook, "Safe Composition of Product Lines," Proc. Sixth Int'l Conf. Generative Programming and Component Eng., pp. 95-104, 2007.
[44] M.T. Valente, C. Couto, J. Faria, and S. Soares, "On the Benefits of Quantification in AspectJ Systems," J. Brazilian Computer Soc., vol. 16, no. 2, pp. 133-146, 2010.
[45] J. van Gurp, J. Bosch, and M. Svahnberg, "On the Notion of Variability in Software Product Lines," Proc. IEEE/IFIP Second Working Conf. Software Architecture, pp. 45-54, 2001.
[46] M. Weiser, "Program Slicing," Proc. Fifth Int'l Conf. Software Eng., pp. 439-449, 1981.
35 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool