• Nenhum resultado encontrado

Análise de impacto em mudança de software: um guia de orientação

N/A
N/A
Protected

Academic year: 2021

Share "Análise de impacto em mudança de software: um guia de orientação"

Copied!
116
0
0

Texto

(1)

Pós-Graduação em Ciência da Computação

“ANÁLISE DE IMPACTO EM MUDANÇA DE

SOFTWARE: UM GUIA DE ORIENTAÇÃO”

Por

JOELSON ISIDRO DA SILVA ARAÚJO

Dissertação de Mestrado

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

(2)

CENTRO DE INFORMÁTICA

PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

JOELSON ISIDRO DA SILVA ARAÚJO

“ANÁLISE DE IMPACTO EM MUDANÇA DE

SOFTWARE: UM GUIA DE ORIENTAÇÃO"

ORIENTADOR: Prof. Alexandre Marcos Lins de Vasconcelos

RECIFE, SETEMBRO/2015

Este trabalho foi apresentado à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre em Ciência da Computação.

(3)

Catalogação na fonte

Bibliotecária Jane Souto Maior, CRB4-571

A662a Araújo, Joelson Isidro da Silva

Análise de impacto em mudança de software: um guia de orientação / Joelson Isidro da Silva Araújo – Recife: O Autor, 2015.

115 f.: il., fig., tab., quadro.

Orientador: Alexandre Marcos Lins de Vasconcelos.

Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da Computação, 2015.

Inclui referências e apêndices.

1. Ciência da computação. 2. Engenharia de software. 3. Evolução de software. I. Vasconcelos, Alexandre Marcos Lins de (orientador). II. Título.

004 CDD (23. ed.) UFPE- MEI 2016-007

(4)

Federal de Pernambuco, sob o título “ANÁLISE DE IMPACTO EM MUDANÇA DE

SOFTWARE: UM GUIA DE ORIENTAÇÃO” orientado pelo Prof. Alexandre Marcos Lins de Vasconcelos e aprovada pela Banca Examinadora formada pelos

professores:

_______________________________________________ Prof. Hermano Perrelli de Moura

Centro de Informática / UFPE

_______________________________________________ Profa. Isabel Dillmann Nunes

Instituto Metrópole Digital / UFRN

_______________________________________________ Prof. Alexandre Marcos Lins de Vasconcelos

Centro de Informática / UFPE

Visto e permitida a impressão. Recife, 04 de setembro de 2015.

___________________________________________________

Profa. Edna Natividade da Silva Barros

Coordenadora da Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco.

(5)

Agradeço a Deus por me guiar e dá forças para traçar essa jornada, mesmo diante dos contratempos e dificuldades familiares que surgiram. Aos meus pais e irmão, por todo apoio, amor e ensinamento de vida.

A minha esposa Vanessa, pela compreensão, por todo amor e carinho, por sempre estar ao meu lado e por ter me proporcionado o prazer e felicidade de ser pai. Hoje, sou mais feliz com a existência do meu filho Christopher e minha vontade de lutar pela vida, por meus objetivos e por um futuro melhor é cada vez maior.

As amizades construídas durante o período em que morei em Recife e em especial aos amigos do meu grupo de pesquisa, Aline Chagas, Bruno Nascimento e Leandro Melo pela dedicação e auxílio prestado a esta pesquisa.

Agradeço especialmente ao professor Alexandre Vasconcelos pela orientação dada, por toda confiança e compreensão durante a condução desta pesquisa.

Aos professores do programa da Pós-Graduação que tive o prazer de conhecer e através deles adquirir novos conhecimentos durante as disciplinas cursadas. E aos professores que formaram a banca, Hermano Perrelli de Moura e Isabel Dillmann Nunes, por terem aceito o convite e pela contribuição dada na avaliação deste trabalho. Por fim, à CAPES e ao Centro de Informática pela bolsa de estudos concedida durante o curso.

(6)

Contexto: a mudança faz parte da evolução e durante o ciclo de vida do

software a maior parte dos custos está associada a esta tarefa. Poder fazer previsões sobre os potenciais efeitos causados através de uma mudança é uma forma de minimizar esses custos. Neste contexto, surge então a Análise de Impacto (AI) para medir o esforço que será necessário à mudança e para nortear como realizar a mesma da maneira mais adequada, entretanto o resultado gerado pode ser insuficiente, pois é possível existirem erros na identificação dos elementos possivelmente impactados, não contemplando todos os problemas existentes.

Objetivo: este trabalho tem como objetivo investigar o que se tem feito para

permitir um resultado mais preciso na AI, gerando um catálogo de benefícios e limitações e propondo um guia de boas práticas, respondendo as perguntas de pesquisa – O que se sabe atualmente sobre os benefícios e limitações da AI em mudança de software? O que se tem feito para minimizar os erros gerados na análise?

Método: para a condução da pesquisa fez-se necessário a busca de dados na

literatura, através de uma pesquisa exploratória, por meio de uma revisão sistemática com o intuito de investigar as técnicas de AI relatadas em pesquisas dos últimos anos.

Resultados: de posse dos dados resultantes da extração e análise dos dados,

os resultados são: (1) evidências de técnicas existentes que conseguiram minimizar imprecisões nos resultados da análise, (2) geração de catálogo de benefícios e limitações em seu uso e ainda, um guia de propostas de boas práticas a serem adotadas para permitir que a análise apresente melhores resultados.

Conclusão: os resultados fornecem uma melhor visão dos fatores que precisam

ser melhorados e, além disso, possibilitaram a criação de um guia de boas práticas. Com isto, pretendemos contribuir fornecendo uma melhor compreensão sobre as técnicas existentes, de que forma melhorias vêm sendo propostas e quais práticas permitem a maximização dos resultados gerados através da análise de impacto.

Palavras-chave: Análise de impacto, Impacto da mudança, Mudança de software,

(7)

Context: Changing is part of the evolution and during the software lifecycle most cost is

associated with this task. Being able to make predictions about the potential effects caused by a change is a way to minimize these costs. In this context, the Impact Analisys (IA) can be used to measure the effort it will take to change and to guide how to do the same in the most appropriate way, however the results generated may be insufficient, it is possible to detect errors on the elements identification possibly impacted, not including all the existing problems.

Objective: This study has the objetive to investigate what has been done to allow more

accurate result in IA , generating a catalog of benefits and limitations and proposing a guide of good practice by answering the research questions - What is currently known about the benefits and IA limitations on software changes? What has been done to minimize errors generated in the analysis?

Methodology: To conduct this research it is necessary to search data in the literature,

through an exploratory research using a systematic review that will allow an investigation about the most IA techniques used in the last years.

Results: With the data generated through the extration and analisys of data, the results

are: evidences of techniques which can be used to minimize inaccuracies in test results, (2) generation of catalog of benefits and limitations in its use and also a good practice guide to be adopted to allow the analysis present better results.

Conclusion: the expected results will provide a better view of the factors that need to

be improved and, besides, will enable the creation of a good practice guide. With this, we intend to contribute by providing a better understanding of existing techniques, how improvements have been proposed and what practices has been used to improve the results generated by impact analysis.

(8)

Figura 1: Processo da análise de impacto. ... 18

Figura 2: Classes da análise de impacto. ... 20

Figura 3: Ciclo de desenvolvimento da pesquisa ... 29

Figura 4: Processo de seleção da revisão ... 35

Figura 5: Distribuição percentual de captura por engenho de busca ... 36

Figura 6: Pontuação geral dos critérios de qualidade ... 38

(9)

Quadro 1: Comparativo entre este estudo e os trabalhos relacionados ... 25 Quadro 2: Quadro metodológico da pesquisa ... 28

(10)

Tabela 1: Evidências relacionadas a identificação de efeitos de uma mudança. ... 40

Tabela 2: Evidências relacionadas a compreensão do programa. ... 42

Tabela 3: Evidências relacionadas a construção de estimativas. ... 42

Tabela 4: Evidências relacionadas a previsão de efeitos. ... 43

