skip to main content
research-article

A model of refactoring physically and virtually separated features

Published:04 October 2009Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Apel. How AspectJ is Used: An Analysis of Eleven AspectJ Programs. Journal of Object Technology (JOT), 9(1), 2010.Google ScholarGoogle Scholar
  3. S. Apel and C. Kästner. An Overview of Feature-Oriented Software Development. Journal of Object Technology (JOT), 8(5):49--84, 2009.Google ScholarGoogle Scholar
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Apel, T. Leich, and G. Saake. Aspectual Feature Modules. IEEE Trans. Softw. Eng. (TSE), 34(2):162--180, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Batory. Feature Models, Grammars, and Propositional Formulas. In Proc. Int'l Software Product Line Conference (SPLC), pages 7--20. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE Trans. Softw. Eng. (TSE), 30(6):355--371, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. I. Baxter and M. Mehlich. Preprocessor Conditional Removal by Simple Partial Evaluation. In Proc.Working Conf. Reverse Engineering (WCRE), pages 281--290. 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. Beuche, H. Papajewski, and W. Schröder-Preikschat. Variability Management with Feature Models. Sci. Comput. Program., 53(3):333--352, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. Breu. Aspect Mining Using Event Traces. In Proc. Int'l Conf. Automated Software Engineering (ASE), pages 310--315. 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Clements and C. Krueger. Point/Counterpoint: Being Proactive Pays Off/Eliminating the Adoption Barrier. IEEE Software, 19(4):28--31, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Fowler. Refactoring. Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarCross RefCross Ref
  29. 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 ScholarGoogle Scholar
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Krueger. Easing the Transition to Software Mass Customization. In Proc. Int'l Workshop on Software Product-Family Eng., pages 282--293. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Kuhlemann, D. Batory, and S. Apel. Refactoring Feature Modules. In Proc. Int'l Conference on Software Reuse. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. H. Masuhara and G. Kiczales. Modeling Crosscutting in Aspect-Oriented Mechanisms. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), pages 2--28. 2003.Google ScholarGoogle ScholarCross RefCross Ref
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. D. Muthig and T. Patzke. Generic Implementation of Product Line Components. In Proc. Net.ObjectDays, pages 313--329. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. K. Pohl, G. Böckle, and F. J. van der Linden. Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. C. Prehofer. Feature-Oriented Programming: A Fresh Look at Objects. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), pages 419--443. 1997.Google ScholarGoogle ScholarCross RefCross Ref
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. D. B. Roberts. Practical Analysis for Refactoring. PhD thesis, University of Illinois at Urbana-Champaign, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. H. Spencer and G. Collyer. #ifdef Considered Harmful or Portability Experience With C News. In Proc. USENIX Conf., pages 185--198, 1992.Google ScholarGoogle Scholar
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. M. Vittek. Refactoring Browser with Preprocessor. In Proc. European Conf. on Software Maintenance and Reengineering (CSMR), pages 101--110. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A model of refactoring physically and virtually separated features

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 45, Issue 2
          GPCE '09
          February 2010
          182 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1837852
          Issue’s Table of Contents
          • cover image ACM Conferences
            GPCE '09: Proceedings of the eighth international conference on Generative programming and component engineering
            October 2009
            194 pages
            ISBN:9781605584942
            DOI:10.1145/1621607
            • General Chair:
            • Jeremy Siek,
            • Program Chair:
            • Bernd Fischer

          Copyright © 2009 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 4 October 2009

          Check for updates

          Qualifiers

          • research-article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!