Improving Modular Reasoning on Preprocessor-Based Systems

  • Jean Carlos de Carvalho Melo UFPE
  • Paulo Henrique Monteiro Borba UFPE

Resumo


Preprocessors are often used to implement the variability of a Software Product Line (SPL). Despite their widespread use, they have several drawbacks like code pollution, no separation of concerns, and error-prone. Virtual Separationof Concerns (VSoC) has been used to address some of thesepreprocessor problems by allowing developers to hide featurecode not relevant to the current maintenance task. However, different features eventually share the same variables and methods, so VSoC does not modularize features, since developers do not know anything about hidden features. Thus, the maintenance of one feature might break another. Emergent Interfaces (EI) capture dependencies between a feature maintenance point and parts of other feature implementation, but they do not provide an overall feature interface considering all parts in an integrated way. Thus, we still have the feature modularization problem. To address that, we propose Emergent Feature Interfaces (EFI) that complement EI by treating feature as a module in order to improve modular reasoning on preprocessor-based systems. EFI capture dependencies among entire features, with the potential of improving productivity. Our proposal, implemented in an opensource tool called Emergo, is evaluated with preprocessor-based systems. The results of our study suggest the feasibility and usefulness of the proposed approach.
Palavras-chave: Graphical user interfaces, Maintenance engineering, Contracts, Java, Optimized production technology, Feature extraction, Software, Preprocessors, Software Product Line, Modular Reasoning, Emergent Feature Interfaces
Publicado
29/09/2013
MELO, Jean Carlos de Carvalho; BORBA, Paulo Henrique Monteiro. Improving Modular Reasoning on Preprocessor-Based Systems. In: SIMPÓSIO BRASILEIRO DE COMPONENTES, ARQUITETURAS E REUTILIZAÇÃO DE SOFTWARE (SBCARS), 7. , 2013, Brasília/DF. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2013 . p. 11-19.