Feature interactions in highly configurable systems : a dynamic analysis approach with VarXplorer - Soares, Larissa Rocha (2019)
Sistemas altamente configuráveis (também conhecidos como linhas de produtos de software)fornecem oportunidades significativas de reuso, uma vez que eles adaptam variantes do sistema com base em um conjunto de features. Essas features podem interagir de maneiras indesejadas, o que pode resultar em falhas. Além disso, a maioria das interações não é facilmente detectável, já que especificações de interações entre features geralmente não são definidas, especificadas e documentadas em um projeto de software. O problema de interação entre features tem sido um assunto desafiador por anos. Apesar da existência de estudos que mapeiam essas interações, ainda não há muitos trabalhos sobre a compreensão de estratégias, atividades, artefatos e lacunas de pesquisa para interações em sistemas configuráveis. Desta forma, esta tese provê inicialmente um mapeamento sistemático de estudos por meio da análise de 40 trabalhos os quais foram classificados de acordo com os estágios do ciclo de vida de desenvolvimento e a solução de interação apresentada (detecção, resolução ou discussão de interações). Análises recentes têm focado na detecção de erros de interação de features a partir de especificações globais, ou seja, especificações que todas as configurações de um sistema configurável precisam cumprir. No entanto, especificações no nível de features são geralmente negligenciadas e raramente documentadas. Neste cenário, muitas abordagens não conseguem detectar todos os problemas de comportamento do sistema, especialmente erros não cobertos por especificações globais e erros que não resultam em uma falha ou outro comportamento facilmente observável. Em vez de partir de um conjunto de especificações como a maioria das abordagens, propomos inspecionar as interações de features à medida que são detectadas e classificálas gradativamente como benignas ou problemáticas. Nossa abordagem e ferramenta, VarXplorer, fornece um processo de inspeção que ajuda os desenvolvedores a distinguir as interações intencionais das interações que podem levar a bugs. Usamos a execução variacional para observar interações internas ao fluxo de controle e fluxo de dados de sistemas altamente configuráveis e propomos gráficos de interação de features como uma representação concisa de todas as interações entre pares de features. Por fim, realizamos dois estudos empíricos para avaliar como o processo de inspeção e os gráficos de interação de features podem ajudar os desenvolvedores a identificar interações suspeitas. O primeiro é um experimento controlado que investiga e compara a capacidade dos desenvolvedores ao identificar interações suspeitas com e sem o VarXplorer. O segundo foca no processo iterativo de execução de casos de teste e como ele proporciona uma análise de interações mais rápida e objetiva.