minicurso sobre evolução de software no cbsoft 2011
DESCRIPTION
Curso sobre evolução de software dado pelo nosso grupo de pesquisa do IME-USP no CBSoft 2011, em São Paulo.TRANSCRIPT
![Page 1: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/1.jpg)
Evolução de SoftwareFerramentas, técnicas e métricas
[versão 1.1]
Gustavo Oliva, Mauricio Aniche, Marco Gerosa
{goliva, aniche, gerosa}@ime.usp.br
Versão atualizada do curso apresentado em:CBSoft 2011 – São Paulo – SP – BrasilIME-USP
![Page 2: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/2.jpg)
Instrutores
Gustavo Oliva
Mestre em Ciência da Computação pelo IME/USP
Evolução e manutenção de software
Gerência de dependências em sistemas OO
Atuou como desenvolvedor na IBM Brasil por ~3 anos
Mauricio Aniche
Mestre em Ciência da
Computação pelo IME/USP
Test-Driven Development e
Design de Sistemas OO
Instrutor dos cursos de Java
e Métodos Ágeis da
Caelum
2
![Page 3: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/3.jpg)
Objetivos do Curso
Objetivo Geral
Discutir evolução de software e técnicas para extração e visualização de dados
Objetivos Específicos
Discutir ferramentas
Discutir técnicas
Discutir métricas
3
![Page 4: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/4.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow e rEvolution
4
![Page 5: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/5.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow e rEvolution
5
![Page 6: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/6.jpg)
O mundo real…
… é complicado!
FindBugs v1.3.0 (Novembro/2007)
6
![Page 7: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/7.jpg)
Todo software útil…
Muda continuamente
Tende a tornar-se mais complexo
Tende a crescer
7
![Page 8: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/8.jpg)
Motivação8
A evolução do software é difícil de compreender
Grande quantidade de dados históricos
A interação entre aspectos técnicos e sociais do processo de desenvolvimento de software é difícil de desvendar
Uma análise compreensiva da evolução requermecânismos sofisticados, como visualizações sob váriasperspectivas e cálculo de métricas
![Page 9: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/9.jpg)
Evolução de Software9
Evolução de software se preocupa principalmente
com as mudanças do sistema em relação a
diferentes versões ou releases do mesmo
Em Maio de 2010, o Google Scholar reportou que,
em 2009, 70 publicações continham “software
evolution” no título, e mais de 900 tinham “software
evolution” em algum lugar do texto
![Page 10: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/10.jpg)
Evolução de Software10
Sistemas de software precisam evoluir
A sociedade altamente dinâmica impõe uma pressãoconstante para mudanças em sistemas de software
Para continuar útil, é crucial que sistemas de software possam ser facilmente adaptáveis a mudanças contínuas e flexíveis o suficiente para adição de novas funcionalidades
Software que não é tolerante a modificações está fadadoao abandono ou a substituição [Mens & Demeyer 2008], [Bode 2009]
![Page 11: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/11.jpg)
Estudos em Evolução de Software11
Estudos sobre evolução possuem diversos objetivos
Identificação de boas práticas de engenharia de software baseadas na análise de como sistemas de sucesso e de longoprazo se mantém [Bennet & Rajlich 2000]
Avaliação de hipóteses empíricas sobre características da evolução de software [Lehman 1997]
Padrões de colaboração entre desenvolvedores [Cataldo 2008]
Identificação de problemas de design e de código através da visualização do histórico do software [D‘Ambros & Lanza 2010]
![Page 12: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/12.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow and rEvolution
12
![Page 13: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/13.jpg)
Software Intelligence
As mesmas ideias de
Business Intelligence (BI), só
que aplicadas no domínio
de software
13
![Page 14: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/14.jpg)
Mineração de Repositórios de Código14
Mineração de Repositórios de Código (MSR) se
refere à aplicação de técnicas de mineração de
dados em dados históricos de projetos [Ball et al.
1996]
Estudos sobre evolução de software frequentemente
estão associados à MSR
![Page 15: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/15.jpg)
Dados interessantes
As técnicas de MSR podemencontrar padrões interessantes emprojetos de software
No exemplo ao lado, o gráficomostra o número de bugs escritospor dia da semana. Para esseprojeto, podemos ver que quarta-feira é o dia em que essa equipeproduz menos bugs
15
![Page 16: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/16.jpg)
Repositórios16
![Page 17: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/17.jpg)
Repositórios de código
Há vários deles: CVS, SVN, Git, Mercurial, Bazaar
Muitas características em comum
Mas muitas características específicas também!
17
![Page 18: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/18.jpg)
Benefícios
Contém todo o histórico do projeto ao longo do
tempo
Contém informações relevantes, como
Data/hora
Desenvolvedor
Mensagem explicando a alteração (commit message)
18
![Page 19: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/19.jpg)
Dificuldades
Muitas equipes não colocam mensagem nos commits
Fazem commits grandes, dificultando a compreensão do mesmo
Dependendo do controlador de versão, extrairdados pode ser trabalhoso
CVS, por exemplo, não dá suporte para commits atômicos
19
![Page 20: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/20.jpg)
Outros repositórios
Listas de Discussão
Bug Trackers
…
20
![Page 21: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/21.jpg)
Issue Trackers21
![Page 22: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/22.jpg)
Issue Trackers
Descrição do bug, severidade
Data de criação do ticket, data de fechamento do
ticket
Desenvolvedor que fechou, desenvolvedores que
interagiram na discussão
…
22
![Page 23: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/23.jpg)
Benefícios
Uma base de dados grande sobre bugs e suas
características
As informações de data possibilitam a criação de
links entre o repositório de código e o repositório
de bugs
23
![Page 24: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/24.jpg)
Dificuldades
Cada ferramenta armazena/exporta dados de uma maneira diferente
Muitas equipes não usam
O link entre repositório de código e repositório de bugs é fraco
Uma solução comum é procurar por referências a bugs nas mensagens dos commits
24
![Page 25: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/25.jpg)
Listas de Discussão25
![Page 26: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/26.jpg)
Listas de Discussão
Local onde acontece uma grande troca de
informações relativas ao projeto
Discute-se bugs, melhorias, novas funcionalidades,
etc.
Geralmente disponível na web
Bastante usado por projetos open-source
26
![Page 27: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/27.jpg)
Benefícios
“Documentação” das discussões podem conter dados
interessantes.
Altamente relacionados com atividades de mudança de
código [Bird et al. 06]
Geralmente contém discussões sobre planos futuros,
decisões de design
Contém a “rede social” de desenvolvedores do projeto
27
![Page 28: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/28.jpg)
Exemplo: Motivação
Estudo do conteúdo das mensagens antes e depoisde uma release;
Depois do release Apache 1.3, houve uma queda no otimismo;
Depois do release do Apache 2.0, houve um aumento na socialibilidade;
[Rigby & Hassan 07]
28
![Page 29: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/29.jpg)
Dificuldades
Dados não estruturados dificultam a extração de
dados
Desenvolvedor com múltiplos e-mails
Threads “quebradas” em vários e-mails diferentes
29
![Page 30: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/30.jpg)
Extração de dados30
![Page 31: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/31.jpg)
Logs
Controladores de versão proveem logs das modificações armazenadas
Geralmente em texto puro
Exemplo: git log
31
![Page 32: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/32.jpg)
Exemplo do diff
Diffs mostram a
diferença entre
uma versão e a
versão anterior
Útil para
identificar as
mudanças feitas
32
![Page 33: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/33.jpg)
Ferramentas prontas
SVNKit (svnkit.com)
JGit (eclipse.org/jgit/)
33
![Page 34: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/34.jpg)
Modelando os dados
Release History Database (RHDB) [D’Ambros et al. 2008]
34
![Page 35: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/35.jpg)
Analisando os dados35
![Page 36: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/36.jpg)
Dependências Lógicas
Dependências lógicas são dependências implícitas entre artefatos de software que evoluíram juntos [Gall et al.1998]
Dependências lógicas ocorrem quando dois artefatos sãofrequentemente mudados juntos
Esta técnica pode revelar links evolucionários entre quaisquer tipos de artefatos que compõem o sistema, incluindo arquivos de configuração e documentação
Dependências lógicas são identificadas por meio de análisedos logs dos sistemas de controle de versão
36
![Page 37: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/37.jpg)
Requisitos de Coordenação
Requisitos de coordenação (CRs) são empregados para inferirdependências entre desenvolvedores [Cataldo et al. 2006]
CRs são inferidas a partir de dois elementos
Dependências lógicas entre arquivos e
Alocação de tarefas para desenvolvedores
Exemplo #1: desenvolvedores mudando o mesmo conjunto de arquivos
Exemplo #2: desenvolvedor d1 deve coordenar seu trabalho com osdesenvolvedores d2 e d3 quando os arquivos modificados por d1 dependem logicamente de arquivos modificados por d2 e d3
37
![Page 38: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/38.jpg)
Predição de Bugs
A mensagem do commit pode ajudar a identificar “commits bugados” [Eyolfson, Tan, Lam 11];
Ao olhar a mensagem, podemos encontrar mensagens do tipo“bug corrigido”
Basta olhar para trás, e ver quais commits introduziram as linhasque foram removidas no commit corrente
Esses commits podem ser considerados “bugados”
Possibilita a visualização dos dias e horários em que osbugs são gerados
38
![Page 39: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/39.jpg)
Predição de Mudanças
Com base em métricas aplicadas sobre dependências
lógicas, é possível fazer predições sobre mudanças
Ideia básica: “Clientes que compraram X, também
compraram Y”
A granularidade pode variar: classes, métodos, etc.
É possível ainda previnir erros decorrentes de
mudanças incompletas
39
![Page 40: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/40.jpg)
Clones de código
Com o histórico da base de código em mãos, é
possível procurar por clones de código
É possível, inclusive, descobrir quando os clones foram
criados
40
![Page 41: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/41.jpg)
Complexidade de código
O cálculo da complexidade do código (ou qualquer
outra métrica) ao longo do tempo pode passar
informações interessantes como:
Classes mais complexas
Classes cuja complexidade tem aumentado
constantemente
41
![Page 42: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/42.jpg)
Truck Factor
A análise de desenvolvedores e artefatosmodificados podem passar informaçõesinteressantes, como:
Artefatos que só são modificados por um desenvolvedor ao longo do tempo (truck factor)
Artefatos que são modificados por váriosdesenvolvedores e a relação disso com a complexidade do código gerado
42
![Page 43: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/43.jpg)
Ferramentas de métricas
Existem várias, como:
JDepend/NDepend
JavaNCSS
Eclipse Metrics
Kalibro Metrics
Byecycle
iPlasma
Neste caso, o desenvolvedor fica
responsável por analisar as
várias releases (ou versões) do
código para chegar a conclusões
acerca da evolução do sistema
em questão
43
![Page 44: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/44.jpg)
JDepend/NDepend
Calcula métricas, tais como
Número de classes e interfaces
Acoplamento aferente/eferente
Abstração
Instabilidade
Distância da linha principal
Ciclos de dependência entre pacotes
Precisa do código compilado para executar
44
![Page 45: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/45.jpg)
JavaNCSS
Cálcula complexidade ciclomática de métodos e
classes
Faz a análise em cima do próprio código-fonte, não
exigindo o código compilado
45
![Page 46: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/46.jpg)
Eclipse Metrics
Plugin do eclipse queconstantemente calcula as métricas
Uma grande quantidade de métricas diferentes
Pode rodar fora do Eclipse
É complicado, mas possível
46
![Page 47: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/47.jpg)
Kalibro Metrics
Software brasileiro
Fácil de plugar novas métricas
Já possui muitas métricas implementadas
Não precisa de código compilado
47
![Page 48: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/48.jpg)
Byecycle
Mostra as dependências entre os diversos pacotes
do projeto
Plugin do Eclipse
48
![Page 49: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/49.jpg)
iPlasma - Avaliando Design
Além de investigar dependências, há outros
métodos mais automatizados
Lanza e Marinescu propõem um conjunto de
estratégias de detecção de problemas de design
com base em composição de métricas e limiares
49
![Page 50: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/50.jpg)
Estratégias de Detecção50
![Page 51: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/51.jpg)
Design
Disharmonies (Lanza e Marinescu – Object-
Oriented Metrics in Practice)
51
![Page 52: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/52.jpg)
God Class52
![Page 53: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/53.jpg)
Shotgun Surgery53
![Page 54: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/54.jpg)
Adotando resultados54
![Page 55: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/55.jpg)
Reengenharia
Após a análise dos dados, os problemas identificados são tratadospor meio de técnicas de reengenharia
Reengenharia (…) é o exame e alteração de um sistema para reconstituí-lo em uma nova forma e a subsequente implementação da nova forma [Chikofsky 1990]
No escopo de sistemas orientados a objetos, há um enorme corpo de conhecimento acerca de técnicas de reengenharia
Padrões de reengenharia
Object-Oriented Reenginering Patterns [Demeyer et al. 2009]
Refatoração
Refactoring to Patterns [Kerievsky 2004]
Refactoring: Improving the Design of Existing Code [Fowler et al. 1999]
55
![Page 56: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/56.jpg)
Como implantar na indústria?
No PASED 2011, Ahmed Hassan comentou sobre o
problema do “ovo e da galinha”
Para mostrar o valor das técnicas de MSR, precisamos
executá-las na indústria
Mas para que a indústria compre a ideia, é preciso
primeiro mostrar o valor
56
![Page 57: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/57.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow and rEvolution
57
![Page 58: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/58.jpg)
Quais os desafios?
Quais os desafios no processo de
MSR?
58
![Page 59: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/59.jpg)
Desafios em MSR
Exploração de dados não-estruturados
E-mails, comentários, …
Relação de dados entre diferentes repositórios
Informações sobre bugs e repositório de código
Procurar dados em lugares não convencionais
Entender as limitações
Poucos commits, poucos desenvolvedores, …
59
![Page 60: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/60.jpg)
Desafios em MSR
Lidar com ruídos nos dados
Melhorar a qualidade dos dados nesses
repositórios
Facilitar a extração de dados
60
![Page 61: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/61.jpg)
Desafios em MSR
Entender a necessidade dos praticantes
Mostrar os resultados práticos
Avaliar projetos que não sejam open-source
Simplificar o acesso a tecnologia
Ajudar o participante a tomar decisões sobre o
projeto
61
![Page 62: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/62.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow and rEvolution
62
![Page 63: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/63.jpg)
Visualização de software
A área de “Visualização de Software” estuda a representação visual estática ou animada da informação sobre um sistema de software baseado em sua estrutura, comportamento ou evolução [Diehl 2010]
O objetivo central da visualização de software é apoiar a compreensão e análise de sistemas e algoritmos
Pode ser encarada como uma atividade de Engenharia Reversa
63
![Page 64: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/64.jpg)
O que é uma métrica?
O mapeamento de uma característica particular de
uma entidade medida para um valor numérico
Por que medir?
Auxilia na administração da complexidade!
64
![Page 65: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/65.jpg)
Vantagens e Desvantagens
Vantagens
Capacidade de quantificar aspectos de qualidade
Possibilidade de automatizar as medições de um sistema
Desvantagens
Números são apenas números: não confie cegamente neles!
Em geral, capturam somente sintomas de altagranularidade , e não causas de problemas de design
Difícil para desenvolvedoreslidarem com elas
Inflação de medições
65
![Page 66: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/66.jpg)
Desafios
O que visualizar?
Como visualizar?
Quantas coisas visualizar (ao mesmo tempo)?
Como associar visualização e métricas?
66
![Page 67: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/67.jpg)
Um exemplo simples
Árvore que denota uma
hierarquia de classes
67
![Page 68: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/68.jpg)
Visualização de Dependências
Structure 101 (classes)
Grafos
68
![Page 69: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/69.jpg)
Visualização de Dependências
Structure 101 (pacotes e jars)
Grafos
69
![Page 70: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/70.jpg)
Visualização de Dependências
Lattix
DSM (Design/dependency structure matrix) Outbound dep
Inbound dep
Cyclic dep
70
![Page 71: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/71.jpg)
Visualização de Dependências
IBM SA4J
What if
Skeleton
71
![Page 72: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/72.jpg)
Visualização de Dependências
Evolution Radar
Poderia ser
qualquer outra
métrica
72
![Page 73: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/73.jpg)
Visualização de Dependências73
![Page 74: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/74.jpg)
Evolution Matrix74
![Page 75: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/75.jpg)
The Class Blueprint75
![Page 76: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/76.jpg)
Metrics Pyramid
Diferentes métricas e a relação entre elas
Cores indicam se valores estão dentro dos limites aceitáveis
76
![Page 77: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/77.jpg)
Legenda: Metrics Pyramid
NOP: Número de pacotes
NOC: Número de classes
NOM: Número de métodos
LOC: Linhas de Código
CYCLO: Complexidade ciclomática
CALLS: Número de invocações de métodos distintos
FANOUT: Número de tipos “de fora” referenciados
ANDC: Número médio de classes que foram derivadas
AHH: Número médio da árvore de hierarquia
77
![Page 78: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/78.jpg)
Métricas de referência78
![Page 79: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/79.jpg)
Existem várias!
Quantitative Evaluation of
Software Quality Metrics in
Open-Source Projects
(Barkmann et al.)
79
![Page 80: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/80.jpg)
Polymetric Views80
![Page 81: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/81.jpg)
Evospaces/Codecity81
![Page 82: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/82.jpg)
Evospaces/Codecity82
![Page 83: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/83.jpg)
Evospaces/Codecity83
![Page 84: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/84.jpg)
Evospaces/Codecity84
![Page 85: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/85.jpg)
ArgoUML85
![Page 86: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/86.jpg)
CodeCity ao longo do tempo86
![Page 87: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/87.jpg)
Diagramas de Kiviat (radares)87
![Page 88: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/88.jpg)
Gráficos de barras e linhas88
![Page 89: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/89.jpg)
Agenda
Motivação
Conceitos Básicos
Temas Atuais de Pesquisa
Métricas e Visualização
XFlow and rEvolution
89
![Page 90: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/90.jpg)
XFlow
XFlow é uma ferramenta extensível que dá suporte a análises empíricas em evoluçaõ de software
Open-source (GPL)
Baseada no protótipo TransFlow [Costa et al. 2009]
Apoia a análise integrada de aspectos técnicos e sociaispor meio de ricas visualizações e cálculo de métricas
Trata problemas de desempenho encontrados em trabalhosrelacionados
90
![Page 91: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/91.jpg)
Princípios de Funcionamento91
Processamento de
Dados
Persistência
Coleta de Dados Métricas Visualizações
Parse dos logs do
sistema de controle
de versão
Identificação de dependências
lógicas e requisitos de
coordenação
Cálculo de métricas de
projeto, commits e de
arquivo
Oferecimento das
visualizações interativas
![Page 92: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/92.jpg)
Design Rationale
Foco no apoio à pesquisa empírica
Extensibilidade como chave para alcançar
completude
Faça apenas uma vez
Filtre e personalize
92
![Page 93: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/93.jpg)
Visualizações da XFlow
“Overview primeiro, zoom e filtragem, e então detalhes sob demanda” [Shneiderman 1996]
Alcançada por meio de filtros e controles
Cinco visualizações interativas
Gráfico de Linhas
Scatterplot
TreeMap
Grafo
Atividade
93
![Page 94: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/94.jpg)
Mecanismos de Interação94
(a) Abas para
visualizações
(b) Painel de
desenvolvedores
(c) Barra de
informações da
análise
(d) Controles
específicos
![Page 95: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/95.jpg)
![Page 96: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/96.jpg)
Cenário Ilustrativo #1
Evolução Sociotécnica de Software
Como times de desenvolvimento lidam com a saída de desenvolvedores princípios?
A saída de líderes comprometeu o projeto GIMP inteiro(hiato de 20 meses no desenvolvimento) [Ye & Kishida2003]
Visualizações de Atividade e TreeMap foram empregadaspara analisar o Megamek (BattleTech board game)
96
![Page 97: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/97.jpg)
Cenário Ilustrativo #197
![Page 98: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/98.jpg)
Cenário Ilustrativo #198
![Page 99: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/99.jpg)
Cenário Ilustrativo #2
Efeitos da arquitetura sobre desenvolvedores
Como um sistema de software cresce para acomodarnovas funcionalidades?
A análise integrada de dependências lógicas (focotécnico) e requisitos de coordenação (foco social) dásuporte pra este tipo de análise
A visualização de grafo foi empregada para analisarambos Apache Lucene e jEdit (IDE)
99
![Page 100: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/100.jpg)
Cenário Ilustrativo #2
Apache Lucene
Dependency Graphs
jEdit
Dependency Graphs
100
![Page 101: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/101.jpg)
Cenário Ilustrativo #3
Compreendendo papel de desenvolvedores
Estudo exploratório do projeto jEdit
Coleta: 10895 commits
6 anos e meio de desenvolvimento
Apenas arquivos com extensão Java
Análise da contribuição de 3 desenvolvedores
k_satoda, jgellene e orutherfurd
101
![Page 102: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/102.jpg)
102
![Page 103: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/103.jpg)
103
Centralidade
Tempo
Centralidade Máxima
do Commit
![Page 104: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/104.jpg)
104
Centralidade
Tempo
Máxima centralidade
“até então”
Maior centralidade atingida até o momento
(valor de referência)
![Page 105: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/105.jpg)
105
Commits por
mês
![Page 106: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/106.jpg)
rEvolution
Ferramenta que possibilita a geração de gráficos sobre a evoluçãodo software
Analisa informações do repositório de código, como commit messages, datas, desenvolvedores, etc.
Executa ferramentas de métricas como JavaNCSS, JDepend, e triangulaesses valores
Diversas visualizações já implementadas
Ferramenta Open Source que pode ser encontrada emhttp://www.github.com/mauricioaniche/rEvolution
Criada por Mauricio Aniche
106
![Page 107: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/107.jpg)
rEvolution
Atualmente só suporta Git
Implementação de SVN está em andamento
Permite a criação de novas visualizações ou mediçõesde maneira fácil
Persiste os dados em MySQL
Por usar Hibernate, tira do usuário a necessidade de escrever INSERTs, CREATE TABLEs ou coisa do tipo, aoencaixar uma nova métrica
107
![Page 108: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/108.jpg)
Modelo de
Classes do
rEvolution
108
![Page 109: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/109.jpg)
Artefatos
mais
modificados
109
![Page 110: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/110.jpg)
Bugs por Dia e Hora110
![Page 111: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/111.jpg)
Artefatos mais
Modificados
x
Número de
bugs
111
![Page 112: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/112.jpg)
Commits
por
desenvolvedor
112
![Page 113: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/113.jpg)
Commits por Dia e Hora113
![Page 114: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/114.jpg)
Linhas adicionadas ao longo do tempo114
![Page 115: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/115.jpg)
Testes acumulados ao longo do tempo115
![Page 116: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/116.jpg)
Futuro do rEvolution
Product Backlog já grande
Ideias vindas inclusive de colegas da Alemanha
Integração com SVN e Mercurial
Interface visual para facilitar configuração
Hoje o usuário configura através de um .properties
Mais e mais visualizações…
116
![Page 117: Minicurso sobre Evolução de Software no CBSoft 2011](https://reader034.vdocuments.mx/reader034/viewer/2022042602/5588cf6bd8b42a251f8b4684/html5/thumbnails/117.jpg)
Obrigado!
Mauricio Aniche
[email protected] / @mauricioaniche
Gustavo Oliva
[email protected] / @golivax
Marco Aurélio Gerosa
117