Análise Estática Ciente de Evolução de Linhas de Produtos de Software
Linhas de Produtos de Software, Análise de Linhas de Produtos, Evolução
de Software, Programação Funcional, Memoização.
A necessidade de lidar com a variabilidade durante a análise das Linhas de Produtos de
Software (LPS) é intrínseca, pois o número de combinações de produtos válidos pode
ser uma função exponencial em relação ao número de características. Além disso, à
medida que uma LPS evolui, os resultados das análises anteriores poderiam ser usados
para otimizar os cálculos. Entretanto, estas oportunidades de reúso são frequentemente
descartadas pelas técnicas de análise de LPS presentes no atual estado da arte. Este
trabalho propõe um método para embutir memoização em análises estáticas de Control-
Flow Graph (CFG) implementadas em Haskell e reescritas para serem aplicadas em LPS.
O método memoizado proposto foi usado para transformar seis análises estáticas de CFG
levantadas para LPSs, e comparou-se o desempenho destas em relação às suas contrapartes
sem memoização em um conjunto de dez versões da LPS BusyBox. Verificou-se que esta
técnica de memoização foi eficiente em reusar os resultados das análises aplicadas em
revisões anteriores, com reduções de tempo total computando análises de até duas ordens
de magnitude em relação às análises sem memoização, tendo impacto limitado no uso de
armazenamento dos resultados memoizados.