On the Impact of Feature Dependencies when Maintaining Preprocessor-based Software Product Lines
Márcio Ribeiro, Felipe Queiroz, Paulo Borba, Társis Tolêdo, Claus Brabrand and Sérgio Soares
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.