• No results found

Cement Properties and Cement Slurry Design

4.1 Well Cementing

4.1.1 Cement Properties and Cement Slurry Design

Uma vez tendo extraído informações relacionada às abstrações do espaço de problema, conhecimento de configuração e espaço de solução de uma LPS, e armazenado as mesmas no SAM, a etapa seguinte da abordagem é instanciar a infraestrutura para promover a análise de propriedades do código da LPS. De forma a contemplar tal objetivo, ferramentas específicas de análises devem ser desenvolvidas a partir da infraestrutura.

A instanciação de uma dada ferramenta de análise a partir da infraestrutura envolve a implementação de novos módulos para seus pontos flexíveis ou o reuso de módulos previamente implementados para um de seus pontos de extensão. Diferentes ferramentas ou funcionalidades de análise de implementações de linhas de produto de software podem

ser implementadas usando a nossa infraestrutura. A seguir apresentamos exemplos de análises que podem ser contempladas pela nossa abordagem:

Rastrear impactos de mudança entre características, casos de uso e artefatos de implementação. O SAM possui a entidade mapeamento que descreve os relacionamentos entre as entidades que representam artefatos de implementação, casos de uso e características. Através dos relacionamentos de mapeamento obtidos é possível analisar os impactos de mudanças entre as entidades envolvidas, ou seja, podemos inferir quais serão as entidades afetadas ao realizar alterações em alguma das entidades. Um exemplo desse tipo de análise é o cenário em que um artefato de código implementa um conjunto de características, neste caso o conjunto de características pode ser afetado por modificações realizadas em artefatos que as implementam. O benefício dessa análise de impacto de mudanças para LPS é prover informações úteis para o planejamento das alterações a serem realizadas durante o desenvolvimento ou evolução da LPS, promovendo o rastreamento entre seus diferentes artefatos de modelagem e implementação.

Identificar restrições entre características por meio de relacionamentos de artefatos de implementação. As relações de dependências entre artefatos de implementação no espaço da solução podem gerar dependências entre entidades no espaço de problema. Por exemplo, características que não possuem uma associação direta podem estar correlacionadas indiretamente por meio de um relacionamento entre os artefatos que as implementam. Devido à separação entre espaço do problema e espaço da solução, estas dependências indiretas dificilmente serão identificadas analisando apenas uma das abstrações, porém ao realizar consultas no SAM proposto podemos cruzar informações de mapeamento entre abstrações dos espaços de problema e solução, e assim identificar relacionamentos indiretos. Esta análise contribui com a descoberta de restrições entre características, que são difíceis de identificar durante modelagem das características de uma LPS, ou que são detectadas durante o processo de extração ou engenhar ia reversa de uma LPS a partir de artefatos de implementação existentes.

Análise de inconsistências no conhecimento de configuração. O conhecimento de configuração descreve a coligação entre espaço do problema e espaço da solução. Dada a complexidade da sua especificação, a modelagem do conhecimento de configuração pode conter inconsistências, tais como, mapeamentos replicados, artefatos que não

possuem associação com características, características não associadas a algum artefato de implementação, características que possuem implementações idênticas e outros problemas. Conforme discutido por (TEIXEIRA; ROHIT; BORBA, 2011), em razão das inconsistências no conhecimento de configuração, a LPS pode gerar produtos inválidos. Especificamente, inconsistências no conhecimento de configuração podem criar conflitos de implementação, como por exemplo, dependências não contempladas, e assim gerar erros sintáticos que levam a produtos não compiláveis como resultado da derivação. As inconsistências podem ser detectadas através do desenvolvimento de buscas específicas sobre o SAM, verificando, por exemplo, mapeamentos duplicados, características ou artefatos de implementação não mapeados. A principal contribuição desse tipo de análise é oferecer uma análise de suporte a co mposição segura de produtos, que diz respeito a derivar produtos sintaticamente ou semanticamente corretos.

3.4 Sumário