Tabela 5: Evidências relacionadas ao suporte a atividades de teste. ... 45

Tabela 6: Evidências relacionadas a identificação de erros. ... 46

Tabela 7: Evidências relacionadas a produtividade. ... 46

Tabela 8: Evidências relacionadas a capacidade de análise em diferentes fases. ... 48

Tabela 9: Evidências relacionadas a dificuldade para descobrir o impacto. ... 48

Tabela 10: Evidências relacionadas a imprecisão. ... 49

Tabela 11: Evidências relacionadas ao conjunto de impacto. ... 51

Tabela 12: Evidências relacionadas a qualificação e experiência. ... 52

Tabela 13: Evidências relacionadas a superestima. ... 52

Tabela 14: Evidências relacionadas a subestima. ... 53

Tabela 15: Evidência do grua de granularidade. ... 54

Tabela 16: Benefícios da análise de impacto. ... 60

Tabela 17: Limitações da análise de impacto. ... 62

Tabela 18: Lista de estudos incluídos na revisão. ... 100

Tabela 19: Dados de contexto dos estudos incluídos. ... 104

(11)

AI Análise de Impacto AIS Actual Impact Set

ASCM Architectural Software Components Model CCGImpact Control Call Graph Impact

CIASYS Change Impact Analysis at System Level CIGs Change Impact Graphs

CIN Centro de Informática CIS Candidate Impact Set

CISE Change Impact Size Estimation

DiSE Direct Incremental Symbolic Execution EIS Estimated Impact Set

FCA Formal Concept Analysis FNIS False Negative Impact Set FPIS False Positive Impact Set

HSMImpact Hierarchical Slicing Model

LoCMD Lattice of Class and Method Dependence

OOCMDG Object Oriented Class and Member Dependence Graph RSL Revisão Sistemática da Literatura

SAMCIS Software Assessment Method based Change Impact Simulation SEA Static Execution After

SIS Starting Impact Set

(12)

1. INTRODUÇÃO ... 12 1.1 DEFINIÇÃO DO PROBLEMA ... 13 1.2 MOTIVAÇÃO ... 13 1.3 QUESTÃO DE PESQUISA ... 14 1.4 OBJETIVO GERAL ... 14 1.4.1 Objetivos Específicos ... 14 1.5 CONTEXTO ... 14

1.6 CONTRIBUIÇÕES E RESULTADOS ESPERADOS ... 14

1.7 ESTRUTURA DO TRABALHO ... 15

2. REVISÃO DA LITERATURA ... 16

2.1 REFERENCIAL TEÓRICO ... 16

2.1.1 Análise de Impacto ... 16

2.1.2 Classes da Análise de Impacto: Dependência x Rastreabilidade ... 19

2.1.3 Abordagens: Estática, Dinâmica e Híbrida ... 20

2.2 TRABALHOS RELACIONADOS ... 22

2.2.1 Change Impact Analysis for the Software Development Phase: State-of-the-art (Nazri Kama, 2013) ... 22

2.2.2 The Hybrid Technique for Object-Oriented Software Change Impact Analysis (Mirna Maia, 2010) ... 23

2.2.3 On the Precision and Accuracy of Impact Analysis Techniques (Lile Hattori, 2008) 24 2.3 RELAÇÃO DESTA PESQUISA COM OS TRABALHOS RELACIONADOS ... 25

2.4 CONSIDERAÇÕES FINAIS DO CAPÍTULO ... 26

3. METODOLOGIA DA PESQUISA ... 27

3.1 CLASSIFICAÇÃO DA PESQUISA ... 27

3.2 CICLO DA PESQUISA ... 29

3.3 REVISÃO SISTEMÁTICA DA LITERATURA ... 30

3.4 CONSIDERAÇÕES FINAIS DO CAPÍTULO ... 33

4. RESULTADOS ... 34

4.1 RESULTADOS DA BUSCA E SELEÇÃO DOS ESTUDOS ... 34

4.2 MAPEAMENTO DAS EVIDÊNCIAS ... 39

4.3 DISCUSSÃO DOS RESULTADOS ... 59

5. CONSIDERAÇÕES FINAIS ... 71

5.1 LIMITAÇÕES E AMEAÇAS À VALIDADE ... 74

5.2 IMPLICAÇÕES PARA A PESQUISA E PRÁTICA ... 75

5.3 RECOMENDAÇÕES PARA TRABALHOS FUTUROS ... 75

5.4 CONCLUSÕES ... 76

REFERÊNCIAS ... 77

APÊNDICE A – PROTOCOLO DA REVISÃO SISTEMÁTICA ... 81

APÊNDICE B – RESULTADO DA AVALIAÇÃO DA QUALIDADE DOS ESTUDOS PRIMÁRIOS ... 98

APÊNDICE C – DADOS DE CONTEXTO ... 100

(13)

1. INTRODUÇÃO

Durante o ciclo de vida do software, mudanças ocorrem para atender a demanda de atualizações ou até mesmo correções de bugs de acordo com as necessidades do cliente. Mudar não é uma tarefa tão simples, uma vez que acarreta um aumento no esforço e consequentemente no custo associado ao produto. As atividades relacionadas à implementação de mudanças são caras e consomem mais de 50% do custo total do projeto (ERLIKH, 2000). Em alguns contextos, como em sistemas orientados a objetos, esse custo pode aumentar ainda mais devido à presença de características especiais, como a complexidade das relações entre as entidades, que afetam a forma de propagação dos efeitos das mudanças pelo sistema (LEE, 2000).

Conforme BOHNER (2002), uma mudança no código do sistema compreende: 1) entender como a mudança afeta o software; 2) implementar a mudança proposta; e 3) testar o sistema alterado. A análise de impacto é uma atividade de estimar o efeito, seja antes, ou depois de fazer um conjunto de alterações em um sistema de software (TURVER e BOHNER, 1993). De modo geral, existem duas classificações para o tipo da técnica utilizada na análise de impacto: a estática e a dinâmica.

O problema em torno da análise de impacto está associado aos seus resultados, isso porque, é possível errar na identificação dos elementos do sistema possivelmente impactados. Sendo assim, a análise pode conter erros relacionados à presença de entidades não impactadas (falso-positivos) ou a ausência de entidades impactadas (falso-negativos), o que indica certa imprecisão. Além da imprecisão, outro problema ligado à análise de impacto diz respeito à forma com que os resultados são organizados. Quando o conjunto de impacto resultante é grande, a informação construída pode acabar confundindo o engenheiro de software na realização da análise.

Identificar e investigar as técnicas existentes permite ter uma visão do que vem sendo estudado e até que ponto foi possível evoluir. A análise dos resultados fornecidos através da utilização das técnicas existentes e a descoberta dos pontos onde elas falham, permitirá a projeção de melhorias em busca de reduzir as imprecisões.

A proposta desta pesquisa é fazer uma revisão na literatura referente à temática, com o objetivo de conhecer a forma com que a análise de impacto é abordada, seus benefícios e limitações, bem como identificar as melhorias já propostas, para o provimento de um catálogo de benefícios e limitações de seu uso e um guia de boas

(14)

práticas para orientar sua aplicação, buscando reduzir a geração de resultados imprecisos.

1.1 Definição do Problema

O impacto da mudança em uma parte de um sistema pode ser caro e até mesmo desastroso, isso porque, os softwares tornam-se cada vez maiores e mais complexos (LIONS, 1996). A análise de impacto auxilia o planejamento de modificações, através da previsão de efeitos e os custos associados (BOHNER, 1996).

A realização da atividade de análise de impacto requer diferentes abordagens e implementações (HASSINE, 2005) para diferentes fases, tais como a de manutenção e a do desenvolvimento de software, visto que, enquanto na fase de manutenção o software está completamente desenvolvido, permitindo uma análise geral, na fase de desenvolvimento a análise é feita apenas na parte desenvolvida.

Apesar de existirem diferentes abordagens para a aplicação da análise de impacto, nesta pesquisa o foco é em abordar as técnicas apropriadas para a fase de manutenção do software.

