monitoramento de métricas de código-fonte - stoa...

132
1 Monitoramento de Métricas de Código-Fonte: uma abordagem a ser explorada pelo Governo na verificação da qualidade dos produtos de software Paulo Meirelles (FGA/UnB – CCSL/USP) [email protected] By Paulo Meirelles is licensed under a Creative Commons Atribuição 2.5 Brasil License

Upload: nguyencong

Post on 01-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

1

Monitoramento de Métricas de Código-Fonte:

uma abordagem a ser explorada pelo Governo na verificação da qualidade dos

produtos de software

Paulo Meirelles(FGA/UnB – CCSL/USP)

[email protected] Paulo Meirelles is licensed under a Creative Commons Atribuição 2.5 Brasil License

Page 2: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

2

Introdução (1)

Page 3: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

3

Bjarne StroustrupInventor of C++

O que é código limpo?

“ I like my code to be elegant and efficient. The logic should be straighforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled optimizations. Clean code does one thing well. ”

Page 4: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

4

Grady BoochAuthor of Object Oriented Analysis and

Design with Applications

O que é código limpo?

“ Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer's intent but rather is full of crisp [clearly defined] abstractions and straighforward lines of control.”

Page 5: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

5

Dave ThomasFounder of OTI, godfather of

the Eclipse Strategy

O que é código limpo?

“ Clean code can be read, and enhanced by a developer other than its original author. It has unit and acceptance tests. It has meaningful names. It provides one way rather than many ways for doing one thing. It has minimal dependencies, which are explicitly defined, and provides a clear and minimal API. Code should be literate since depending on the language, not all necessary information can be expressed clearly in code alone.”

Page 6: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

6

Michael FeathersAuthor of Working Effectively

With Legacy Code

O que é código limpo?

“ I could list all of the qualities that I notice in clean code, but there is one overarching quality that leads to all of them. Clean code always looks it was written by someone who cares. There is nothing obvious that you can do to make it better. All of those things were thought about by the code's author, and if you try to imagine improvements, you're led back to where you are, sitting in appreciation of the code someone left for you – code left by someone who cares deeply about the craft.”

Page 7: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

7

Ron JeffriesAuthor of Extreme

Programming Installed

O que é código limpo?

“ In recent years I begin, and nearly end, with Beck's rules of simple code. In priority order, simple code:

● Runs all tests

● Contains no duplication

● Expresses all the design ideas that are in the system

● Minimizes the number of entities such as classes, methods, functions, and the like.”

Page 8: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

8

Ward CunninghamInventor of Wiki, Fit and much more

”Godfather of all those who care about code”

O que é código limpo?

You know you are working on clean code when each routine you read turns out to be pretty much what you expected. You can call it beautiful code when the codes also makes it look like the language was made for the problem.”

Page 9: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

9

Simple

Straightforward

Efficient

Expressive

Runs all tests

Literal

Turns out to be what you expected

Minimal

Contains no duplications

Full of meaning

Without obvious improvements

Written by someone who

cares

Reads well

Beautiful: when the language was made for the problem

O que é código limpo?

Page 10: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

10

???

caminhoR(Vertice v):Vertice west[v] = 0for(w = 0; w < tamanho(); w++) if(adj(v,w))if(est[w] == ­1):imprime(w)caminhoR(w)

Page 11: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

11

Melhor assim?

Page 12: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 13: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 14: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 15: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 16: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

16

Métricas de Código-Fonte

Métricas usadas no contexto de sistemas de software orientados a objeto

Page 17: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

17

Page 18: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

18

Linhas de Código (LOC)

É a medida mais comum para o tamanhode um software. São contadas apenas as linhas executáveis, ou seja, são excluídas

linhas em branco e comentários ...

Page 19: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

19

Linhas de Código (LOC)

No exemplo, a classe HelloWorld tem LOC=3,contando as linhas 1, 3 e 4. A linha 4, apesar de possuir 2 instruções, conta como apenas 1

linha ...

Page 20: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

20

Linhas de Código (LOC)

Para efetuar comparações entre sistemas usando LOC, é necessário que ambos

tenham sido feitos na mesma linguagem de programação e que o estilo

esteja normalizado …

Page 21: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

21

Linhas de Código (LOC)

Os intervalos sugeridos para o LOC de uma classe são: até 70 (bom); entre 70 e 130