Neste capítulo foi apresentado o projeto e a implementação da infraestrutura de software Squid Analyser, o propósito da infraestrutua propo sta é servir como plataforma para desenvolvimento de ferramentas de análise de LPS. Em linhas gerais foi detalhada a arquitetura do Squid Analyser, apresentando e delineando os pontos de extensão disponibilizados, especificamente, extrator de artefatos de LPS, analisador de dependência de código, buscas de análise e visualizações de análise. Para cada ponto de extensão foi apresentado um exemplo de implementação. Além disso, foi especificado o Squid Analyse Model, modelo adotado pela infraestrutura para armazenar as informações de análise.

4 Squid Impact Analyser: Uma Ferramenta para Análise de

Impacto de Mudanças

Este capítulo apresenta uma ferramenta para análise de impacto de mudanças para Linhas de Produto de Software. A abordagem da ferramenta é fundamentada na análise de dependências entre artefatos presentes no espaço da solução em conjunto com informações de rastreabilidade entre variabilidades do espaço do problema e artefatos de implementação do espaço da solução. A ferramenta proposta é nomeada Squid Impact

Analyser, e foi desenvolvida através da instanciação da infraestrutura Squid. A Seção 4.1

apresenta uma visão geral explicando o passo a passo executados pela ferramenta. A Seção 4.2 descreve a arquitetura da ferramenta e como foi realizada a inst anciação dos pontos de extensão da infraestrutura Squid. A Seção 4.3 descreve as buscas de análise de impacto de mudanças desenvolvidas para a ferramenta, enquanto a Seção 4.4 apresenta visualizações de análise de impacto providas pela ferramenta.

4.1 Visão Geral do Funcionamento da Ferramenta

O objetivo da ferramenta proposta neste capítulo é estimar quais são os impactos gerados por mudanças na implementação de artefatos de implementação de uma LPS, durante o seu desenvolvimento ou evolução. Tais mudanças po dem ser decorrentes de: correções de erros; inserção, remoção ou modificação de funcionalidades; refatorações para melhoria do código fonte, entre outras. Os impactos resultantes de mudanças em um dado artefato de implementação podem ocasionar erros em outros, e dessa forma, a LPS pode gerar produtos com erros de compilação ou semântico como o funcionamento não adequado de determinadas características.

A ferramenta proposta é baseada na análise de diversos tipos de informações relacionadas a uma LPS, tais como, características, conhecimento de configuração, artefatos de implementação, restrições entre características e dependências entre artefatos de implementação. O objetivo principal da ferramenta é utilizar informações de relacionamentos entre entidades (características comuns e variáveis) que compõem o espaço do problema com informações de relacionamentos entre entidades (classes, interfaces) que compõe o espaço da solução, associando-as por meio do conhecimento de configuração. Dessa forma, obtêm-se uma cadeia de relacionamentos entre entidades do

espaço do problema e entidades do espaço da solução. E assim, por meio das cadeias de relacionamento das entidades envolvidas em uma mudança, a análise de impacto de mudanças estima quais entidades poderão ser afetadas.

A Figura 21 ilustra um exemplo de uma cadeia de relacionamentos envolvendo entidades do espaço do problema (esquerda) e do espaço da solução (direita) da LPS Mobile Media. A cadeia apresentada parte da característica Music e prossegue conforme a sequência de relacionamentos, representados por setas. As setas em vermelho representam os relacionamentos de mapeamento da característica Music com os artefatos de implementação, em verde estão os relacionamentos de dependência que outros artefatos possuem com os artefatos que implementam a característica Music. E por fim, em azul, está o mapeamento das classes dependentes com características do espaço do problema. Este exemplo simula uma análise de impacto mudanças, onde a partir da cadeia de relacionamentos obtida é possível extrair artefatos de implementação e outras características que podem ser afetados por mudanças na característica Music.

Figura 21. Exemplo de cadeia de relacionamentos.

