Abstract
Physical separation with class refinements and method refinements à la AHEAD and virtual separation using annotations à la #ifdef or CIDE are two competing implementation approaches for software product lines with complementary advantages. Although both approaches have been mainly discussed in isolation, we strive for an integration to leverage the respective advantages. In this paper, we lay the foundation for such an integration by providing a model that supports both physical and virtual separation and by describing refactorings in both directions. We prove the refactorings complete, so every virtually separated product line can be automatically transformed into a physically separated one (replacing annotations by refinements) and vice versa. To demonstrate the feasibility of our approach, we have implemented the refactorings in our tool CIDE and conducted four case studies.
- B. Adams, W. De Meuter, H. Tromp, and A. E. Hassan. Can We Refactor Conditional Compilation into Aspects? In Proc. Int'l Conf. Aspect-Oriented Software Development (AOSD), pages 243--254. 2009 Google Scholar
Digital Library
- S. Apel. How AspectJ is Used: An Analysis of Eleven AspectJ Programs. Journal of Object Technology (JOT), 9(1), 2010.Google Scholar
- S. Apel and C. Kästner. An Overview of Feature-Oriented Software Development. Journal of Object Technology (JOT), 8(5):49--84, 2009.Google Scholar
- S. Apel, C. Kästner, and D. Batory. Program Refactoring using Functional Aspects. In Proc. Int'l Conf. Generative Programming and Component Engineering (GPCE), pages 161--170. 2008. Google Scholar
Digital Library
- S. Apel, C. Kästner, and C. Lengauer. Feature Featherweight Java: A Calculus for Feature-Oriented Programming and Stepwise Refinement. In Proc. Int'l Conf. Generative Programming and Component Engineering (GPCE), pages 101--112. 2008. Google Scholar
Digital Library
- S. Apel, C. Kästner, and C. Lengauer. FeatureHouse: Language-Independent, Automated Software Composition. In Proc. Int'l Conf. Software Engineering (ICSE), pages 221--231. 2009. Google Scholar
Digital Library
- S. Apel, C. Kästner, and S. Trujillo. On the Necessity of Empirical Studies in the Assessment of Modularization Mechanisms for Crosscutting Concerns. In Proc. ICSE Workshop on Assessment of Contemporary Modularization Techniques (ACoM), 2007. Google Scholar
Digital Library
- S. Apel, T. Leich, and G. Saake. Aspectual Feature Modules. IEEE Trans. Softw. Eng. (TSE), 34(2):162--180, 2008. Google Scholar
Digital Library
- L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley, 1998. Google Scholar
Digital Library
- D. Batory. Feature Models, Grammars, and Propositional Formulas. In Proc. Int'l Software Product Line Conference (SPLC), pages 7--20. 2005. Google Scholar
Digital Library
- D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE Trans. Softw. Eng. (TSE), 30(6):355--371, 2004. Google Scholar
Digital Library
- I. Baxter and M. Mehlich. Preprocessor Conditional Removal by Simple Partial Evaluation. In Proc.Working Conf. Reverse Engineering (WCRE), pages 281--290. 2001. Google Scholar
Digital Library
- A. Bergel, S. Ducasse, and O. Nierstrasz. Classbox/J: Controlling the Scope of Change in Java. In Proc. Int'l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 177--189. 2005. Google Scholar
Digital Library
- D. Beuche, H. Papajewski, and W. Schröder-Preikschat. Variability Management with Feature Models. Sci. Comput. Program., 53(3):333--352, 2004. Google Scholar
Digital Library
- S. Breu. Aspect Mining Using Event Traces. In Proc. Int'l Conf. Automated Software Engineering (ASE), pages 310--315. 2004. Google Scholar
Digital Library
- M. Bruntink, A. van Deursen, M. D'Hondt, and T. Tourwé. Simple Crosscutting Concerns Are Not So Simple: Analysing Variability in Large-Scale Idioms-Based Implementations. In Proc. Int'l Conf. Aspect-Oriented Software Development (AOSD), pages 199--211. 2007. Google Scholar
Digital Library
- P. Clements and C. Krueger. Point/Counterpoint: Being Proactive Pays Off/Eliminating the Adoption Barrier. IEEE Software, 19(4):28--31, 2002. Google Scholar
Digital Library
- K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley, 2000. Google Scholar
Digital Library
- K. Czarnecki and K. Pietroszek. Verifying Feature-Based Model Templates Against Well-Formedness OCL Constraints. In Proc. Int'l Conf. Generative Programming and Component Engineering (GPCE), pages 211--220. 2006. Google Scholar
Digital Library
- B. Delaware, W. Cook, and D. Batory. Fitting the Pieces Together: A Machine-Checked Model of Safe Composition. In Proc. Europ. Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE), 2009. Google Scholar
Digital Library
- M. Ernst, G. Badros, and D. Notkin. An Empirical Analysis of C Preprocessor Use. IEEE Trans. Softw. Eng. (TSE), 28(12):1146--1170, 2002. Google Scholar
Digital Library
- M. Fowler. Refactoring. Improving the Design of Existing Code. Addison-Wesley, 1999. Google Scholar
Digital Library
- S. Jarzabek, P. Bassett, H. Zhang, and W. Zhang. XVCL: XMLbased Variant Configuration Language. In Proc. Int'l Conf. Software Engineering (ICSE), pages 810--811. 2003. Google Scholar
Digital Library
- C. Kästner and S. Apel. Integrating Compositional and Annotative Approaches for Product Line Engineering. In Proc. GPCE Workshop on Modularization, Composition and Generative Techniques for Product Line Engineering, pages 35--40, 2008.Google Scholar
- C. Kästner and S. Apel. Type-checking Software Product Lines -- A Formal Approach. In Proc. Int'l Conf. Automated Software Engineering (ASE), pages 258--267. 2008. Google Scholar
Digital Library
- C. Kästner, S. Apel, and M. Kuhlemann. Granularity in Software Product Lines. In Proc. Int'l Conf. Software Engineering (ICSE), pages 311--320. 2008. Google Scholar
Digital Library
- C. Kästner, S. Apel, and M. Kuhlemann. LJAR: A Model of Refactoring Physically and Virtually Separated Features. Technical Report 8/09, School of Comp. Science, University of Magdeburg, Germany, 2009.Google Scholar
- C. Kästner, S. Apel, S. Trujillo, M. Kuhlemann, and D. Batory. Guaranteeing Syntactic Correctness for all Product Line Variants: A Language-Independent Approach. In Proc. Int'l Conf. Objects, Models, Components, Patterns (TOOLS EUROPE), pages 175--194. 2009.Google Scholar
Cross Ref
- G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), pages 220--242. 1997.Google Scholar
- C. H. P. Kim, C. Kästner, and D. Batory. On the Modularity of Feature Interactions. In Proc. Int'l Conf. Generative Programming and Component Engineering (GPCE), pages 23--34. 2008. Google Scholar
Digital Library
- C. Krueger. Easing the Transition to Software Mass Customization. In Proc. Int'l Workshop on Software Product-Family Eng., pages 282--293. 2002. Google Scholar
Digital Library
- M. Kuhlemann, D. Batory, and S. Apel. Refactoring Feature Modules. In Proc. Int'l Conference on Software Reuse. 2009. Google Scholar
Digital Library
- J. Liu, D. Batory, and C. Lengauer. Feature Oriented Refactoring of Legacy Applications. In Proc. Int'l Conf. Software Engineering (ICSE), pages 112--121. 2006. Google Scholar
Digital Library
- R. Lopez-Herrejon and D. Batory. A Standard Problem for Evaluating Product-Line Methodologies. In Proc. Int'l Conf. Generative and Component-Based Software Engineering, pages 10--24. 2001. Google Scholar
Digital Library
- H. Masuhara and G. Kiczales. Modeling Crosscutting in Aspect-Oriented Mechanisms. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), pages 2--28. 2003.Google Scholar
Cross Ref
- G. Murphy et al. Separating Features in Source Code: an Exploratory Study. In Proc. Int'l Conf. Software Engineering (ICSE), pages 275--284. 2001. Google Scholar
Digital Library
- D. Muthig and T. Patzke. Generic Implementation of Product Line Components. In Proc. Net.ObjectDays, pages 313--329. 2003. Google Scholar
Digital Library
- K. Pohl, G. Böckle, and F. J. van der Linden. Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag, 2005. Google Scholar
Digital Library
- D. Poshyvanyk et al. Feature Location Using Probabilistic Ranking of Methods Based on Execution Scenarios and Information Retrieval. IEEE Trans. Softw. Eng. (TSE), 33(6):420--432, 2007. Google Scholar
Digital Library
- C. Prehofer. Feature-Oriented Programming: A Fresh Look at Objects. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), pages 419--443. 1997.Google Scholar
Cross Ref
- A. Reynolds, M. E. Fiuczynski, and R. Grimm. On the Feasibility of an AOSD Approach to Linux Kernel Extensions. In Proc. AOSD Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS), pages 1--7. 2008. Google Scholar
Digital Library
- D. B. Roberts. Practical Analysis for Refactoring. PhD thesis, University of Illinois at Urbana-Champaign, 1999. Google Scholar
Digital Library
- M. Robillard and G. Murphy. Concern Graphs: Finding and Describing Concerns Using Structural Program Dependencies. In Proc. Int'l Conf. Software Engineering (ICSE), pages 406--416. 2002. Google Scholar
Digital Library
- H. Spencer and G. Collyer. #ifdef Considered Harmful or Portability Experience With C News. In Proc. USENIX Conf., pages 185--198, 1992.Google Scholar
- R. Strniaa, P. Sewell, and M. Parkinson. The Java Module System: Core Design and Semantic Definition. In Proc. Int'l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 499--514. 2007. Google Scholar
Digital Library
- S. Thaker, D. Batory, D. Kitchin, and W. Cook. Safe Composition of Product Lines. In Proc. Int'l Conf. Generative Programming and Component Engineering (GPCE), pages 95--104. 2007. Google Scholar
Digital Library
- M. Vittek. Refactoring Browser with Preprocessor. In Proc. European Conf. on Software Maintenance and Reengineering (CSMR), pages 101--110. 2003. Google Scholar
Digital Library
Index Terms
A model of refactoring physically and virtually separated features
Recommendations
A model of refactoring physically and virtually separated features
GPCE '09: Proceedings of the eighth international conference on Generative programming and component engineeringPhysical separation with class refinements and method refinements à la AHEAD and virtual separation using annotations à la #ifdef or CIDE are two competing implementation approaches for software product lines with complementary advantages. Although both ...
Feature-oriented refinement of models, metamodels and model transformations
FOSD '09: Proceedings of the First International Workshop on Feature-Oriented Software DevelopmentDone well, the blend of Model Driven Development (MDD) and Software Product Lines (SPL) offers a promising approach, mixing abstraction from MDD and variability from SPL. Although Model Driven Product Lines have flourished recently, the focus so far has ...
Feature refactoring a multi-representation program into a product line
GPCE '06: Proceedings of the 5th international conference on Generative programming and component engineeringFeature refactoring is the process of decomposing a program into aset of modules, called features, that encapsulate increments in program functionality. Different compositions of features yield different programs. As programs are defined using multiple ...







Comments