Neste contexto, uma técnica de análise de impacto eficiente deve identificar apenas as partes do sistema que são impactadas pela mudança (BOHNER, 1996), entretanto a obtenção de uma solução ótima não é uma tarefa trivial e ainda não foi alcançada devido à presença de erros nos resultados (ALI, ROZAN e SHARIF, 2012; KAMA, 2013). Se o resultado apresenta entidades não impactadas, dizemos que este possui falso-positivos. Em contrapartida, se o resultado não possui entidades impactadas, dizemos que o resultado possui falso-negativos.

Desta forma, é necessário realizar uma investigação na literatura, para identificar o que se sabe sobre os benefícios e limitações das técnicas de análise de impacto e as possíveis melhorias já propostas.

1.2 Motivação

De acordo com a definição do problema apresentado, a motivação para esta pesquisa consiste em investigar como as técnicas de análise de impacto, com foco, naquelas que apresentam uma abordagem para a fase de manutenção do software e que tenham de alguma forma apresentado melhorias na obtenção de resultados mais precisos. Essa investigação permitirá a geração de um guia de boas práticas, que

(15)

poderá ser adotado como uma forma de produzir novas técnicas, ou adaptar as já existentes com o objetivo de maximizar os resultados produzidos através da análise.

1.3 Questão de Pesquisa

Diante da problemática apresentada, este trabalho visa responder as seguintes questões de pesquisa:

QP1: O que se sabe atualmente sobre os benefícios e limitações da Análise de Impacto em mudança de software?

QP2: O que se tem feito para minimizar os erros gerados na análise (reduzir imprecisões)?

1.4 Objetivo Geral

Investigar dentro de um determinado intervalo de tempo, informações relevantes sobre técnicas de análise de impacto, identificando características e as melhorias já propostas.

1.4.1 Objetivos Específicos

i. Compreender o estado da arte sobre a análise de impacto em mudança de software;

ii. Através de uma revisão sistemática, identificar as técnicas utilizadas, seus pontos falhos e de que forma apresentaram melhorias;

iii. Gerar um catálogo de benefícios e limitações do uso da análise de impacto; iv. Propor um guia de boas práticas com base nos dados extraídos da revisão;

1.5 Contexto

Esta pesquisa foi elaborada no seguinte contexto:

Condução de uma pesquisa secundária, através de uma revisão sistemática da literatura (RSL) com objetivo geral de investigar características e como as técnicas apresentam melhorias na análise de impacto em mudanças de software.

1.6 Contribuições e Resultados Esperados

Algumas contribuições são esperadas ao término desta pesquisa:

(16)

 Auxiliar a academia com evidências empíricas, através da fundamentação em torno do que vem sendo feito para aperfeiçoar os resultados na análise de impacto;

 Geração de um catálogo de benefícios e limitações do uso da análise de impacto e construção de um guia de boas práticas, buscando indicar as formas para produzir resultados mais precisos.

1.7 Estrutura do Trabalho

Além deste capítulo introdutório, este trabalho está organizado nos seguintes capítulos:

Capítulo 2 – Revisão da literatura: apresenta o referencial teórico dos principais assuntos e os trabalhos relacionados com esta pesquisa.

Capítulo 3 – Metodologia da Pesquisa: apresenta o quadro metodológico, o ciclo da pesquisa, assim como, as justificativas de escolha dos métodos;

Capítulo 4 – Resultados: são apresentados os resultados obtidos na revisão sistemática da literatura e é construído um catálogo de benefícios e limitações da análise de impacto, bem como também um guia de boas práticas na busca de resultados mais precisos;

Capítulo 5 – Considerações finais: são apresentadas as limitações e ameaças à validade da pesquisa, assim como suas implicações, conclusões finais do trabalho e recomendações para trabalhos futuros;

Apêndices: apresentam os modelos, resultados e formulários relevantes para a pesquisa.

(17)

2. REVISÃO DA LITERATURA

Este capítulo apresenta o referencial teórico sobre análise de impacto em mudança de software, extraído a partir de uma revisão não sistemática da literatura (adhoc) para apoiar esta pesquisa e permitir uma melhor compreensão do estudo. Inicialmente são abordados os conceitos básicos e a problemática a cerca do assunto, finalizando com o apontamento de trabalhos relacionados e uma discussão de suas relações com esta pesquisa. Este capítulo esta dividido nas seguintes seções:

 Referencial teórico: apresenta os conceitos sobre a análise de impacto;

 Trabalhos relacionados: apresenta os principais trabalhos relacionados a esta pesquisa;

 Considerações finais do capítulo: fecha o capítulo.

2.1 Referencial teórico

Esta seção apresenta uma descrição dos principais conceitos utilizados para a condução desta pesquisa, resultante de uma revisão não sistemática da literatura (adhoc) de publicações relevantes sobre análise de impacto em mudança de software.

2.1.1 Análise de Impacto

Conforme afirma SUN et. al (2010), a mudança de software é a principal operação na evolução de software. Mudanças podem ocorrer devido a diversos fatores, como novos requisitos, a existência de falhas, as solicitações de mudanças, etc. Quando são feitas, elas inevitavelmente trarão alguns efeitos imprevisíveis e potenciais ao software e ainda podem causar inconsistências em outras partes do software original.

A análise de impacto em mudanças de software, ou simplesmente análise de impacto (AI), surge para auxiliar neste processo, ela é uma etapa importante ao mudar ou manter o software, especialmente em processos incrementais (RAJLICH, 2004). Como a manutenção de software é considerada a fase mais cara (BENNETT, 1990) e de maior duração no ciclo de vida da maioria dos sistemas (LEE, 2000), é preciso buscar formas de economizar tempo e dinheiro e uma dessas formas é utilizar-se de mecanismos que auxiliem as tarefas de desenvolvimento ou análise. Quando mudanças são implementadas de forma parcial apresentam riscos elevados e são

(18)

susceptíveis a causar efeitos colaterais indesejados, induzir a novos erros e causar mais instabilidade, ao invés de melhorar o software.

Nesse contexto, os desafios da AI já são abordados desde a década de 70, quando a manutenção e a evolução de software começaram a atrair o interesse de pesquisadores em engenharia de software (LEHNERT, 2011). Mas apesar de ser conhecida e praticada há algumas décadas, não existe uma definição para AI que seja de uso comum por parte dos pesquisadores. PFLEEGER (1990) define AI como sendo a avaliação dos riscos associados a uma mudança, incluindo a estimativa dos efeitos sobre os recursos, esforço e escalonamento. Para TURVER (1993), a AI determina o escopo de uma mudança e provê uma mensuração de sua complexidade. Já BOHNER e ARNOLD (1996), investigaram os fundamentos da AI e chegaram a uma definição que é a mais adotada pelos pesquisadores: identificar as potenciais consequências de uma mudança, ou estimar o que precisa ser modificado para realizar uma mudança.

A informação gerada a partir da AI pode ser usada para planejar mudanças e realizar, adaptar e configurar o software para as mudanças, bem como para rastrear os seus efeitos, além de permitir que os potenciais efeitos da mudança fiquem visíveis antes de sua realização (ORSO, 2003; MAIA, 2009). Além disso, permite também avaliar a quantidade de trabalho necessário para implementar uma mudança, propor quais artefatos de software devem ser alterados (BOHNER, 1996) e ajuda identificar os casos de teste que devem ser executados novamente, como forma de garantir que a mudança foi implementada corretamente (RYDER, 2001). Conhecer o impacto causado pela mudança é fundamental para decidir qual a melhor alternativa para mudar, assim, a informação resultante da realização da análise, auxilia os engenheiros de software na tomada desta decisão (MAIA, 2009).

Como observado, a AI desempenha um papel importante em várias atividades de manutenção de software. Ela pode ser usada antes ou depois da implementação da mudança. Antes das alterações serem feitas podemos empregar a AI para entender o programa, alterar a previsão do impacto e estimativa de custo. Após as alterações serem implementadas no sistema, a AI pode ser aplicada para traçar os efeitos em cascata, selecionar os casos de teste, executar a propagação da mudança e a análise do efeito cascata (ROVEGARD, 2008; SUN, 2009).