A Figura 22 apresenta um diagrama de atividade com as quatro atividades que compreendem a análise de impacto de mudanças realizada pelo Squid Impact Analyser. A atividade 1 consiste em obter o conjunto semente da mudança . O conjunto semente da

implementação), das quais se tem um conhecimento prévio que serão modificadas ou afetadas pela mudança. Tal conjunto semente é usado como ponto de partida para a análise de impacto de mudanças. O conjunto semente pode ser obtido por diferentes estrat égias, tais como, a partir da documentação do projeto de mudança (casos de uso, descrição da arquitetura, análise de requisitos, entre outros) elaborado por um engenheiro da LPS, ou por uma análise prévia que estima quais entidades serão afetadas pela muda nça antes de iniciar o desenvolvimento ou evolução da LPS. O conjunto semente traz apenas uma previsão inicial das mudanças, e não uma estimativa completa que contempla todas as entidades que são afetadas. Realizar uma estimativa completa manualmente é uma atividade complexa que demanda tempo e um grande esforço de análise dos artefatos de implementação. A busca por uma estimativa completa e mais precisa é justamente o objetivo da ferramenta de análise de impacto de mudanças, que complementa o conjunto inicial estimado.

Na atividade 2 da executada pela ferramenta são selecionados quais serão os tipos de relacionamentos adotados para compor as cadeias de relacionamento. O conjunto de relacionamentos utilizado é uma variável importante para a análise de impacto de mudanças, pois interfere no tamanho das cadeias de relacionamento afetando a precisão e a cobertura da análise. Exemplos de tipos de relacionamentos que podem ser explorados pela estratégia da ferramenta são: hierarquia de características, interação entre características (inclusão ou exclusão), dependências entre artefatos de implementação, hierarquia de artefatos de implementação e mapeamento entre características e artefatos de implementação.

A atividade 3 tem como objetivo obter as cadeias de relacionamentos que serão utilizadas posteriormente para extrair as entidades estimadas durante a análise de impacto de mudanças. As cadeias de relacionamento podem ser representadas por estruturas de dados que interligam as entidades que compõem a LPS. As relações entre entidades que podem ser exploradas são justamente aquelas selecionadas na atividade 2. A geração das cadeias de relacionamento é uma tarefa sistemática, que se inicia obt endo os relacionamentos das sementes e sucessivamente a análise prossegue obtendo os relacionamentos subseqüentes. A profundidade dos relacionamentos representa a distância entre dois elementos em um grafo. Na Figura 23, por exemplo, a distância entre os vértices A e E é dois, enquanto a distância entre B e D é um. Para este contexto a profundidade é aplicável aos relacionamentos de dependência, o nível de profundidade pode afetar o tamanho das cadeias de relacionamento, interferindo na precisão e cobertura da análise.

A atividade 4 compreende a seleção de quais entidades inclusas nas cadeias de relacionamentos farão parte do Conjunto de Impacto Estimado pela análise. Os critérios de seleção variam conforme os objetivos da análise. A Figura 21 ilustra, por exemplo, que se o objetivo for obter os impactos em características geradas por dependências em artefatos de implementação, o resultado será as características PhotoAlbum e CopyMedia. Nossa ferramenta gera, portanto, como resultado final, o Conjunto de Impacto Estimado contendo as entidades - características e artefatos de implementação - que possivelmente serão afetadas por mudanças no Conjunto Semente.

A ferramenta especificada nesta seção foi elaborada com objetivo de oferecer diretrizes para uma ferramenta de análise de impacto de mudanças. Não é viável implementá-la sem o uso de técnicas automatizadas de extração e análise, pois em aplicações reais o volume e a variedade de informações necessárias para a análise é elevado, o que demanda tempo e esforço. Nesta dissertação, a ferramenta foi implementada utilizando a infraestrutura Squid (Capítulo 3) e, dessa forma, propõe-se uma ferramenta para análise de impacto de mudanças apresentada na seção a seguir.