(regular); de 130 em diante (ruim).

Page 22: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

22

Page 23: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

23

AMLOCNúmero médio de linhas por

método

Indica se o código está bem distribuído entre os métodos. Quanto maior, mais pesados são os métodos. É preferível ter muitas operações pequenas e de fácil entendimento que poucas

operações grandes e complexas ...

Page 24: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

24

AMLOCNúmero médio de linhas por

método

No exemplo, a classe Printer tem AMLOC=3, pois possui 2 métodos e LOC= 6. Os

intervalos sugeridos são: até 10 (bom); entre 10 e 13 (regular); de 13 em diante (ruim).

Page 25: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

25

DITProfundidade da árvore de

herança

É o número de superclasses e/ou classes ancestrais da classe sendo analisada. São

contadas apenas as superclasses do sistema, ou seja, as classes de bibliotecas não são

contabilizadas. No exemplo, a classe HelloWorldPrinter tem DIT = 1 e nas demais

DIT = 0 ...

Page 26: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

26

DITProfundidade da árvore de

herança

Quanto maior for o valor DIT, maior é o número de atributos e métodos herdados, e

portanto maior é a complexidade. Os intervalos sugeridos são: até 2 (bom); entre 2

e 4 (regular); de 4 em diante (ruim).

Page 27: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

27

Page 28: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

28

NPANúmero de atributos públicos

Os atributos de uma classe devem servir apenas às funcionalidades da própria classe.

Portanto, as variáveis/atributos de classe devem ser ocultadas para evitar

complexidade, pois fica difícil prever os efeitos colaterais de alterar atributos

públicos ...

Page 29: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

29

NPANúmero de atributos públicos

NPA mede o encapsulamento. O valor ideal dessa métrica é zero. Os intervalos sugeridos

são: até 1 (bom); entre 1 e 9 (regular); de 9 em diante (ruim).

Page 30: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

30

NPMNúmero de métodos públicos

Representa o tamanho da interface da classe. Os métodos públicos representam os

serviços que a classe disponibiliza ...

Page 31: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

31

NPMNúmero de métodos públicos

Valores altos para essa métrica indicam que a classe tem demasiadas funcionalidades e

que poderia ser quebrada. Os intervalos sugeridos são: até 10 (bom); entre 10 e 40

(regular); de 40 em diante (ruim).

Page 32: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

32

NPNúmero de Parâmetros

Calcula o número de parâmetros de um método. Obtemos valor zero quando o método avaliado não possui parâmetro. Muitos parâmetros de um método pode indicar que ele está com mais de uma

responsabilidade ...

Page 33: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

33

LCOM4Ausência de coesão em métodos

Seja M = {M1, …, Mn} o conjunto dos métodos da classe analisada. Dois métodos

Mi e Mj estão relacionados se ambos acessam pelo menos um mesmo atributo da classe, ou se Mi chama ou é chamado por

Mj . LCOM4 é a quantidade de partições de “M” formadas após separar os métodos em

conjuntos de métodos relacionados ...

Page 34: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

34

LCOM4Ausência de coesão em métodos

No exemplo, a classe Printer tem LCOM4 = 1, pois todos os métodos acessam a variável

message. HelloWorldPrinter tem LCOM4 = 2, pois o contrutor e o método doNothing() não

estão relacionados ...

Page 35: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

35

LCOM4Ausência de coesão em métodos

Se uma classe tem diferentes conjuntos de métodos não relacionados entre si, é um

indício de que a classe deveria ser quebrada em classes menores e mais coesas.

Os intervalos sugeridos são: até 2 (bom); entre 2 e 5 (regular); de 5 em diante (ruim).

Page 36: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

36

Page 37: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

37

Page 38: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

38

CBOAcoplamento (ligações, conexões)

entre Objetos (classes)

Mede o acoplamento (conectividade) de uma classe. Se uma classe C1 acessa um método ou atributo da classe C2, dizemos que C1 é

cliente da classe fornecedora C2...

Page 39: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

39

CBOAcoplamento (ligações, conexões)

entre Objetos (classes)

● n = número total de classes

Page 40: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

40

CBOAcoplamento (ligações, conexões)

entre Objetos (classes)

No nosso exemplo, CBO(Printer) é 2, pois ela é utilizada pelas outras duas classes.

HelloWorldPrinter é filha e portanto cliente de Printer ...