Conforme BOHNER (2002), o processo da AI é classificado em três etapas principais, são elas: analisar a solicitação da mudança e o software; rastrear os impactos potenciais; e por último implementar as mudanças solicitadas. Assim, de

(19)

modo geral, o processo da análise de impacto pode ser definido em entrada (change set), processamento (impact analysis) e saída (impact set) como apresentado por SUN et al. (2013).

Nesta pesquisa, para ilustrar de melhor forma o processo da AI, foi utilizado o desenho de LI et al. (2013) conforme apresentado a seguir na Figura 1.

Fonte: Li et al. (2013)

Inicialmente é analisado a solicitação de mudança e o software para identificar o conjunto de elementos supostamente afetados pela mudança. Em seguida, através da aplicação de uma técnica de AI, outros elementos que provavelmente são afetados pelos elementos do conjunto de mudança anteriormente identificados são estimados. Esse novo conjunto é chamado de estimated impact set (EIS), mas também pode ser chamado de candidate impact set (CIS). Por fim, ao implementar a mudança, é identificado o conjunto de elementos impactados que são realmente modificados durante a execução da mudança e esse é chamado de actual impact set (AIS).

Como pode ser visto na Figura 1, o processo da análise de impacto é interativo, isso porque, durante a fase de implementação da mudança, outros elementos impactados não presentes no EIS podem ser descobertos. O conjunto de tais elementos é chamado de false negative impact set (FNIS), o que representa uma subestimativa do impacto. Por outro lado, o EIS normalmente inclui alguns elementos

(20)

que realmente não precisam ser modificados ou retrabalhados e a este conjunto dá-se o nome de false positive impact set (FPIS), o que representa uma superestimava de impactos da análise. Logo, existe uma relação entre os quatro conjuntos que envolvem a análise, onde a soma dos elementos do EIS mais os do FNIS e a subtração dos elementos FPIS deve resultar no AIS (AIS = EIS + FNIS - FPIS).

Normalmente, quando ocorre a mudança, outras entidades do sistema são afetadas e a identificação dessas entidades é o principal objetivo da AI. Uma técnica de AI eficiente deve identificar apenas as partes do sistema que são impactadas pela mudança (BOHNER, 1996), entretanto, identificar o impacto causado pela mudança não é uma tarefa trivial, isso porque, geralmente a análise é manual, os analistas utilizam ferramentas inadequadas ou porque o conjunto de informações analisada é muito grande. Além disso, na prática, a AI identifica entidades “possivelmente” afetadas, ou seja, essas entidades não representam exclusivamente as entidades que são afetadas. Sendo assim, dizemos que o resultado da análise apresenta falhas, podendo apresentar erros por superestimar ou subestimar o impacto.

Quando o resultado apresenta entidades não impactadas, consideramos que este possui falso-positivos. Por outro lado, quando não possui entidades impactadas, consideramos que o resultado possui falso-negativos.

2.1.2 Classes da Análise de Impacto: Dependência x Rastreabilidade

As duas classes da AI são a análise de dependência e a análise de rastreabilidade (BOHNER, 1996). Essas classes trazem uma abordagem para a AI sob diferentes perspectivas e possuem suas respectivas vantagens para aumentar o potencial de identificação dos impactos no software. A Figura 2 ilustra ambas as classes e conforme HATTORI (2008) a combinação destas classes pode aumentar a precisão na AI.

(21)

Fonte: Hattori (2008).

A análise de dependência envolve o exame detalhado das relações de dependência entre as entidades do programa. Ela propõe uma avaliação detalhada das dependências de baixo nível de código e não se interessa tanto em outros artefatos do software, como documentação, requisitos ou testes. Assim, ela é considerada tipicamente como sendo uma análise do código-fonte (BOHNER, 1996), fazendo análise das relações de dependência entre controle, dados e componentes do programa.

As técnicas de AI baseadas na análise de dependência procuram avaliar os efeitos de uma mudança em relação a dependências dinâmicas de entidades do programa, identificando dependências sintáticas que podem sinalizar a presença de tais dependências dinâmicas (LAW, 2003).

Enquanto que a análise de rastreabilidade envolve o exame das relações de dependência entre todos os artefatos de um sistema. Podendo relacionar, por exemplo, requisitos com os componentes do design associado (HATTORI, 2008).

2.1.3 Abordagens: estática, dinâmica e híbrida

Existem, duas abordagens de AI: a estática e a dinâmica. Mas também, podemos considerar uma terceira, a híbrida, trata-se da junção das abordagens estática e dinâmica.

A análise estática avalia o código fonte do software para identificar os impactos possivelmente causados por uma mudança no software. Ela é empregada, geralmente,

(22)

antes da implementação da mudança, para estimar os esforços necessários na implementação ou ajudar o especialista a escolher a opção menos custosa dentre as possíveis opções de mudança (HATTORI, 2008).

Conforme ORSO (2004) as técnicas de análise de impacto dinâmicas são aplicadas após a mudança ser implementada no software. Elas coletam os rastros das execuções do software e analisam quais entidades chamam as entidades modificadas para adicioná-las ao conjunto de impactos. Sendo assim, quanto maior for a abrangência das possíveis execuções, maior será a precisão do resultado obtido.

Análise estática

As técnicas estáticas analisam o código-fonte do software para identificar os elementos possivelmente impactados por uma mudança. Elas mapeiam o sistema para um conjunto de grafos, no qual os nós representam as entidades e as arestas são as dependências entre as entidades. Esses grafos podem ser construídos em nível de método ou em um nível mais detalhado, o de sentenças.

O resultado das técnicas estáticas é conhecido como conjunto de impacto estático. Estudos mostram que o conjunto de impacto estático chega a atingir cerca de 90% do código do programa (ORSO, 2005; APIWATTANAPONG, 2007). Essa situação acontece principalmente devido a análise estática considerar todos os comportamentos do sistema, inclusive aqueles impossíveis de acontecer (ORSO, 2003). Por esse motivo, podemos dizer que a maioria das técnicas de análise estática superestima o impacto, incluindo elementos que não são afetados, ou seja, os falso-positivos.

Análise dinâmica

As técnicas dinâmicas analisam rastros de execução de programas para identificar os elementos impactados por uma mudança. Há duas categorias de análise dinâmica: online e offline. Elas se assemelham em relação aos dados coletados, à forma de analisar os impactos de uma mudança e aos resultados encontrados. A diferença é que a offline coleta os dados dos rastros para analisá-los após o fim da execução, enquanto a online analisa os rastros durante a execução do programa (BREECH, 2005).

O conjunto dinâmico de elementos impactados é definido como o subconjunto das entidades do programa que é afetado por uma mudança durante, pelo menos, uma de suas execuções (ORSO, 2005). A análise de impacto dinâmica computa,

(23)

aproximadamente, o conjunto dinâmico de elementos impactados, pois ela depende do conjunto de execuções e da entrada para cada execução. Como não é possível assegurar que a análise dinâmica capture rastros para todas as possíveis execuções de um programa e todos os possíveis valores de entrada, sabe-se que técnicas dinâmicas geram falso-negativos. Entretanto, pesquisas apontaram que a utilização da análise de informação dinâmica representa a obtenção de resultados mais precisos quando comparados à abordagem estática (APIWATTANAPONG, 2005; BREECH, 2004; LAW, 2003).

2.2 Trabalhos relacionados

Os trabalhos apresentados nesta seção são resultantes da revisão da literatura realizada de forma ad-hoc, com o objetivo de buscar trabalhos similares a esta pesquisa, além de discutir o que está sendo pesquisado em análise de impacto. Uma tabela comparativa mostrando as diferenças e similaridades entre este estudo e os trabalhos relacionados é apresentada no fim desta seção.

2.1.1 Change Impact Analysis for the Software Development Phase:

