4. Empirical Findings and Analysis
4.5 Ownership Attractiveness
Os defeitos de um software podem ser introduzidos em qualquer instante durante o pro- cesso de desenvolvimento. Portanto, ´e essencial que eles sejam detectados o mais cedo poss´ıvel, uma vez que o custo relativo para a sua corre¸c˜ao ´e maior quanto mais tarde eles forem detectados [14]. Sendo assim, as atividades de verifica¸c˜ao e valida¸c˜ao ocorrem em todos os est´agios do processo de desenvolvimento de um software, come¸cando desde a revis˜ao dos requisitos e continuando at´e o teste do produto para certificarem que esse produto atende `a sua especifica¸c˜ao e entrega a funcionalidade esperada pelo cliente.
Em geral, os termos Verifica¸c˜ao e Valida¸c˜ao (V&V) s˜ao utilizados como sinˆonimos, mas essa utiliza¸c˜ao n˜ao corresponde `a realidade, pois os dois termos possuem abrangˆencias diferentes. A verifica¸c˜ao envolve a garantia de que o software est´a de acordo com suas especifica¸c˜oes. A valida¸c˜ao, por outro lado, deve assegurar que o sistema de software atenda `as expectativas do cliente [120], [136], [14], [118].
No que tange a V&V para LPSs, este trabalho de pesquisa foca essencialmente a modelagem dos MCs. Nesse caso, a verifica¸c˜ao corresponde ao processo de determina¸c˜ao de que um modelo representa uma descri¸c˜ao conceitual da especifica¸c˜ao dos requisitos. A valida¸c˜ao corresponde ao processo de determina¸c˜ao do grau em que um modelo ´e uma representa¸c˜ao precisa do mundo real a partir da perspectiva da utiliza¸c˜ao prevista [124] e [107]. De acordo com Salinesi et al. [127], a dificuldade existente na verifica¸c˜ao dos MCs resulta do fato de que a sua semˆantica ´e representada por um conjunto de MCs de produtos impl´ıcitos e qualquer erro introduzido no MC pode afetar esses produtos ou a habilidade de uma LPS em gerar produtos corretos.
dutos de uma LPS, com rela¸c˜ao `as variabilidades e restri¸c˜oes especificadas, permanece desafiadora, em especial, quando a checagem ou verifica¸c˜ao autom´atica dessas configura- ¸c˜oes ´e considerada [23].
Al´em disso, verificar a corretude e a consistˆencia dos MCs ´e uma tarefa pro- pensa a erros e invi´avel para modelos de grande escala. Por esse motivo, v´arios trabalhos de pesquisa tˆem surgido nessa ´area de LPSs [16], [23], dentre outros. Benavides et al. [22] realizaram uma revis˜ao na literatura, cujo objetivo ´e investigar os estudos que prop˜oem abordagens para analisar os MCs. De acordo com essa revis˜ao, os tipos de opera¸c˜oes que podem ser realizadas durante a verifica¸c˜ao dos MCs s˜ao:
Modelo nulo recebe como entrada um MC e retorna um valor informando se tal modelo ´e nulo ou n˜ao. Um MC ´e nulo se ele n˜ao representa nenhum produto.
Produto v´alido recebe como entrada um MC e um produto, e retorna um valor que determina se o produto pertence ao conjunto de produtos representado por um MC. Essa opera¸c˜ao tamb´em ´e chamada na literatura de verifica¸c˜ao de uma configura- ¸c˜ao v´alida, sistema ´unico v´alido, consistˆencia da configura¸c˜ao, compatibilidade de caracter´ısticas, verifica¸c˜ao do produto, e completude da especifica¸c˜ao do produto. Configura¸c˜ao parcial v´alida recebe como entrada um MC e uma configura¸c˜ao parcial
e retorna um valor informando se a configura¸c˜ao ´e v´alida;
Todos os produtos recupera todos os produtos que podem ser configurados a partir de um MC. Apesar de ser considerada uma opera¸c˜ao simples quando o n´umero de produtos ´e pequeno, em geral, ´e invi´avel realizar essa opera¸c˜ao com um n´umero elevado de produtos. Essa opera¸c˜ao tamb´em ´e referenciada na literatura como todas as configura¸c˜oes v´alidas e lista de produtos.
Calcular o n´umero total de produtos retorna o n´umero total de produtos de um MC e revela a flexibilidade e complexidade da LPS, pois quanto maior o n´umero de pro- dutos, mais flex´ıvel e mais complexa ´e a LPS. Essa opera¸c˜ao tamb´em ´e referenciada na literatura como grau de varia¸c˜ao.
Filtro tem como entrada um MC e uma configura¸c˜ao, e retorna o conjunto de produtos que pode ser derivado do modelo, incluindo a configura¸c˜ao de entrada.
Detec¸c˜ao de anomalias tem como entrada um MC e retorna as anomalias detectadas. Foram identificados trˆes tipos principais de anomalias em MCs relatados na litera- tura. S˜ao eles:
1. caracter´ıstica morta, nunca aparece em nenhuma configura¸c˜ao v´alida de um MC.
2. caracter´ıstica opcional falsa, quando ´e inclu´ıda em todos os produtos da LPS, apesar de ser modelada como opcional.
3. cardinalidade errada, quando n˜ao pode ser instanciada.
Explica¸c˜oes retorna uma explica¸c˜ao quando um MC ´e considerado incorreto ou inconsis- tente. Em geral, as ferramentas automatizadas s˜ao capazes de responder se um MC ´e correto, por´em, encontrar a origem do problema ´e um grande desafio. Fornecer explica¸c˜oes n˜ao ´e um problema trivial, pois ´e necess´ario informar a origem m´ınima do problema e fornecer uma explica¸c˜ao para a corre¸c˜ao do mesmo.
Explica¸c˜oes corretivas tem como entrada um MC e uma opera¸c˜ao de an´alise e retorna um conjunto de explica¸c˜oes corretivas indicando altera¸c˜oes a serem feitas nas entra- das originais, a fim de alterar a sa´ıda da opera¸c˜ao. Normalmente, uma explica¸c˜ao corretiva oferece sugest˜oes para solucionar um problema.
Rela¸c˜oes do MC tem como entrada dois MCs diferentes e retorna um valor informando como os modelos est˜ao relacionados. O conjunto de caracter´ısticas em ambos os modelos n˜ao ´e necessariamente o mesmo. Essa opera¸c˜ao ´e ´util para determinar como um modelo evoluiu ao longo do tempo. As poss´ıveis rela¸c˜oes entre os dois MCs incluem refatora¸c˜ao, generaliza¸c˜ao, especializa¸c˜ao e edi¸c˜ao arbitr´aria.
Caracter´ısticas n´ucleo recebe um MC como entrada e retorna o conjunto de caracte- r´ısticas que fazem parte de todos os produtos da LPS.
Caracter´ısticas variantes recebe um MC como entrada e retorna o conjunto de ca- racter´ısticas variantes do modelo. Caracter´ısticas variantes s˜ao aquelas que n˜ao aparecem em todos os produtos da LPS.
Conjuntos atˆomicos recebe um MC como entrada e retorna os conjuntos atˆomicos do modelo. Um conjunto atˆomico ´e um grupo de caracter´ısticas que podem ser tratadas como uma unidade. A ideia intuitiva por tr´as dos conjuntos atˆomicos ´e que as
caracter´ısticas obrigat´orias e suas caracter´ısticas pai sempre aparecem juntas em produtos e, portanto, os mesmos podem ser agrupados sem alterar o resultado de certas opera¸c˜oes. Uma vez que os conjuntos atˆomicos s˜ao calculados, podem ser usados para criar uma vers˜ao reduzida do modelo, substituindo cada caracter´ıstica pelo conjunto atˆomico que o cont´em.
An´alise das dependˆencias recebe um MC e uma configura¸c˜ao parcial como entrada e retorna uma nova configura¸c˜ao com as caracter´ısticas que devem ser selecionadas ou removidas como resultado da propaga¸c˜ao de restri¸c˜oes no modelo.
Normaliza¸c˜ao retorna um MC normalizado. A justificativa ´e que o mesmo conjunto de produtos pode ser especificado usando MCs diferentes. Isso leva `a necessidade de um processo de simplifica¸c˜ao ou normaliza¸c˜ao em que qualquer MC pode ser traduzido em um modelo canˆonico.