skip to main content
research-article

On the impact of feature dependencies when maintaining preprocessor-based software product lines

Published:22 October 2011Publication History
Skip Abstract Section

Abstract

During Software Product Line (SPL) maintenance tasks, Virtual Separation of Concerns (VSoC) allows the programmer to focus on one feature and hide the others. However, since features depend on each other through variables and control-flow, feature modularization is compromised since the maintenance of one feature may break another. In this context, emergent interfaces can capture dependencies between the feature we are maintaining and the others, making developers aware of dependencies. To better understand the impact of code level feature dependencies during SPL maintenance, we have investigated the following two questions: how often methods with preprocessor directives contain feature dependencies? How feature dependencies impact maintenance effort when using VSoC and emergent interfaces? Answering the former is important for assessing how often we may face feature dependency problems. Answering the latter is important to better understand to what extent emergent interfaces complement VSoC during maintenance tasks. To answer them, we analyze 43 SPLs of different domains, size, and languages. The data we collect from them complement previous work on preprocessor usage. They reveal that the feature dependencies we consider in this paper are reasonably common in practice; and that emergent interfaces can reduce maintenance effort during the SPL maintenance tasks we regard here.

References

  1. V. Alves. Implementing Software Product Line Adoption Strategies. PhD thesis, Federal University of Pernambuco, Recife, Brazil, March 2007.Google ScholarGoogle Scholar
  2. V. Alves, P. M. Jr., L. Cole, P. Borba, and G. Ramalho. Extracting and Evolving Mobile Games Product Lines. In Proceedings of the 9th International Software Product Line Conference (SPLC'05), volume 3714 of LNCS, pages 70--81. Springer-Verlag, September 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. P. Clements and L. Northrop. Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. D. Ernst, G. J. Badros, and D. Notkin. An empirical analysis of c preprocessor use. IEEE Transactions on Software Engineering, 28:1146--1170, December 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Kästner and S. Apel. Type-checking software product lines - a formal approach. In Proceedings of the 23rd International Conference on Automated Software Engineering (ASE'08), pages 258--267. IEEE Computer Society, September 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Kästner and S. Apel. Virtual separation of concerns - a second chance for preprocessors. Journal of Object Technology, 8(6):59--78, 2009.Google ScholarGoogle ScholarCross RefCross Ref
  7. C. Kästner, S. Apel, and M. Kuhlemann. Granularity in Software Product Lines. In Proceedings of the 30th International Conference on Software Engineering (ICSE'08), pages 311--320, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Kästner, S. Apel, T. Thüm, and G. Saake. Type checking annotation-based product lines. ACM Transactions on Software Engineering and Methodology (TOSEM'11), 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Kenner, C. Kästner, S. Haase, and T. Leich. Typechef: toward type checking #ifdef variability in c. In Proceedings of the 2nd International Workshop on Feature-Oriented Software Development (FOSD'10), pages 25--32, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. C. H. Kim, D. Batory, and S. Khurshid. Reducing combinatorics in testing product lines. In Proceeding of the 10th International Conference on Aspect Oriented Software Development (AOSD'11), New York, NY, USA, 2011. ACM. To appear. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. R. Kolb, D. Muthig, T. Patzke, and K. Yamauchi. A Case Study in Refactoring a Legacy Component for Reuse in a Product Line. In Proceedings of the 21st International Conference on Software Maintenance (ICSM'05), pages 369--378, Washington, DC, USA, 2005. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. D. LaToza and B. A. Myers. Developers ask reachability questions. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE '10), pages 185--194, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Liebig, S. Apel, C. Lengauer, C. Kästner, and M. Schulze. An analysis of the variability in forty preprocessor-based software product lines. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE'10), pages 105--114, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. J. Liebig, C. Kästner, and S. Apel. Analyzing the discipline of preprocessor annotations in 30 million lines of c code. In Proceeding of the 10th International Conference on Aspect Oriented Software Development (AOSD'11), pages 191--202, New York, NY, USA, March 2011. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. D. L. Parnas. On the criteria to be used in decomposing systems into modules. CACM, 15(12):1053--1058, 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. K. Pohl, G. Bockle, and F. J. van der Linden. Software Product Line Engineering. Springer, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. Ribeiro, H. Pacheco, L. Teixeira, and P. Borba. Emergent Feature Modularization. In Onward! 2010, affiliated with ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH'10), pages 11--18, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. H. Spencer and G. Collyer. #ifdef considered harmful, or portability experience with C news. In Proceedings of the Usenix Summer 1992 Technical Conference, pages 185--198, Berkeley, CA, USA, June 1992. Usenix Association.Google ScholarGoogle Scholar
  19. S. Trujillo, D. Batory, and O. Diaz. Feature refactoring a multi-representation program into a product line. In Proceedings of the 5th International Conference on Generative Programming and Component Engineering (GPCE'06), pages 191--200, New York, NY, USA, 2006. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. On the impact of feature dependencies when maintaining preprocessor-based software product lines

        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 47, Issue 3
          GCPE '11
          March 2012
          179 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/2189751
          Issue’s Table of Contents
          • cover image ACM Conferences
            GPCE '11: Proceedings of the 10th ACM international conference on Generative programming and component engineering
            October 2011
            194 pages
            ISBN:9781450306898
            DOI:10.1145/2047862

          Copyright © 2011 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 22 October 2011

          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!