Você está na página 1de 162
Anderson Fonseca e Silva UM MÉTODO BASEADO EM MÉTRICAS PARA PREDIÇÃO DE IMPACTO EM ATIVIDADES

Anderson Fonseca e Silva

UM MÉTODO BASEADO EM MÉTRICAS PARA PREDIÇÃO DE IMPACTO EM ATIVIDADES DE CODIFICAÇÃO EM PROJETOS DE SOFTWARE

Tese de Doutorado

IMPACTO EM ATIVIDADES DE CODIFICAÇÃO EM PROJETOS DE SOFTWARE Tese de Doutorado www.cin.ufpe.br/~posgraduacao RECIFE 2018

RECIFE

2018

Universidade Federal de Pernambuco Centro de Informática Pos-graduação em Ciência da Computação Anderson Fonseca e

Universidade Federal de Pernambuco

Centro de Informática Pos-graduação em Ciência da Computação

Anderson Fonseca e Silva

UM MÉTODO BASEADO EM MÉTRICAS PARA PREDIÇÃO DE IMPACTO EM ATIVIDADES DE CODIFICAÇÃO EM PROJETOS DE SOFTWARE

Trabalho apresentado ao Programa de Pos-graduação em Ciência da Computação do Centro de Informática da Univer- sidade Federal de Pernambuco como requisito parcial para obtenção do grau de Doutor em Ciência da Computação.

Orientador: Vinicius Cardoso Garcia

RECIFE

2018

Eu dedico esta tese ao meu pai (in memorian), meu sogro (in memorian), a minha família e ao meu orientador que me deram o suporte necessário para o alcance do próximo degrau.

Agradecimentos

Agradecimentos especiais a todos que contribuiram diretamente para este trabalho. Primeiramente ao meu orientador, professor Vinicius Garcia, pela parceria, paciência, amizade e cuidado durante todas fases desse trabalho. Agradeço ao CIn e aos seus funcionários pela estrutura e formação de qualidade, que pude perceber durante todo o curso. Gostaria de agradecer ao pessoal do INES — Instituto Nacional de Ciência e Tecnologia para Engenharia de Software, do AssertLab e da Ustore, pelos direcionamentos, discussões e apoio. A Accenture, empresa na qual trabalho e que me deu subsídios para a concepção, elaboração, construção e aplicação deste trabalho, e em especial aos amigos Isaac Babsky e César Araújo. E por fim, a todos que indiretamente me apoiaram: minha esposa Sandra Fonseca, minha filha Sophia Fonseca pelo fato de sua existência me impulsionar na busca pela evolução contínua, familiares e amigos.

I have yet to see any problem, however complicated, which, when looked at in the right way, did not become still more complicated.

—POUL ANDERSON

Resumo

Diante do cenário econômico atual, cada vez mais empresas de diversos segmentos, procuram reduzir custos através da automatização de seus processos e operações por meio de software, tornando-se evidente o aumento em investimentos, bem como, o crescimento em demandas de construção e evolução de sistemas. Ao longo dos anos, trabalhos no estado da arte de Engenharia de Software, vêm demons- trando que os custos relacionados à manutenção de software alcançaram aproximadamente 70% do valor total de construção dos sistemas. Deste modo, questões como avaliação de qualidade contínua, bem como, o custo envolvido em evoluções, se tornam fatores de suma importân- cia para a tomada de decisão no que tange à continuidade de um determinado software, sua replataformização ou substituição. Observando tal contexto, o propósito deste trabalho está em entender como subsidiar tal tomada de decisão, direcionando e, esclarecendo implicações e custos associados, bem como, quais ações iniciais podem ser adotadas. Por meio de conceitos como: arqueologia de software, sendo possível avaliar a evolução histórica do projeto por meio das revisões obtidas em repositórios de código; análise de métricas primitivas e compostas de código, de design orientados a objetos e de manutenibilidade; projeção de custos e retorno de investimento em manutenção de software, torna-se possível estabelecer um método para se caracterizar, avaliar e direcionar a melhoria do design, identificando pontos críticos do sistema e direcionando ações para um trabalho de evolução e manutenção de software de forma proativa. Durante um período de 2 anos, este trabalho avaliou como a tomada de decisão impactava na qualidade dos projetos desenvolvidos por uma consultoria de TI com atuação global no desenvolvimento e manutenção de sistemas. De forma prática, foi selecionado um conjunto de projetos de software, segmentados em verticais da indústria, permitindo um levantamento sobre o estado atual de cada projeto com relação a métodos de construção, acompanhamento das atividades com avaliações periódicas, direcionamentos junto com lideranças e discussões. As avaliações dos projetos na indústria privada, totalizaram mais de 20 avaliações. Como resultado, os stakeholders envolvidos, adotaram a abordagem como direcionador para a tomada de decisão e argumento de venda para novos contratos de melhoria e replataformização de produtos legados.

