Caracterizando Fluxos Excepcionais em Linhas de Produto de Software
Linha de Produto de Software, Análise Estática de Código, Tratamento de Exceções.
O mecanismo de tratamento de exceções é amplamente utilizado para a
construção de sistemas robustos. No contexto de Linhas de Produto de
Software (LPSs) não é diferente. Uma vez que mecanismos de tratamento
de exceções estão embutidos nas principais linguagens de programação
(i.e., Java, C#, C++), podemos encontrar sinalizadores e tratadores de
exceção espalhados entre os artefatos de código associados a
características (do inglês: features) opcionais e obrigatórias de uma
LPS. Quando tratadores ou sinalizadores de exceções são adicionados a
uma LPS de forma não planejada, uma das possíveis conseqüências é a
geração de produtos falhos (i.e., produtos onde exceções lançadas por
características variáveis ou comuns são erroneamente capturadas, ou
que escapam a qualquer tratamento). Neste contexto, algumas perguntas
surgem: Como as exceções fluem entre as características variáveis e
alternativas de uma LPS? Podemos antecipar se uma instancia da LPS
possuirá falhas em seu comportamento excepcional? Com o objetivo de
responder a estas perguntas neste trabalho de mestrado realizamos um
estudo sistemático, baseado em inspeção de código e análise estática
de código, cujo objetivo foi caracterizar as principais formas em que
exceções fluem em LPSs, e analisar suas consequências. Para apoiar a
realização deste estudo desenvolvemos a ferramenta PLEA (Product Line
Exception Analyzer), uma ferramenta baseada em analise estática de
código que encontra os fluxos excepcionais de uma LPS, e caracteriza
estes fluxos de acordo com as características associadas aos
tratadores e sinalizadores. Resultados preliminares mostraram que
alguns tipos de fluxos excepcionais encontrados podem, realmente,
acarretar falhas no comportamento excepcional de sistemas; neste
estudo, por exemplo, foi detectada de forma consistente fluxos
lançados por uma característica opcional e capturado por outra.