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

  • Authors:
  • Márcio Ribeiro;Felipe Queiroz;Paulo Borba;Társis Tolêdo;Claus Brabrand;Sérgio Soares

  • Affiliations:
  • Federal University of Pernambuco, Recife, Brazil;Federal University of Pernambuco, Recife, Brazil;Federal University of Pernambuco, Recife, Brazil;Federal University of Pernambuco, Recife, Brazil;IT University of Copenhagen, Copenhagen, Denmark;Federal University of Pernambuco, Recife, Brazil

  • Venue:
  • Proceedings of the 10th ACM international conference on Generative programming and component engineering
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

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.