State-of-the-art (Nazri Kama, 2013)

Partindo do princípio que a análise de impacto requer diferentes abordagens e implementações para diferentes fases do software e que a maioria dos trabalhos existentes na área focam a fase de manutenção, este estudo revisa a capacidade de técnicas atuais para apoiar a análise na fase de desenvolvimento do software.

O grande desafio apontado nesse contexto é que nem todas as classes do sistema estão completamente desenvolvidas, o que torna as técnicas existentes inadequadas esta finalidade. Sendo assim, foi realizada uma investigação entre diferentes técnicas com o objetivo de oferecer uma visão abrangente sobre a capacidade das técnicas atuais de análise de impacto.

Como critério para avaliar a capacidade das técnicas, foram adotados quatro elementos:

 Fonte de dados utilizada - podendo ser gerada a partir de artefatos de requisitos e de design, ou ainda, artefatos de classes ou código fonte;

 Técnica para desenvolvimento do modelo de análise de impacto - podendo ser uma técnica preditiva ou de engenharia reversa;

(24)

 Desenvolvimento parcial das classes - onde é considerado se a técnica tem a capacidade analisa uma classe parcialmente desenvolvida, uma vez que, nem todas as classes estão completamente desenvolvidas na fase de desenvolvimento do software;

 Implementação da análise de impacto - podendo ser do tipo estática ou dinâmica.

Foram analisadas as técnicas: Use Case Maps, Requirement Interdependency, Class Interacions Prediction, CoverageImpact, PathImpact e Influence Graph. Ao compará-las, pode-se concluir que nenhuma destas técnicas dá suporte a todos os elementos importantes para a implementação da análise de impacto na fase de desenvolvimento de software. Assim, essas técnicas não se mostraram eficazes para serem usadas na fase de desenvolvimento e por isso é sugerida a construção de uma nova técnica de análise de impacto.

Essa nova técnica deve conter as seguintes características: utilizar artefatos de alto nível como fonte para o desenvolvimento do modelo de análise; aplicar a técnica preditiva como modelo para o desenvolvimento da técnica de análise de impacto; incluir a análise de desenvolvimento parcial das classes na implementação da técnica de análise dinâmica; e combinar a técnica de análise de impacto estática e a técnica de análise dinâmica para implementar a análise de impacto.

2.2.2 The Hybrid Technique for Object-Oriented Software Change

Impact Analysis (Mirna Maia, 2010)

Neste estudo foi apresentada uma nova forma de efetuar a análise de impacto, através da combinação de diferentes abordagens da análise, mais precisamente unindo práticas da análise estática e dinâmica, com o objetivo de reduzir o número de falsos negativos presentes em técnicas. Como já explanado na Seção 2.1, isto ocorre porque as técnicas de análise de impacto subestimam o impacto, na medida em que, a análise deixa de conter entidades de fato impactadas pela mudança.

Foram desenvolvidos para a avaliação do estudo, um protótipo chamado de SD-Impala, que implementa a técnica híbrida proposta e um estudo de caso de múltiplo caso quantitativo para comparar a solução com uma técnica estática (Impala) e uma dinâmica (CollectEA), tal comparação, foi feita adotando quatro métricas: número de falso-negativos, número de falso-positivos, precisão e recall. Enquanto a precisão mede a quantidade de elementos identificados que não são impactados

(25)

(falso-positivos), o recall avalia os elementos não identificados, mas que são impactados (falso-negativos).

A técnica proposta utiliza tanto a abordagem estática, quanto a dinâmica, é empregada em softwares de código-fonte orientado a objetos e promove a melhoria na estimativa de impacto em termos de recall. A realização da análise de impacto foi dividia em três etapas: 1) a análise estática identifica dependências estruturais entre as entidades do código; 2) a análise dinâmica identifica dependências com base em uma relação de sucessão derivada de rastros da execução do código; e 3) os resultados de ambas as análises são unidos e classificados de acordo com sua relevância, gerada através de um fator de impacto.

Como resultado final, concluiu-se que a técnica híbrida conseguiu reduzir o número de falsos-negativos e melhorou o recall entre 90 e 115% em comparação com a técnica estática e, entre 21.2 e 39% em comparação a uma dinâmica. Em contrapartida, a técnica estática mostrou-se melhor em relação aos falsos-positivos e em precisão, já a técnica dinâmica apresentou os piores resultados.

2.2.3 On the Precision and Accuracy of Impact Analysis Techniques

(Lile Hattori, 2008)

Neste estudo foi defendido que embora existam algumas pesquisas na literatura buscando avaliar a precisão em técnicas de análise de impacto, as medidas utilizadas para isso, não são formalmente definidas ou fracas, pois nestes casos, os algoritmos são supostamente seguros por não excluir do conjunto de impacto identificado qualquer entidade realmente impactada, entretanto, não há uma prova para esta hipótese.

Sendo assim, é proposto e avaliado o uso de duas medidas de recuperação da informação, com o objetivo de expressar e comparar a precisão das técnicas de análise de impacto. As medidas adotadas foram precisão e recall, quando combinadas, elas permitem informar a precisão de uma técnica.

Como forma de avaliar essas medidas, foi implementada uma ferramenta JAVA de análise de impacto estática, chamada Impala, ela calcula os elementos impactos, identificando todas as dependências diretas e indiretas de uma mudança. Para que haja uma redução de falsos-positivos, o algoritmo desenvolvido permite o ajuste de um ponto de parada na identificação de dependências indiretas. Foi conduzido um estudo empírico com três diferentes projetos JAVA, incluindo a própria ferramenta

(26)

desenvolvida (Impala) com o intuito de valida-la e outras duas, DesignWizard e OurGrid.

2.3 Relação desta pesquisa com os trabalhos relacionados

Analisando os trabalhos mencionados na seção anterior, é possível notar que a problemática em torno dos resultados gerados através da análise de impacto vem sendo abordada na literatura, por apresentar-se como um problema constante, dado que, encontrar uma solução ideal não é uma tarefa simples, pois como apresentado na Seção 2.1, existem diferentes abordagens para sua aplicação, o que significa que um determinado contexto, pode exigir uma determinada configuração e esta pode ser não útil para aplicação em contextos diferentes.

Nesse sentido, investigar formas de mitigar o problema torna-se o principal objetivo de pesquisas na área.

Da mesma forma que este trabalho, o trabalho de Nazri Kama (2013) fez o uso de uma revisão para conduzir a pesquisa, porém de forma não sistemática e seu objetivo foi investigar a capacidade das técnicas de impacto para apoiar especificamente a análise na fase de desenvolvimento do software e como resultado, identificou a necessidade da construção de uma nova técnica. Enquanto que nesta pesquisa, foi conduzida uma revisão sistemática, com o objetivo é investigar dentro de um contexto geral, quais os benefícios e limitações do uso de técnicas e apontar o que se tem feito para que estas apresentem resultados mais precisos, gerando informações que podem ser utilizadas como um guia na prática.

O trabalho de Mirna Maia (2010) e Lile Hattori (2008) estão direcionados no sentido de expressar resultados, seja através de uma combinação de técnicas para proporcionar um melhor resultado com a análise, ou mesmo, numa forma de utilizar métricas para avaliar a precisão. Por outro lado, este trabalho se preocupa em evidenciar tais contribuições. O Quadro 1 faz um comparativo, mostrando a correlação entre os estudos.

Quadro 1: Comparativo entre este estudo e os trabalhos relacionados Categoria Este estudo Nazri Kama

(2013) Mirna Maia (2010) Lile Hattori (2008) Objetivo Identificar os benefícios e Investigar a capacidade das Avaliar o uso de uma abordagem Propor e avaliar o uso

(27)

limitações da análise de impacto e investigar propostas de melhoria técnicas atuais de análise de impacto em apoiar a análise na fase de desenvolvimento híbrida de análise com o objetivo de reduzir o número de falsos-negativos de medidas para expressar a precisão de técnicas de análise de impacto Método de Pesquisa Revisão sistemática da literatura