Palavras-chave: Engenharia de Software, Manutenção e Evolução de Software, Retorno do Investimento.

Abstract

In the face of the current economic scenario, more and more companies from different segments seek to reduce costs by automating their processes and operations through software, making evident the increase in investments, as well as the growth in construction and evolution demands Systems for consultancies specializing in Information Technology (IT). Over the years, works in the state of the art of Software Engineering have demonstrated that the diversity of technologies and the complexity in the construction and evolution of the software, causes costs related to software maintenance to reach approximately 70 % of the total value of Construction of systems. In this way, issues such as continuous quality assessment, as well as the cost involved in evolutions, become important factors for decision making regarding the continuity of a particular software, its replataformization or replacement. Looking at this context, the purpose of this work is to understand how to subsidize such decision making, directing and clarifying associated costs and implications, as well as what initial actions can be taken. By means of a method where it is possible to characterize, evaluate and direct the improvement of the design, concepts such as: software archaeology, being possible to evaluate the historical evolution of the project through the revisions obtained in code repositories; Analysis of primitive and composite code metrics, object-oriented design and maintainability; Cost projection and return on investment in software maintenance, makes it possible to identify critical points of the system allowing a proactive evolution and maintenance work. In the light of the above scenario, this work began with the verification of how decision- making impacts on the approaches adopted to continuous quality improvement in projects in an IT consultancy with a global role in the development and maintenance of systems over a period of 2 years. In this way, a set of software projects was selected, segmented in verticals of the industry, allowing a survey on the current state of each project with respect to construction practices, monitoring of activities with periodic evaluations, directions along with leaderships and dis- cussions. As a result of this work, projects in the industry were evaluated, summarizing more than 20 evaluations. However, even when this proposal was in its initial state, it continues to be used as a driver for decision-making and sales argument for new contracts for improvement and replataformization of products by the same software consultancy which has been elaborated such studies.

Keywords:

design patterns.

Software engineering, software maintenance and evolution, refactoring, reuse,

Lista de Figuras

1.1

Evolução do mercado brasileiro de software - ABES - (Elaborada pelo autor) .

22

1.2

Roadmap para guiar o trabalho de pesquisa

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

2.1

Fluxo de Metodologia de Pesquisa

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

2.2

Modelos para avaliação de qualidade de software

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

2.3

Limites identificados FILÓ; SILVA BIGONHA (2015)

.

.

.

.

.

.

.

.

.

.

.

.

.

54

3.1

Landscape Débito Técnico IZURIETA et al. (2012)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

4.1

Fluxo de execução do método proposto

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

4.2

Fase - Coletar

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

4.3

Pirâmide de Visão Geral LANZA; MARINESCU (2007)

.

.

.

.

.

.

.

.

.

.

.

.

78

4.4

Fórmula para a validação dos atributos de qualidade - BANSIYA; DAVIS (2002)

81

4.5

Propriedades x atributos de qualidade

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

4.6

Análise de correlação linear .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

4.7

Visão da ISO-9126 mapeadas com propriedades do código-fonte .

.

.

.

.

.

.

.

87

4.8

Ranking de manuteniblidade conforme a ISO-9126

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

4.9

Tabela de conversão entre níveis NUGROHO; VISSER; KUIPERS (2011)

 

90

4.10

Projeçao de custos em manutenção NUGROHO; VISSER; KUIPERS (2011)

.

91

4.11

Análise de regressão

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

4.12

Priorização de classes - simulação de estimativa de parâmetros do modelo

 

96

4.13

AHP - IPCNC .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

97

4.14

Pirâmide de Visão Geral - JHotDraw .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

101

4.15

Atributos de qualidade por revisão - JHotDraw

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

4.16