Page 41: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

41

CBOAcoplamento (ligações, conexões)

entre Objetos (classes)

Se o valor dessa métrica for grande, uma mudança na classe tem potencialmente mais

efeitos colaterais, tornando mais difícil a manutenção. Os intervalos sugeridos são: até

2 (bom); entre 2 e 20 (regular); de 20 em diante (ruim).

Page 42: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

42

Page 43: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

43

ACCM (McCabe)Complexidade Ciclomática

Calcula o número de caminhos linearmente independentes no método analisado,

conhecido como complexidade ciclomática ...

Page 44: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

44

ACCM (McCabe)Complexidade Ciclomática

Obtemos 1 quando não há quebra do fluxo principal. Cada estrutura de controle de fluxo presente no corpo do método adiciona 1 no

valor total da CYCLO ...

Page 45: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

45

ACCM (McCabe)Complexidade Ciclomática

Quando os valores de MaxNesting e CYCLO são próximos, sabemos que muitos dos

controladores de fluxo presentes no método estão encadeados em uma mesma estrutura.

Quando são muito distantes, podemos concluir que os controladores estão

espalhados em estruturas diferentes e que elas não são muito profundas.

Page 46: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 47: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 48: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 49: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

...

Page 50: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 51: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a
Page 52: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

52

Introdução (2)

Page 53: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

53

Software livre● Influenciando a indústria de software e a

economia global nas últimas décadas [Benkler, 2006]

● É considerado um método ágil de desenvolvimento de software [Fowler, 2000; Abrahamsson, 2002; Warsta e Abrahamsson, 2003; Corbucci, 2011]

Page 54: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

54

Software livre

● Pessoas, empresas e governos ainda relutantes na adoção (QualiPSO)

● Incertezas legais, comerciais, questões culturais, falta de confiança no produto e no suporte (QualiPSO)

Page 55: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

55

Qualidade do produto?● Funcionalidade● Confiança● Usabilidade● Eficiência● Manutenibilidade● Portabilidade

[ISO/IEC9126-1, 2001]

Page 56: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

56

Qualidade do produto?

● Funcionalidade● Confiança● Usabilidade● Eficiência● Manutenibilidade● Portabilidade

Page 57: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

57

Por que código-fonte?

A codificação passou a também ser reconhecida como um trabalho

intelectual e criativo.

Page 58: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

58

Por que código-fonte?

A maior parte dos esforços são direcionados à qualidade do código

desenvolvido.

Page 59: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

59

Tese de doutorado na USP

Definir como monitorar e avaliar a qualidade de projetos de software livre, através do estudo das suas

métricas, obtidas pela análise semi-automática de seu código-fonte.

Page 60: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

60

Questões de Pesquisa

QP: Quais métricas devem ser “controladas” (monitoradas) ao longo do tempo?

Page 61: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

61

Questões de Pesquisa

QP: As métricas de código-fonte “melhoram” com o amadurecimento dos projetos?

Page 62: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

62

Metodologia

● Mineração de repositórios de código-fonte de projetos de software livre

● 5 estudos empíricos● Análise quantitativa

Page 63: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

63

Resultados● Uma abordagem para a observação das

métricas de código-fonte● Identificação das distribuições

estatísticas dos valores de métricas e os seus valores frequentes

● uma extensão do modelo de causalidade do conceito de atratividade de projetos de software livre

Page 64: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

64

Resultados

● Ferramenta de coleta de métricas de código-fonte

● Web service para interpretação de métricas de código-fonte

● Rede de monitoramento de métricas de código-fonte

Page 65: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

65

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 66: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

66

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 67: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

[Kon et al., 2011]

Interação entre desenvolvedores

Page 68: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

Níveis de participação

[Crowston e Howison, 2005]

Page 69: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

69

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 70: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

70

Tamanho(LOC)

Page 71: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

71

Coesão(LCOM4)

Page 72: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

72

Acoplamento(CBO)

Page 73: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

73

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 74: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

Contradição entre os trabalhos relacionados:

1) Normal ou Leis de Potência?

2) A média dos valores das métricas é um valor informativo para os estudos?

Page 75: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

Distribuição e valores frequentes das

métricas em projetos de software livre

Page 76: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

76

Hipóteses

H1: O tipo da distribuição dos valores das métricas de código-fonte tendem a ser diferentes entre projetos diferentes.