Revisão Estudo de caso Estudo empírico Coleta dos Dados Revisão sistemática da literatura Comparação entre 6 técnicas Protótipo e outras 2 técnicas 3 projetos JAVA Análise dos Dados

Qualitativa Qualitativa Quantitativa Quantitativa

Fonte: Próprio autor (2015).

2.4 Considerações finais do capítulo

Este capítulo apresentou os principais conceitos referentes à análise de impacto em mudança de software. Além disso, explanou sobre os principais trabalhos que se relacionam com o tema desta pesquisa, apresentando uma tabela comparativa para melhor ilustração dos objetivos dos trabalhos relacionados e o deste estudo. O próximo capítulo apresenta a metodologia de pesquisa utilizada para a concretização desta dissertação.

(28)

3. METODOLOGIA DA PESQUISA

Este capítulo apresenta detalhadamente o método de pesquisa utilizado durante a condução deste trabalho, com o intuito de aumentar a confiabilidade dos resultados alcançados e permitir a replicabilidade desde estudo por outros pesquisadores.

De acordo com WAZLAWICK (2009), um método de pesquisa é definido como a sequência de passos necessários para demonstrar que o objetivo da pesquisa proposto foi alcançado, sendo assim, ao executar as etapas descritas no método serão obtidos resultados, e esses devem ser convincentes.

Entretanto, de acordo com as recomendações de ESTERBOOK et al. (2008) é necessário definir um posicionamento filosófico que permite a escolha do método de pesquisa mais apropriado. Este posicionamento pode ser classificado em: positivista ou pós-positivista, construtivista ou interpretativista, teoria crítica e pragmático ou eclético.

Nesta pesquisa, o posicionamento adotado foi o positivista, uma vez que, esse pensamento afirma que todo conhecimento deve ser baseado na inferência lógica de um conjunto básico de fatos observáveis.

Este capítulo está dividido nas seguintes seções:

 Classificação da Pesquisa: apresenta a classificação da pesquisa de acordo com os parâmetros definidos.

 Ciclo da Pesquisa: nesta seção são apresentadas as fases para a condução desta pesquisa.

 Revisão Sistemática da Literatura: é apresentado o procedimento adotado para coleta de dados e elaboração do protocolo de pesquisa.

3.1 Classificação da Pesquisa

Diante da especificação do quadro metodológico pode-se compreender a teoria utilizada na pesquisa, assim como, a metodologia específica empregada e desta forma, obter o rigor científico a este estudo (LAKATOS e MARCONI, 2011).

No Quadro 2 será apresentada a abordagem utilizada no estudo, o objetivo, a construção do referencial teórico, as técnicas de pesquisa, o método de procedimento, a natureza das variáveis e as variáveis independentes e dependentes.

(29)

Quadro 2: Quadro metodológico da pesquisa

Método de abordagem Indutivo

Objetivo da pesquisa Exploratória

Construção do referencial teórico Revisão ad-hoc da literatura

Técnica de pesquisa Revisão Sistemática da Literatura (RSL). Método de procedimento

(Codificação e Análise dos dados)

Síntese narrativa para a RSL

Natureza das variáveis Qualitativa

Variáveis independentes Análise de impacto Mudança de software

Variáveis dependentes Benefícios e limitações da análise de impacto Propostas de melhoria de resultados

Fonte: Próprio autor (2015).

O método de abordagem indutivo foi adotado por ser o que mais se enquadra dentro das características desta pesquisa, uma vez que, a partir de dados particulares, suficientemente constatados é inferida uma verdade geral ou universal, não contida nas partes examinadas, ou seja, os argumentos indutivos têm o objetivo de levar a conclusões com conteúdo mais amplo do que o das premissas nas quais se basearam (LAKATOS e MARCONI, 2011).

Considerou-se como uma pesquisa exploratória, pois segundo GIL (2007) este tipo de pesquisa objetiva obter maior familiaridade com o problema, tornando-o mais explícito. Além disso, pode-se dizer que pesquisas assim definida tem como objetivo principal o aprimoramento de ideias ou mesma a descoberta de intuições.

Para obtenção de maior conhecimento a cerca do tema proposto nesta dissertação, foi conduzida uma revisão ad-hoc da literatura como forma de descrever os conceitos e termos geralmente empregados sobre a análise de impacto.

O escopo desta pesquisa envolveu como técnica de pesquisa: a condução de uma Revisão Sistemática da Literatura (RSL) com o objetivo de identificar, analisar e interpretar as evidências empíricas da literatura (KITCHENHAM, 2007), no que se

(30)

refere aos benefícios e limitações da análise de impacto e sobre o que se tem feito para minimizar os erros gerados com a análise, permitindo assim, a construção de um catálogo que sumariza os benefícios e limitações de sua utilização e um guia com práticas de sucesso adotadas.

Por fim, de acordo com a definição de Lakatos e Marconi (2008)sobre variáveis, neste trabalho temos a análise de benefícios e limitações da análise de impacto e propostas de melhoria de resultados como variáveis dependentes, que são afetadas pelas variáveis independentes análise de impacto e mudança de software.

3.2 Ciclo da Pesquisa

Esta seção apresenta as principais fases realizadas ao longo deste estudo, com uma breve descrição e o relacionamento entre estas etapas. A Figura 3 ilustra o processo de desenvolvimento desta pesquisa.

Fonte: Próprio autor (2015).

(1) Para a fase de concepção, foi realizada uma revisão ad-hoc da literatura com o objetivo de entender o que está sendo pesquisado sobre análise de impacto em mudanças de software. Foram utilizados artigos e livros como fontes de leitura. De

(31)

posse dos conceitos e teorias inerentes ao tema da pesquisa foram identificadas as lacunas sobre a área de estudo. Sendo assim, definiu-se o problema de pesquisa e os objetivos a serem investigados.

(2) Com a base teórica adquirida, iniciou-se a fase de planejamento com a definição das questões de pesquisa a serem respondidas com o resultado desta dissertação. Por conseguinte, o instrumento para coleta de dados (revisão sistemática da literatura) foi planejado e elaborado.

(3) Para a fase de coleta de dados, com base no protocolo da Revisão Sistemática da Literatura (RSL) desenvolvido na fase anterior, foi conduzida a RSL com as seguintes atividades: busca automática, aplicação dos critérios de inclusão e exclusão, avaliação da qualidade, extração e síntese dos dados.

(4) Após os dados serem coletados, através da RSL, eles foram analisados visando responder as questões de pesquisas propostas nesta dissertação.

(5) Na última etapa, a fase de consolidação, de posse dos dados analisados, foi construído um catálogo de benefícios e limitações e um guia de boas práticas na busca de melhores resultados com a análise de impacto. Também foram apresentadas as contribuições para a teoria e para a prática, as limitações desta dissertação e a descrição de possíveis trabalhos futuros.

Na seção a seguir, será melhor detalhado o procedimento de coleta de dados utilizado nesta dissertação (RSL).

3.3 Revisão Sistemática da Literatura

Com o intuito de responder as questões de pesquisa e alcançar os objetivos elencados nesta dissertação, foi selecionado um método de pesquisa para a coleta de dados. Esta seção visa explicar o procedimento usado para a coleta de dados, baseado no protocolo da revisão, documento importante para futuras replicações desta RSL.

Segundo KITCHENHAM et al. (2007), uma RSL é um estudo secundário com um processo de pesquisa metodologicamente bem definido, cujo o objetivo é encontrar o maior número possível de estudos primários relacionados com a questão de pesquisa. Além disso, uma RSL precisa ser auditável e confirme sugere a autora deve ser desenvolvido um protocolo descrevendo todos os procedimentos adotados durante sua realização. O rigor adotado no processo de busca é um fator que distingue RSLs de revisões tradicionais.

(32)