Evolução das propriedades do design .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

4.17

Evolução de não-conformidades do projeto - JHotDraw

.

.

.

.

.

.

.

.

.

.

.

.

.

103

4.18

Comparação de evolução de não-conformidades do projeto - JHotDraw

.

.

.

.

103

4.19

Visão da manuteniblidade - JHotDraw

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

104

4.20

Ranking da manutenibilidade - JHotDraw

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

105

4.21

Projeção de débito técnico e juros - JHotDraw .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

4.22

Priorização x número de ocorrências

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

4.23

Priorização x Truck Factor

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

109

4.24

Comparativo Sonar x RADAR

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

5.1

Modelo de transferência de tecnologia GORSCHEK et al. (2006)

 

113

5.2

LPE-Visão Geral

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

117

5.3

LPE-Complexidade / Legibilidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

118

5.4

LPE-Duplicidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

118

5.5

LPE-Manutenibilidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

119

5.6

LPE-Manutenibilidade (Ratings)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

119

5.7

LPE-Não conformidades

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

120

5.8

LPE-Divida tecnica

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

120

5.9

LPE-Feedback .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

120

5.10

LPE-Reconhecimento .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

121

5.11

BLODES-Visão Design .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

123

5.12

BLODES-Manutenibilidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

123

5.13

Onda-1 x Onda-2 - Visão Manutenibilidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

126

5.14

Onda-1 x Onda-2 - Alinhamento reunião .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

127

A.1

RADAR Visão da solução

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

150

A.2

RADAR Funcionalidades .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

151

A.3

A.4

. RADAR VoPC - Coletar dados

RADAR Componentes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

153

153

A.5

RADAR Sequencia - Coletar dados .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

154

A.6

RADAR Modelo de dados

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

155

Lista de Tabelas

1.1

Comparativo evolução 2004-2017 - Em US$ milhões

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

1.2

Comparativo de sucessos e falhas em projetos de TI (2000-2015)

.

.

.

.

.

.

.

.

23

1.3

Fatores de sucesso em projetos de TI (2000-2015) .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

1.4

Manutenção de software - percentuais de esforço em ações não-corretivas

 

24

1.5

Dados da busca

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

1.6

Resultados da busca .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

1.7

Resultados da busca .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

1.8

Resumos dos principais problemas identificados .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

1.9

Mapeamento do time

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

2.1

Resultados da busca - QP1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

2.2

Resultados snowballing - QP1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

2.3

Resultados da busca - QP2

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

2.4

Resultados snowballing - QP2

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

2.5

Resultados da busca - QP3

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

2.6

Modelos de qualidade de software - qtde de caracteristicas - QP1 .

.

.

.

.

.

.

.

51

2.7

Resultados caracteristicas - QP1

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

2.8

Métricas de Software - Limites - QP2

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

3.1

Mineração em repositórios de código .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

3.2

Métricas com mais alto número de ocorrências NUÑEZ-VARELA et al. (2017) 63

3.3

Métricas com mais alto número de citações SANTOS et al. (2016)

 

64

3.4

Abordagem de verificação e estudos relacionados LI; AVGERIOU; LIANG (2015) 70

4.1

Métricas propostas por LANZA; MARINESCU (2007)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

78

4.2

Métricas propostas por BANSIYA; DAVIS (2002) .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

79

4.3

Resultados do Índice de Manutenibilidade OMAN; HAGEMEISTER (1992)

 

86

4.4

Tabela de conversão de pontos de função em pontos de produtividade LANZA

 

(2008)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

89

4.5

Fator de qualidade NUGROHO; VISSER; KUIPERS (2011)

.

.

.

.

.

.

.

.

.

.

90

4.6

Revisão - numero de classes x recomendações de priorização

.

.

.

.

.

.

.

.

.

.

106

4.7

Recomendação x revisões .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

107

5.1

Avaliações executadas com a aplicação do método .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

115

5.2

Quadro comparativo Onda-1 x Onda-2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

125

5.3

Quadro comparativo Onda-1 x Onda-2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

127

B.1

Questionário para avaliação de times de desenvolvimento

.

.

.

.

.

.

.

.

.

.

.

.

158

C.1

Manuteniblidade ISO9126 x Métricas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

160

Sumário

1 Introdução

21

1.1 Estabelecimento do problema .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.