Page 77: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

77

Hipóteses

H2: A média e mediana não são dados informativos na maioria dos casos.

Page 78: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

78

Hipóteses

H3: Ao agrupar os projetos por linguagem de programação, será possível observar valores frequentes das métricas nos projetos avaliados.

Page 79: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

79

Coleta dos Dados

● Ohloh.net● API● Scripts● Projetos com mais contribuidores e

usuários (ranking)● Fontes dos repositórios oficiais

Page 80: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

80

Metodologia

● Análise descritiva● Testes das distribuições

● Weibull, Poisson, Gamma, Exponencial e Pareto

● Critério de Akaike (FitDist no R)

● Verificação dos percentis (e quantis)

Page 81: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

81

Projetos

Page 82: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

82

Projetos

Page 83: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

83

Média da Complexidade Ciclomática por método

Page 84: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

84

Média da Complexidade Ciclomática por método

Page 85: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

85

Ausência de coesão em métodos

Page 86: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

86

Ausência de coesão em métodos

Page 87: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

87

Número de linhas de código

Page 88: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

88

Número de linhas de código

Page 89: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

89

Complexidade estrutural

Page 90: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

90

Complexidade estrutural

Page 91: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

Correlação entre as métricas

Page 92: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

92

Linux

Page 93: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

93

Free BSD

Page 94: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

94

Eclipse

Page 95: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

95

Open JDK 8

Page 96: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

96

Chrome

Page 97: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

97

Firefox

Page 98: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

98

Evolução Firefox

Page 99: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

99

Resultados (VLC)

Page 100: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

100

Resultados (MPlayer)

Page 101: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

101

Resultados (Kalibro)

Page 102: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

102

Resultados (Kalibro-Tests)

Page 103: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

103

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 104: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

MezuroRede de monitoramento de

código-fonte

Page 105: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

105

Page 106: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

106

Monitorando um projeto

Page 107: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

107

Page 108: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

108

Page 109: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

109

Page 110: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

110

Page 111: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

111

Page 112: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

112

Page 113: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

113

Criando uma configuração para monitoramento

Page 114: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

114

Page 115: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

115

Page 116: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

116

Page 117: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

117

Page 118: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

118

Page 119: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

119

Page 120: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

120

Page 121: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

121

Page 122: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

122

Visualizaçãode Software

Page 123: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

123

Escalabilidadede web services

Page 124: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

124

Mineração de dados

Page 125: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

125

Ferramentas/coletores

Page 126: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

126

Conteúdo

● Desenvolvimento de software livre● Métricas de Código-Fonte● Estudos● Ferramentas● Conclusão

Page 127: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

127

Conclusão● Quais métricas devem ser “controladas”

(monitoradas) ao longo do tempo?● Dependerá de quais característica do código

está interessado em monitorar, por isso nossa abordagem sugere que o monitoramento seja “configurável”. Observando a correlação, uma sugestão é: ACC, ACCM, ANPM, DIT, AMLOC, NOM, NPA, SC.

Page 128: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

128

Conclusão

Os valores das métricas de código-fonte seguem distribuições não-triviais, assim olhar

como medi-las se faz necessário.

Page 129: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

129

Contribuições● Uma abordagem para a observação das

metricas de código-fonte● Identificação das distribuições

estatísticas dos valores de métricas e os seus valores frequentes

● uma extensão do modelo de causalidade do conceito de atratividade de projetos de software livre

Page 130: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

130

Contribuições

● Ferramenta de coleta de métricas de código-fonte

● Web service para interpretação de métricas de código-fonte

● Rede de monitoramento de métricas de código-fonte

Page 131: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

131

Contribuições

● Implicações gerenciais práticas● Empresas● Governos

– Relatório técnico para o TCU

Page 132: Monitoramento de Métricas de Código-Fonte - Stoa Socialsocial.stoa.usp.br/articles/0030/5096/paulo-Consegi.pdf · 1 Monitoramento de Métricas de Código-Fonte: uma abordagem a

132

Monitoramento de Métricas de Código-Fonte:

uma abordagem a ser explorada pelo Governo na verificação da qualidade dos

produtos de software

Paulo Meirelles(FGA/UnB – CCSL/USP)

[email protected] Paulo Meirelles is licensed under a Creative Commons Atribuição 2.5 Brasil License