código limpo e seu mapeamento em métricas de código-fontejoaomm/mac499/arquivos/a...código limpo...
TRANSCRIPT
-
Código Limpo e seu Mapeamento em Métricasde Código-fonte
Lucianna T. AlmeidaJoão Machini
Orientador: Fabio KonCoorientador: Paulo Meirelles
1Sunday, November 14, 2010
-
O Problemavoid dslk(unsigned char janela[],int *posprim,
int *posult,int primeira,int aux, int dist,unsigned char compr,int n)
{ int i,t; int auxi; t=0; auxi=n; primeira=primeira-n; if(dist==0 && aux < 2){ (*posprim)--; for(i=(*posprim);i
-
O Problemavoid dslk(unsigned char janela[],int *posprim,
int *posult,int primeira,int aux, int dist,unsigned char compr,int n)
{ int i,t; int auxi; t=0; auxi=n; primeira=primeira-n; if(dist==0 && aux < 2){ (*posprim)--; for(i=(*posprim);i
-
O Problema
2Sunday, November 14, 2010
-
Código Limpo
Simplicidade
Expressividade
Flexibilidade
Orientação a Objetos
3Sunday, November 14, 2010
-
Mapeamento
Métricas de Código-fonte
Cenários
+ =Ajuda na Detecção
de Problemas
4Sunday, November 14, 2010
-
Nosso TCC
Código
Métricas
Conceitos
CódigoLimpo
5Sunday, November 14, 2010
-
Métodos
6Sunday, November 14, 2010
-
Métodosdef custosAPartirDoVertice(vertice): custos = novo Lista(numeroDeVertices) fila = nova FilaDePrioridades(numeroDeVertices) for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0 fila.insere(nova Aresta(0,0)) while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() for aresta in (arestasDoVertice(verticeDoMomento)): verticeDestino = aresta.verticeDestino() custo = aresta.custo() if(custos[verticeDestino] == -1): custos[verticeDestino] = custos[verticeDoMomento] + custo fila.insere(nova Aresta(verticeDestino, custos[verticeDestino])) else if(custos[verticeDestino] > custos[verticeDoMomento] + custo): custos[verticeDestino] = custos[verticeDoMomento] + custo return custos
7Sunday, November 14, 2010
-
Métodosdef custosAPartirDoVertice(vertice): custos = novo Lista(numeroDeVertices) fila = nova FilaDePrioridades(numeroDeVertices) for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0 fila.insere(nova Aresta(0,0)) while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() for aresta in (arestasDoVertice(verticeDoMomento)): verticeDestino = aresta.verticeDestino() custo = aresta.custo() if(custos[verticeDestino] == -1): custos[verticeDestino] = custos[verticeDoMomento] + custo fila.insere(nova Aresta(verticeDestino, custos[verticeDestino])) else if(custos[verticeDestino] > custos[verticeDoMomento] + custo): custos[verticeDestino] = custos[verticeDoMomento] + custo return custos
Alto LOC12
34
56
7891011
121314
1516
17
7Sunday, November 14, 2010
-
Métodosdef custosAPartirDoVertice(vertice): custos = novo Lista(numeroDeVertices) fila = nova FilaDePrioridades(numeroDeVertices) for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0 fila.insere(nova Aresta(0,0)) while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() for aresta in (arestasDoVertice(verticeDoMomento)): verticeDestino = aresta.verticeDestino() custo = aresta.custo() if(custos[verticeDestino] == -1): custos[verticeDestino] = custos[verticeDoMomento] + custo fila.insere(nova Aresta(verticeDestino, custos[verticeDestino])) else if(custos[verticeDestino] > custos[verticeDoMomento] + custo): custos[verticeDestino] = custos[verticeDoMomento] + custo return custos
Alto LOC12
34
56
7891011
121314
1516
17
while
Alta CYCLOfor
for
if
else if
7Sunday, November 14, 2010
-
Métodosdef custosAPartirDoVertice(vertice): custos = novo Lista(numeroDeVertices) fila = nova FilaDePrioridades(numeroDeVertices) for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0 fila.insere(nova Aresta(0,0)) while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() for aresta in (arestasDoVertice(verticeDoMomento)): verticeDestino = aresta.verticeDestino() custo = aresta.custo() if(custos[verticeDestino] == -1): custos[verticeDestino] = custos[verticeDoMomento] + custo fila.insere(nova Aresta(verticeDestino, custos[verticeDestino])) else if(custos[verticeDestino] > custos[verticeDoMomento] + custo): custos[verticeDestino] = custos[verticeDoMomento] + custo return custos
Alto LOC12
34
56
7891011
121314
1516
17
while
Alta CYCLOfor
for
if
else if
Alto MaxNesting
7Sunday, November 14, 2010
-
Métodosdef custosAPartirDoVertice(vertice): custos = novo Lista(numeroDeVertices) fila = nova FilaDePrioridades(numeroDeVertices) for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0 fila.insere(nova Aresta(0,0)) while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() for aresta in (arestasDoVertice(verticeDoMomento)): verticeDestino = aresta.verticeDestino() custo = aresta.custo() if(custos[verticeDestino] == -1): custos[verticeDestino] = custos[verticeDoMomento] + custo fila.insere(nova Aresta(verticeDestino, custos[verticeDestino])) else if(custos[verticeDestino] > custos[verticeDoMomento] + custo): custos[verticeDestino] = custos[verticeDoMomento] + custo return custos
Alto LOC12
34
56
7891011
121314
1516
17
while
Alta CYCLOfor
for
if
else if
Alto MaxNesting
Muitas tarefas Muitos detalhes
7Sunday, November 14, 2010
-
Métodos
8Sunday, November 14, 2010
-
Métodos
8Sunday, November 14, 2010
-
Métodos
def inicializaFila(vertice): fila = nova FilaDePrioridades() fila.insere(nova Aresta(0,0))
def inicializaCustos(vertice): for i in (1, numeroDeVertices): custos[i] = -1 custos[vertice] = 0
def atualizaCustosAteAcabarVertices(): while(fila.vazia()): verticeDoMomento = fila.verticeDaArestaComCustoMinimo() atualizaCustosAPartirDe(vertice)
def custosAPartirDoVertice(vertice):inicializaCustos()inicializaFila()atualizaCustosAteAcabarVertices()
8Sunday, November 14, 2010
-
Classes
9Sunday, November 14, 2010
-
ClassesM1 M2 M3
M4
A1
M4M4
A2 A3
10Sunday, November 14, 2010
-
ClassesM1 M2 M3
M4
A1
M4M4
A2 A3
Alto LCOM4
10Sunday, November 14, 2010
-
ClassesM1 M2 M3
M4
A1
M4M4
A2 A3
Alto LCOM4
AvgNRA
-
ClassesM1 M2 M3
M4
A1
M4M4
A2 A3
Alto LCOM4
AvgNRA
-
Classes
11Sunday, November 14, 2010
-
Classes
11Sunday, November 14, 2010
-
Estudo de CasoAnalizo-Metrics
- Ferramenta para cálculo de métricas de código-fonte em C++, Java e C
- Software Livre que já colaborávamos
Estudo de Caso- Melhorias no código da ferramenta para deixá-lo mais limpo
- Observação das métricas durante o desenvolvimento
12Sunday, November 14, 2010
-
Referências
- BECK, Kent. Implementation Patterns. Addison Wesley, 2007
- MARTIN, Robert C. Clean Code, Prentice Hall, 2008;
- LANZA, Michele; MARINESCU, Radu. Object Oriented Metrics in Practice. Springer, 2006.
13Sunday, November 14, 2010
-
14Sunday, November 14, 2010