Checklist-based Inspection Technique for Feature Models Review Rafael M. de Mello, Eldanae N. Teixeira, Marcelo Schots, Cláudia M. L. Werner, Guilherme Horta Travassos PESC/COPPE – Universidade Federal do Rio de Janeiro Caixa Postal 68.511 – 21945-970 – Rio de Janeiro – RJ – Brasil Abstract— Software Product Line Engineering aims to ensure the correctness, completeness and consistency among its artifacts and the specified domain, in order to prevent the spread of defects for the products derived from this domain. Among initial artifacts of a software product line, feature models are artifacts generated in various domain engineering approaches. Although software inspection is highlighted as an effective review activity for detection of defects in software artifacts, mainly in the early models of software projects, a recent quasi-systematic review of literature indicated a lack of techniques to support the inspection of software product line artifacts, which include features models. Thus, this paper presents FMCheck, a checklist-based inspection technique to support the detection of defects on feature models. This technique was developed to be configurable and to be applied on several extensions of the original feature model notation presented by FODA approach, including the Odyssey-FEX notation, in particular. FMCheck was submitted to a proof of concept and to a further in vitro feasibility study, in which it could be seen the feasibility of FMCheck application and also that inspections applying FMCheck are more effective than ad-hoc inspections, when applied on four distinct domains. Keywords— Feature Model, Software Inspection, Domain Engineering, Software Reuse, Software Product Line, Experimental Software Engineering. Resumo— A Engenharia de Linha de Produtos de software visa garantir a corretude, completude e consistência de seus artefatos com o domínio especificado, visando evitar a propagação de defeitos para os produtos derivados para este domínio. Dentre os artefatos iniciais de uma linha de produtos de software, modelos de características (feature models) consistem em um artefato gerado em diversas abordagens de engenharia de domínio. Embora a inspeção de software destaque-se como uma atividade de revisão efetiva para a detecção de defeitos em artefatos de software, especialmente em modelos iniciais dos projetos de software, uma recente quasi-Revisão Sistemática de literatura indicou a carência de técnicas que apoiem a inspeção de artefatos de linha de produtos de software, incluindo modelos de características. Neste sentido, este trabalho apresenta FMCheck, uma técnica de inspeção baseada em checklist para apoiar a detecção de defeitos em feature models. A técnica foi elaborada para ser configurável, visando atender a diversas extensões da notação do modelo de características originalmente apresentada pela abordagem FODA, abrangendo a notação Odyssey-FEX, em particular. Esta técnica de inspeção foi submetida a uma prova de conceito e a um posterior estudo de viabilidade in vitro, onde pôde ser observado a sua viabilidade de utilização e que as inspeções com FMCheck apresentaram-se mais eficazes do que as inspeções ad-hoc, quando aplicadas a quatro domínios distintos. Palavras chaveFeature Model, Inspeção de Software, Engenharia de Domínio, Reutilização de Software, Linhas de Produtos de Software, Engenharia de Software Experimental. I. INTRODUÇÃO Se no desenvolvimento de software convencional os artefatos iniciais de um projeto precisam ser verificados por formarem a base para a construção de um software, no contexto do desenvolvimento para reutilização existe ainda o agravante de que um único artefato de domínio mal especificado pode levar à propagação de defeitos nos diversos produtos de uma Linha de Produtos de Software (LPS). Por esta razão, torna-se fundamental a execução de atividades de verificação para garantir que os defeitos identificados em artefatos de domínio não sejam propagados para as demais fases da engenharia de domínio, bem como para os produtos derivados a partir de uma LPS. A verificação de artefatos de software desde as fases iniciais do desenvolvimento do software pode ser realizada através de inspeções de software, que representam um recurso importante para promover tanto a qualidade do produto de software quanto à produtividade no seu desenvolvimento, viabilizando a detecção antecipada de defeitos antes da realização dos testes com consequente redução de retrabalho. Desde a introdução do processo de inspeção de software por [1], diversas pesquisas têm sido conduzidas buscando o aprimoramento e a sistematização do método de inspeção, incluindo a etapa de preparação para inspeção [2]; o processo de inspeção [3]; a definição de critérios para seleção dos inspetores [4]; critérios para decisão sobre reinspeção [5], infraestrutura de apoio ao processo [6] e o desenvolvimento de técnicas aplicadas em inspeções [7]. No que se refere a este último aspecto, a literatura técnica apresenta diversas técnicas para apoiar a detecção de defeitos em artefatos das fases iniciais do processo de desenvolvimento de software, incluindo checklists [8][9] e técnicas de leitura [10][11]. Entretanto, no contexto de reutilização de software, os resultados de uma quasi-revisão sistemática conduzida em 2011 indicaram a carência de tecnologia específica para a inspeção de artefatos produzidos durante o desenvolvimento de LPSs. Nesta revisão, apenas dois trabalhos referentes à verificação de modelos arquiteturais desenvolvidos para reúso foram identificados, sendo que apenas um deles trata-se de uma técnica de inspeção [12]. Esta técnica, porém, é voltada para modelos arquiteturais, não sendo aplicável aos demais artefatos de uma LPS. Em particular, um artefato gerado em diversas abordagens de engenharia de domínio é o modelo de características (feature model) deste domínio. Este artefato é voltado especificamente para o desenvolvimento para reúso e representa o conjunto de variabilidades de um domínio, i.e., suas similaridades e variabilidades, por meio de características. Pela definição de Kang et al. [13], uma característica representa “um aspecto, uma qualidade, ou uma