RANDOLPH (2009) apresenta algumas razões para se realizar uma revisão sistemática: delimitar o problema de pesquisa; buscar novas linhas de investigação; evitar abordagens infrutíferas; buscar conhecimentos metodológicos; identificar recomendações para futuras pesquisas e buscar fundamentação teórica. KITCHENHAM et al. (2007) complementam essa lista afirmando que as revisões sistemáticas podem ser realizadas para resumir as evidências empíricas existentes, identificar lacunas nos estudos atuais, suportar ou refutar uma hipótese ou até mesmo auxiliar na geração de novas hipóteses.

A seguir é apresentado um resumo do protocolo que foi desenvolvido e utilizado na condução desta revisão. Mais detalhes podem ser consultados na versão completa disponível no APÊNDICE A.

1 – Definição das questões de pesquisa

Para compreender o estado da arte sobre os benefícios e limitações da análise de impacto e investigar as melhorias propostas para a redução de imprecisões, foram formuladas as seguintes questões de pesquisa, as quais esta pesquisa visa responder:

QP1: O que se sabe atualmente sobre os benefícios e limitações da Análise de Impacto em mudança de software?

QP2: O que se tem feito para minimizar os erros gerados na análise (reduzir imprecisões)?

2 – Definição de estratégias de busca

Uma das estratégias de busca para os estudos primários pode ser automática e/ou manual. Este estudo adota uma abordagem de busca automática, realizada a partir da execução da string de busca, no período de 2000 a 2013, totalizando 13 anos de pesquisas em análise de impacto.

A fim de encontrar o maior número possível de artigos nessa busca relacionados à análise de impacto, procurou-se abranger as palavras-chave desta RSL, combinando-as e concatenando com operadores booleanos OR e AND.

String de busca: ("software" OR "development" OR "project" OR "software development" OR "development application" OR "information system development" OR "software project" OR "software engineering" OR "software production") AND ("change" OR "maintenance" OR "modification" OR "alteration" OR "evolution") AND ("impact analysis" OR "change impact" OR "static analysis" OR "dynamic analysis").

(33)

3 - Fontes de busca

Foram realizadas buscas automáticas nos principais engenhos, conforme indicados por KITCHENHAM et al. (2007), ao total 4 engenhos, Scopus, Science Direct, Compendex e IEEE.

4 - Critérios de seleção dos estudos

Os estudos primários resultantes do processo de busca foram avaliados conforme os critérios de inclusão e exclusão pré-estabelecidos. Foram definidos 8 critérios de inclusão e 8 de exclusão para serem aplicados na seleção dos estudos. Se o estudo atendesse os critérios de inclusão ele era mantido na tabela de avaliação dos estudos, caso contrário era removido da mesma.

A aplicação destes critérios se dividiu em três etapas: primeiramente foi feita uma leitura de identificação dos estudos, consistindo na leitura de Título e Resumo dos estudos. Em um segundo momento foi lido a Introdução, Metodologia e Conclusão, ainda assim, para os estudos que não ficaram claros, partimos para uma última etapa, a completa leitura.

Esse processo de seleção envolveu 4 (quatro) pesquisadores, mestrandos do Centro de Informática (CIn) da Universidade Federal de Pernambuco (UFPE) e 1 (um) revisor, assumindo este papel o orientador desta pesquisa. Foram formados grupos, divididos em duplas, para garantir que cada estudo fosse avaliado por dois pesquisadores. Para os estudos que apresentaram avaliações diferentes, inicialmente foi feita a tentativa de acordo no resultado, através de uma reunião para solução de conflitos, ainda assim, caso as divergências não tivessem sido solucionadas, um terceiro pesquisador faria a avaliação e tomaria a decisão final sobre aquele estudo. 5 - Avaliação da qualidade

Como resultado da fase anterior, foi gerada uma lista contendo apenas estudos incluídos e estes nesse momento passaram por uma avaliação de qualidade, seguindo critérios pré-estabelecidos para tanto. Os critérios aqui adotados foram baseados no estudo de Dyba (2008), com o intuito de compreender as evidências que respondessem as questões de pesquisa desta RSL.

Novamente os estudos foram divididos e avaliados por quatro grupos de pesquisadores, adotando-se o mesmo procedimento da fase anterior para os conflitos. 6 - Extração e análise dos dados

(34)

Nesta fase, apenas um pesquisador realizou o procedimento de extração e análise dos estudos, sendo revisada pelo orientador da pesquisa. A partir da leitura dos estudos, foram extraídas todas as evidências que respondessem as perguntas de pesquisa.

A análise ocorreu ao mesmo tempo que a extração, com o objetivo de melhorar a compreensão dos estudos, permitindo que toda a informação relevante fosse reunida para utilização na fase seguinte.

7 - Síntese dos dados

A síntese dos dados pode ser quantitativa e/ou qualitativa, sendo um processo que reúne e resume as evidências extraídas dos estudos primários incluídos na pesquisa (KITCHENHAM et al., 2007). Esta pesquisa tem natureza qualitativa, logo será realizada uma síntese qualitativa dos dados.

KITCHENHAM et al. (2007) apresentam três abordagens para a síntese qualitativa, e estudo será baseado na abordagem de Síntese de Linha de Argumento que é utilizada quando os pesquisadores querem inferir sobre um tema como um todo a partir de um conjunto de estudos selecionados.

Os dados de caracterização de cada estudo como: autor(es), ano, técnica utilizada, método de pesquisa entre outros, foram extraídos e sintetizados em uma planilha do Microsoft Excel™.

3.4 Considerações finais do capítulo

Este capítulo apresentou a metodologia adotada para condução desta pesquisa, onde foi construído o quadro metodológico para sintetizar as técnicas de pesquisa, o instrumento de coleta de dados e métodos de análise. Também foi apresentado o ciclo da pesquisa, uma breve descrição sobre a definição de uma RSL o os procedimentos para elaboração desta revisão. O próximo capítulo apresenta os resultados obtidos após a execução das etapas previstas na metodologia.

(35)

4. RESULTADOS

Este capítulo apresenta os resultados obtidos na execução da Revisão Sistemática da Literatura com o objetivo de responder as questões de pesquisa deste trabalho, permitindo a construção de um catálogo de benefícios e limitações na utilização da análise de impacto, bem como um guia de boas práticas, baseado em casos que propuseram melhorias.

4.1 Resultados da Busca e Seleção dos Estudos

Esta seção descreve os resultados obtidos através da condução da RSL, os quais permitem responder as questões de pesquisa.

No início da pesquisa foi formada uma equipe com 5 pesquisadores, sendo 4 do mestrado em Ciência da Computação no Centro de Informática da UFPE e 1 professor orientador, todos instruídos e com experiência no processo de condução de revisões sistemáticas.

Com o intuito de minimizar um possível viés na seleção de estudos, todas as fases da revisão foram executadas por pelo menos dois pesquisadores. Assim, ficou garantido que um mesmo estudo seria revisado por mais de um pesquisador. Após as etapas de seleção e avaliação de qualidade dos estudos, a pesquisa passou a ser conduzida pelo autor desta pesquisa, ou seja, apenas a fase de extração, análise e síntese dos dados foi conduzida por uma única pessoa.

A Figura 8 ilustra de forma resumida e quantitativa o processo de seleção da RSL, com indicação dos estudos resultantes em cada fase. A seguir serão descritas todas as fases da RSL de acordo com o protocolo apresentado no capítulo 3 de forma resumida e disponível em sua forma completa no APÊNDICE A.

(36)

Fonte: Próprio autor (2015).

Fase 1 – Busca automática: nesta fase foi construída uma String genérica, tendo em

vista que em cada engenho existe uma sintaxe específica, onde esta string genérica deve ser adaptada para correta captura dos estudos.

Com a String definida, a busca automática foi executada e resultou em 6.088 estudos, obtidos através de quatro engenhos de busca e distribuídos conforme apresentado na Figura 5, sendo 2.004 do Compendex, 642 do IEEE, 395 do ScienceDirect e 3.047 do Scopus. Todos esses estudos foram identificados com um identificador ID e seus dados catalogados em uma planilha Excel™. Antes do início do processo de seleção pela leitura do título e resumo, a planilha foi analisada para detectar a existência de estudos replicados, o que permitiu a exclusão de 2.008 estudos, restando para a fase seguinte 4.080 estudos. Para armazenamento e compartilhamento dos arquivos com os demais pesquisadores envolvidos nesta pesquisa, foi criado uma base de dados e hospedada em um repositório online.

