Uma técnica para compilar sistemas conﬁguráveis com #ifdefs baseada no impacto da mudança. - BRASILEIRO, Larissa Nadja Braz. (2016)
Sistemas configuráveis tipicamente usam #ifdefs para denotar variabilidade. Gerar e compilar todas as conﬁgurações de um sistema pode consumir tempo. Uma alternativa consiste em usar analisadores sintáticos conscientes de variabilidade, como TypeChef. Porém, eles podem não escalar. Na prática, desenvolvedores podem utilizar estratégias de amostragem (sampling) para compilar apenas um subconjunto das conﬁgurações. Este trabalho propõe uma técnica para compilar sistemas conﬁguráveis com #ifdefs baseada no impacto da mudança através da análise apenas das conﬁgurações impactadas por uma mudança de código. A técnica foi implementada em uma ferramenta chamada CHECKCONFIGMX, que reporta os novos erros de compilação introduzidos pela transformação. Um estudo empírico foi realizado para avaliar 3,913 transformações aplicadas aos 14 maiores arquivos dos sistemas conﬁguráveis BusyBox, Apache HTTPD, e Expat. CHECKCONFIGMX encontrou 595 erros de compilação de 20 tipos introduzidos por 41 desenvolvedores em 214 commits (5.46% das transformações analisadas). No estudo realizado, a ferramenta reduziu ao menos 50% (uma média de 99%) o número de conﬁgurações compiladas em comparação à abordagem exaustiva, sem considerar feature models. CHECKCONFIGMX pode ajudar os desenvolvedores a reduzir o esforço de avaliar transformações de granularidade ﬁna aplicadas a sistemas conﬁguráveis com #ifdefs.