(37)

Fonte: Próprio autor (2015).

Fase 2 – Seleção dos estudos pelo título e resumo: nesta fase foi preciso fazer a

leitura apenas dos título e resumo para conhecer mais sobre o estudo e saber se ele poderia ser considerado potencialmente relevante de acordo com os critérios estabelecidos nesta pesquisa. Os pesquisadores foram orientados quanto aos procedimentos e conceitos empregados nesta RSL antes de iniciar o trabalho.

Cada um dos 4.080 estudos foi analisado individualmente, mas obedecendo a uma divisão em duplas para garantir que um mesmo estudo fosse avaliado por dois pesquisadores. Após isso, as planilhas de seleção foram comparadas e os conflitos foram discutidos em reunião de consenso pela dupla. Dessa forma, foram rejeitados 3.760 estudos por serem considerados irrelevantes, restando assim, 320 estudos potencialmente relevantes.

Fase 3 – Seleção através da aplicação dos critérios: foram estabelecidos critérios

de inclusão e exclusão e como na fase anterior, uma reunião de esclarecimento foi feita entre os pesquisadores. Nesta fase, a seleção entre os 320 estudos se deu através da leitura da introdução e conclusão, mas caso fosse verificada a necessidade de um melhor entendimento, o estudo seria lido por completo.

No repositório criado com uma cópia digital de cada estudo, tínhamos a ausência de 39 estudos, pois alguns estudos estavam inacessíveis (eram pagos ou

33%

11% 6% 50%

Compendex IEEE ScienceDirect Scopus

(38)

estavam indisponíveis). Assim, foram enviados e-mails para os autores solicitando uma cópia destes artigos inacessíveis e conseguimos obter resposta de 11 autores, reduzindo este número para 28. Assim, dos 320 estudos iniciais, conseguimos analisar 292 e destes 211 foram considerados irrelevantes, restando 81 para a fase seguinte.

Fase 4 – Avaliação da qualidade: nesta fase 5 estudos foram identificados

como replicados, pois na planilha já havia um outro de mesma autoria e com mesma problemática abordada, restando assim 76 estudos. Estes foram analisados de acordo com os critérios de qualidade estabelecidos no protocolo da revisão e o resultado pode ser consultado no APÊNDICE B. Cada estudo foi distribuído em uma faixa de qualidade disposta em: Baixa (1), Média (6), Boa (27), Muito Boa (34) e Excelente (12). Ainda nessa fase, após a leitura completa dos estudos foi necessária a exclusão de 26, pois os mesmos não apresentavam evidências para responder as questões de pesquisa.

A classificação da qualidade foi uma consequência direta das notas atribuídas aos 10 critérios de qualidade para cada estudo. A Figura 6 apresenta a nota geral de cada critério, obtida através da soma de todas as notas deste. Esses dados permitiram avaliar de forma geral o comportamento dos critérios aplicados, na medida em que, quanto mais baixa a pontuação geral, tal atributo de qualidade era pouco presente ou inexistente nos estudos. Por outro lado, quanto maior a pontuação, mais presente era aquele atributo de qualidade nos estudos.

Para compreender melhor essa presença ou ausência dos critérios de qualidade nos estudos, estas qualidades são apresentadas de forma resumida:

Q1: Objetivo bem definido;

Q2: Descrição adequada do contexto; Q3: Método definido e justificado;

Q4: Abordagem explícita (qualitativa, quantitativa ou mista); Q5: Amostragem bem definida e justificada;

Q6: Clara descrição do procedimento de coleta de dados; Q7: Rigor na análise dos dados;

Q8: Avaliação da relação do autor com a pesquisa – viés (reflexibilidade); Q9: Resultado claro e discutido;

(39)

Fonte: Próprio autor (2015).

Pode-se dizer que o critério Q4 foi o de menor pontuação e, consequentemente os estudos falharam mais em não explicitar a abordagem dada em sua pesquisa, já o critério Q2 recebeu a maior pontuação, o que significa que os estudos mantêm uma definição adequada do contexto em que estão inseridos.

Fase 5 – Análise e extração dos dados: esta fase foi realizada integralmente pelo

autor da pesquisa e revisada pelo orientador e constituiu em fornecer os dados demográficos dos 50 estudos resultantes da fase anterior. Assim, na extração foram retirados dos estudos os dados de contexto e publicação e as tabelas com estas informações podem ser consultadas no APÊNDICE C.

Dentre os estudos desta fase, foi possível identificar 26 técnicas empregadas para a análise de impacto, foram elas: Chianti, Control Call Graph Impact (CCGImpact), ChAT, Field Data, Static Execution After (SEA), PathImpact, Object Oriented Class and Member Dependence Graph (OOCMDG), Hierarchical Slicing Model (HSMImpact), Direct Incremental Symbolic Execution (DiSE), iDiSE (extensão da DiSE), Formal Concept Analysis (FCA), Architectural Software Components Model (ASCM), Software Assessment Method based Change Impact Simulation (SAMCIS), Change Impact Graphs (CIGs), Change Impact Analysis at System Level (CIASYS), UCM Impact Analysis, WAVE-CIA, Jripples, Celadon, Iterative IA, Sieve, CollectEA, SD-Impala, Lattice of Class and Method Dependence (LoCMD), EMFTrace e Change Impact Size

73 75 51 19 63,5 62 63 25,5 50,5 46 0 10 20 30 40 50 60 70 80 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10

(40)

Estimation (CISE). Desses estudos, 72% foram conduzidos por pesquisa quantitativa, 16% qualitativa, 4% mista (qualitativa e quantitativa) e 8% não tinham uma definição. O método de pesquisa predominante nos estudos foi de estudo de caso, 22 dos estudos utilizaram tal método, 13 conduziram experimentos, em 3 foi feito um estudo empírico, 1 fez uma revisão, 1 aplicou questionários e também houve estudos em que não foi possível identificar qual método de pesquisa foi empregado, pois não existia uma definição explícita para isso, da mesma forma, em alguns estudos não existia uma nomenclatura para a técnica de análise de impacto utilizada.

Para responder as questões da pesquisa, as evidências foram extraídas dos estudos utilizando uma técnica de análise de síntese qualitativa, a síntese de linha de argumento citada por KITCHENHAM et al. (2007). Esses dados permitiram a construção do catálogo de benefícios e limitações do uso da análise de impacto e um guia de boas práticas que estão sendo propostas e adotadas na busca da geração de melhores resultados na análise.

4.2 Mapeamento das Evidências

Nesta seção são apresentadas as evidências e os resultados para cada questão de pesquisa. A síntese dos dados permitiu a construção de dois artefatos, cada qual originado de uma questão de pesquisa.

Questão de Pesquisa 1

QP1: O que se sabe atualmente sobre os benefícios e limitações da análise de impacto em mudança se software?

Para responder a esta pergunta foi preciso buscar nos estudos as evidências que tratem das características da análise de impacto. Para melhor entendimento ela será respondida de forma separada, uma parte apresentará os benefícios e a outra as limitações.

Benefícios

As evidências apontam que o principal benefício fornecido pela análise de impacto é o de permitir a identificação dos efeitos ocasionados pela mudança. Esses efeitos podem ser identificados antes [S0671], depois [S0094] ou mesmo durante

Referências

Documentos relacionados

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

Os testes de desequilíbrio de resistência DC dentro de um par e de desequilíbrio de resistência DC entre pares se tornarão uma preocupação ainda maior à medida que mais

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

 Ambulância da marca Ford (viatura nº8), de matrícula XJ-23-45, dotada com sirene, luz rotativa e equipamento de comunicação (Emissor/Receptor com adaptador);.  Ambulância da

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis