Está en la página 1de 23

O Bom Programador

TechGuides

Critrios para avaliar projetos de software


Cleuton Sampaio, M.Sc.Setembro de 2014.

Como podemos avaliar ou classificar um projeto de software? Como podemos quantificar seu
status ou suas capacidades, e medir quantitativamente sua evoluo?

Ferramentas, existem vrias, porm, carecemos de um padro nico, que nos permita tirarmos
concluses a partir das mtricas, sem nos prendermos aos construtos artificiais de cada uma delas.

o que este trabalho pretende fazer.


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Critrios para avaliar projetos de software de Cleuton Sampaio de Melo Jr est licenciado com uma
Licena Creative Commons - Atribuio-CompartilhaIgual 4.0 Internacional.

O Bom Programador TechGuides - 2 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Contedo
Medidas resumo de dados.................................................................................................................... 3
Medidas de tendncia central...........................................................................................................3
Medidas de disperso.......................................................................................................................4
Quando a mdia deixa de ser boa estimativa...................................................................................5
Isso aplicado s mtricas de software..............................................................................................7
Ento, como avaliar as mtricas de software?.................................................................................9
Impacto negativo.......................................................................................................................10
reas de avaliao..............................................................................................................................12
ARQUITETURA...........................................................................................................................13
Nota Embaralhamento...............................................................................................................13
Nota DMS................................................................................................................................. 14
PROJETO...................................................................................................................................... 14
Nota de Complexidade ciclomtica.......................................................................................... 15
Nota violaes SRP (Coeso)................................................................................................... 16
Nota RFC (Acoplamento).........................................................................................................16
IMPLEMENTAO..................................................................................................................... 17
Nota Aderncia s Regras......................................................................................................... 18
Nota de Testes........................................................................................................................... 20
Nota de duplicao de linhas.....................................................................................................22

O Bom Programador TechGuides - 3 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Medidas resumo de dados

Segundo a rea de Anlise descritiva de dados, medidas resumo servem, como o nome diz, para
resumir a informao contida em uma amostra, nos permitindo enxergar alguma caracterstica da
distribuio dos valores da amostra, entre elas: valores centrais, valores extremos, disperso,
assimetria etc.

Mas por que estamos falando sobre isso? Quando pensamos em qualquer tipo de amostra, a Mdia
logo o resumo mais utilizado. Por exemplo, algum nos diz: O preo do tomate est muito caro
nessa regio, pensamos logo em quanto est o preo mdio do tomate nos mercados regionais.

Porm, quando falamos em avaliar software, temos muitos itens a serem avaliados, e, devido sua
distribuio de frequncias, a mdia pode deixar de ser a melhor estimativa.

Medidas de tendncia central

Temos as seguintes medidas de tendncia central:


Mdia: o valor que aponta para onde mais se concentram os dados de uma distribuio.
Pode ser considerada o ponto de equilbrio das frequncias, num histograma;
Mediana: representa o valor do meio de uma amostra, ordenada ascendentemente. Se o
nmero de elementos mpar, o valor que est na posio central, se par, a mdia dos
valores centrais;
Moda: representa o valor com maior densidade no histograma, o que ocorre com maior
frequncia.

Para avaliar se a mdia um bom valor de estimativa de uma amostra, devemos considerar a sua
distribuio de frequncias.

Para exemplificar isto, vamos considerar o peso dos jogadores de um time de futebol:

O Bom Programador TechGuides - 4 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Neste caso, temos as trs medidas praticamente iguais (Mdia, Mediana e Moda), logo, a
distribuio das frequncias dos pesos dos jogadores est centrada em torno da mdia. Neste caso,
dizemos que a distribuio normal e simtrica:

Medidas de disperso

A amplitude da distribuio nos informa o quo prximos da mdia os valores esto prximos da
mdia:

AT = Mximo Mnimo

O desvio padro, nos diz o quanto os valores esto distantes da mdia (tipicamente). Com ele,
podemos determinar o grau de confiana na mdia. O desvio padro a raiz quadrada da varincia,
e calculado pela frmula:

O Bom Programador TechGuides - 5 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Em uma distribuio normal, temos o seguinte quadro:

Neste caso, temos 68% dos valores agrupados em torno da mdia, com menos de um desvio padro
de diferena para ela.

Neste caso, a mdia uma boa estimativa e representa bem a amostra.

Quando a mdia deixa de ser boa estimativa

Vamos modificar um pouco a nossa tabela de jogadores:

O Bom Programador TechGuides - 6 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Agora, temos uma disperso maior em relao Mdia. E tambm podemos ver que a relao das
trs medidas centrais mudou: Mdia < Mediana < Moda. Isto nos dis que temos maior ocorrncia de
pesos maiores que a mdia, o que indica assimetria direita:

E por que isso um problema? Voc diz que o peso mdio dos seus jogadores de 65 Kg
(aproximadamente), porm, temos jogadores que chegam a pesar 10 kg (ou mais) a menos que a
mdia. Se analisarmos o desvio padro, isso fica mais claro:
Desvio padro da distribuio original: 2,4271195049;
Desvio padro da nova distribuio: 8,9534147879;

O desvio padro da segunda amostra praticamente o tripo do da primeira amostra. Fica claro que a
mdia deixou de ser uma boa estimativa dessa grandeza.

O Bom Programador TechGuides - 7 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Assim como podemos ter assimetria direita, temos tambm o caso da assimetria esquerda,
quando a relao : Mdia > Mediana > Moda:

Em grandezas onde a uniformidade baixa, a mdia no uma boa estimativa.

Isso aplicado s mtricas de software

Mtricas de software, geralmente, no apresentam distribuio uniforme, pois os componentes


tendem a se agrupar em categorias, como:
Classes de Interface de Usurio;
Classes de Negcio;
Classes de Persistncia;
Adaptadores;
Interfaces.

Alm dessa distino nas Classes, as diferenas funcionais entre os softwares podem acarretar
maior disperso nas amostras das mtricas.

Vamos pegar uma mtrica muito comum em qualidade de software: Complexidade ciclomtica, que
mede a quantidade de caminhos independentes de execuo em uma unidade de cdigo fonte.
Podemos considerar a mdia da complexidade ciclomtica dos mtodos como uma boa estimativa
da qualidade do cdigo?

Como podemos avaliar a Complexidade de uma Classe?

Que tal a mdia? Vamos supor uma classe tpica, com 6 mtodos:

O Bom Programador TechGuides - 8 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Temos um nico mtodo complexo: clculo, que apresenta um valor de CC = 6. Note que o
desvio padro praticamente igual mdia, e que existe uma assimetria. Se pegarmos a mdia da
Complexidade ciclomtica como um resumo desta classe, ela ser considerada de baixa
complexidade. Porm, esta uma concluso FALSA, ou seja, um falso negativo.

Ns j discutimos muito sobre um bom valor de Complexidade ciclomtica. No artigo Qual um


bom valor para Complexidade Ciclomtica?, recomendamos seguir a tabela do Autor Steve
McConnell,:
De 0 a 5: Seu cdigo est, provavelmente, ok;
Entre 6 e 10: Pense em maneiras de simplificar o cdigo;
Maior que 10: Quebre o cdigo em dois e insira uma chamada da primeira parte para a
segunda;

Se temos um mtodo da Classe com CC = 6, significa que temos pelo menos seis caminhos bsicos
a serem testados, fora os outros mtodos. O Mtodo clculo est acima da complexidade ideal e
deveria ser refatorado.

Logo, considerar a Classe de baixa complexidade uma concluso errada, a qual fomos induzidos
por usamos uma medida de resumo de dados incorreta.

E, se avaliarmos o projeto como um todo, usando a mdia da CC das classes, estaremos incorrendo
no mesmo erro, s que em escala maior.

O Bom Programador TechGuides - 9 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Ento, como avaliar as mtricas de software?

O ideal dividir a amostra em valores limtrofes, observando as frequncias acima ou abaixo.


Vamos avaliar as classes de um sistema hipottico, quanto Complexidade ciclomtica (CC).
Para avaliar cada classe, pegamos o maior valor de CC de seus mtodos, e usamos como indicador.

Pegar o maior valor de CC dos mtodos de uma classe pode no ser o melhor indicador de CC da
mesma, porm, melhor do que usarmos a mdia dos valores de CC de seus mtodos.

Em nosso sistema hipottico, temos a seguinte tabela de valores de CC para as classes:

Note que temos 10 classes, sendo que 5 esto com valores de CC maiores que o aceitvel (at 5), e
uma delas tem CC > 10. Podemos calcular o ndice de violaes para cada valor limtrofe:

Qtde de ocorrncias
ndice =
Qtde de elementos

Isto nos d um valor que pode ser entendido como percentual. Por exemplo, temos 10 classes, sendo
que 5 delas esto com CC > 5. Temos um ndice de 0,5 ou 50%. E temos uma classe (10%) que
apresenta CC > 10.

O Bom Programador TechGuides - 10 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Qual concluso tiraramos a respeito deste sistema?

Vamos considerar apenas o ndice de classes com CC > 5 (ICC5). fcil transformar o ndice em
nota, de zero a 10:

Nota cc = 10 (ICC5 * 10)

Neste caso, a nota seria 5. Se ns tivssemos menos classes com CC > 5, a nota seria maior:
3 Classes, nota = 7;
1 Classes, nota = 9;

Impacto negativo

No podemos simplesmente atribuir a nota apenas usando o ICC5, pois preciso considerar o
impacto das classes com CC > 10 (ICC10). Podemos usar Mdia ponderada para isso.

Podemos calcular uma nota a atribu-la CC do sistema. Vamos trabalhar com notas de zero a 10,
que so mais fceis de assimilar. Ento, podemos calcular a nota utilizando a Mdia ponderada:

Podemos atribuir pesos aos elementos da nota e depois dividir pela soma dos mesmos.

Os ndices que calculamos, variam de zero a 1 (um), representando a razo de fenmenos


observados pela quantidade de observaes. Podemos calcular o impacto de cada classe de
fenmeno e us-lo como peso para calcular a nota:
1 Classe com CC > 10, em um total de 10 classes: 0,1;
5 Classes com CC > 5, em um total de 10 classes: 0,5;

Vamos supor que os pesos sejam:


ndice de classes com CC > 5: Peso = 4;
ndice de classes com CC > 10: Peso = 6;

O Bom Programador TechGuides - 11 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Ento, podemos calcular duas notas e us-las para calcular a nota mdia de CC do sistema:
NCC5 = 10 (ICC5 *10) = 5;
NCC10 = 10 (ICC10 * 10) = 9;
Nota CC = ((NCC5 * 4) + (NCC10 * 6)) / 10 = 7,4;

Embora tenhamos 50% das classes com CC > 5, o que elevou a mdia foi o fato de termos poucas
classes com CC > 10.

Porm, a nota 7,4 indica que o sistema est bem, do pondo de vista de Complexidade ciclomtica, o
que tambm uma avaliao incorreta. Ele possui mais de 50% das classes com alta complexidade,
logo, no poderia ter nota to alta.

A questo que estamos considerando duas notas separadadas:


Nota por ter poucas classes com CC > 5;
Nota por ter poucas classes com CC > 10.

Existe a questo do impacto negativo. O fato de haver classes com CC > 5 a nota do sistema,
porm o fato de haver classes com CC > 10 um impacto negativo na nota geral, jamais podendo
ser utilizado para melhorar a nota. como se um aluno tivesse perdido um ponto por no entregar
um trabalho. Uma das maneiras de fazer isso calcular a nota geral desta forma:
NCC5 = 10 (ICC5 *10);
NCC10 = ICC10 * 10;
Nota CC = NCC 5 NCC10 = 4;

Agora me parece mais real, ou seja, a nota demonstra que o sistema tem um problema com alta
complexidade.

O Bom Programador TechGuides - 12 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

reas de avaliao

A avaliao de um projeto de software pode ser feita com base em notas, variando de 1 a 10, cujo
clculo seria a Mdia ponderada das notas de suas reas de avaliao.

Em um projeto, no podemos avaliar apenas a Complexidade ciclomtica, pois existem outros


aspectos que devem ser analisados, e nem todos so baseados nos mesmos elementos.

As reas de avaliao podem ser divididas de acordo com o seu impacto na qualidade geral do
projeto:
1. Arquitetura do software;
2. Projeto dos componentes;
3. Implementao.

Problemas arquiteturais apresentam os maiores impactos na qualidade geral, seguidos por


problemas de projeto e problemas de implementao.

J discutimos essas reas de problemas exaustivamente, tanto em meu livro: Qualidade de


Software na Prtica, Editora Cincia Moderna, como na Palestra Tcnica do CISL: Anlise de
cdigo Java com ferramentas Open Source.

A nota geral de um projeto de software pode ser calculada de acordo com a frmula:

narq = nota de arquitetura (peso 5);


nproj = nota de projeto (peso 4);
nimp = nota de implementao (peso 3);
nota = ((narq * 5) + (nproj * 4) + (nimp * 3)) / 10

Exemplos:

narq = 7, nproj = 8, nimp = 6


nota = ((7 * 5) + (8 * 4) + (6 * 3)) / 10 = 8,5

narq = 3, nproj = 9, nimp = 9

O Bom Programador TechGuides - 13 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

nota = ((3 * 5) + (8 * 4) + (6 * 3)) / 10 = 6,5

ARQUITETURA

As notas de arquitetura so baseadas em pacotes, e so avaliadas as mtricas: ndice de


Embaralhamento (dependncias cclicas) e Distncia da Sequncia Principal (balanceamento entre
abstrao e estabilidade). Eis a frmula:

nemb = nota embaralhamento (peso 5);


ndms = nota dms (peso 5);
Nota = ((nemb * 5) + (ndms * 5)) / 10

Vamos detalhar o clculo das notas de acordo com as mtricas de arquitetura.

Nota Embaralhamento

Fonte: relatrio da ferramenta JDepend.

pemb = quantidade de pacotes envolvidos em dependncias cclicas;


qpac = quantidade de pacotes do sistema;
nemb = Nota de embaralhamento (de zero a 10);
nemb : 10 - ((pemb / qpac) * 10);

Exemplos:

Total de pacotes: 5;
Total de pacotes embaralhados: 2;
Nota = 6;

O Bom Programador TechGuides - 14 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Nota DMS

Fonte: relatrio da ferramenta JDepend.


pdms = pacotes com Distncia da Sequncia Principal > 30%;
qpac = quantidade de pacotes do sistema;
nota = 10 - ((pdms / qpac) * 10);

Exemplos:

Total de pacotes: 7;
Total de pacotes com dms > 30%: 4;
Nota = 4,3;

PROJETO

Fonte: relatrio da ferramenta jQana.

As notas de projeto so baseadas em classes. O clculo feito com base nas notas obtidas nas
avaliaes de: Complexidade ciclomtica, Violaes do Princpio da Responsabilidade nica
(coeso) e Response For a Class (acoplamento):

ncc = nota complexidade ciclomtica (peso 4);


nvsrp = nota violaes SRP (peso 4);
nrfc = nota RFC (peso 2);
nota = ((ncc * 4) + (nvsrp * 4) + (nrfc *2)) / 10

Exemplo:

ncc = 7, nvsrp = 5, nrfc = 2


nota = ((7 * 4) + (5 * 4) + (2 * 2)) / 10 = 5,2

ncc = 9, nvsrp = 8, nrfc = 1

O Bom Programador TechGuides - 15 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

nota = ((9 * 4) + (8 * 4) + (1 * 2)) / 10 = 5,2 = 7,0

Nota de Complexidade ciclomtica

Fonte: relatrio da ferramenta jQana, mtrica: CC mxima por classe.

A nota calculada levando-se em conta o ndice de classes com CC > 5 e o impacto negativo das
classes com CC > 10:

qc5 = qtde classes com cc > 5 e <= 10;


qc10 = qtde classes com cc > 10;
qct = qtde de classes total;
nota pcc5 = 10 - ((qc5 / qct) * 10);
Impacto pcc10 = (qc10 / qct) * 10;
notacc = pcc5 - pcc10

Exemplos:

qct = 30;
qc5 = 10;
qc10 = 5;
pcc5 = 10 - ((10 / 30) * 10) = 6,67;
pcc10 = (5 / 30) * 10 = 1,67;
notacc = 6,67 - 1,67 = 5;

qct = 30;
qc5 = 3;
qc10 = 17;
pcc5 = 10 - ((3 / 30) * 10) = 9,0;
pcc10 = ((5 / 30) * 10) = 5,67;
notacc = 6,67 - 1,67 = 3,33;

O Bom Programador TechGuides - 16 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Nota violaes SRP (Coeso)

Fonte: relatrio da ferramenta jQana, mtrica: LCOM4 por classe.

qlcom4 = Qtde classes com LCOM4 > 1;


qct = qtde de classes total;
nota = 10 - ((qlcom4 / qct) * 10);

exemplos:

qct = 30, qlcom4 = 7;


nota = 10 - ((7 / 30) * 10) = 7,67;

qct = 30, qlcom4 = 17;


nota = 10 - ((17 / 30) * 10) = 4,33;

Nota RFC (Acoplamento)

Fonte: relatrio da ferramenta jQana, mtrica: RFC por classe.

q50 = qtde de classes com RFC > 50;


qct = qtde de classes total;
nota = 10 - ((q50 / qct) * 10);

Exemplos

qct = 30, q50 = 10;


nota = 10 - ((10/30) *10) = 6,67;

O Bom Programador TechGuides - 17 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

IMPLEMENTAO

Fonte: relatrios das ferramentas PMD, Checkstyle e Cobertura.

As notas de implementao so baseadas em linhas de cdigo (SLOC). Para o PMD e o Checkstyle,


so consideradas SLOC quaisquer linhas que:
No estejam em branco;
No sejam comentrios.

Para a parte de testes (Cobertura), usamos o critrio de linhas vlidas da ferramenta Cobertura
(executveis).

Como pode haver mais de uma violao por linha de cdigo, considerada apenas a violao de
maior severidade.

O clculo da nota de Implementao feito atravs da frmula:


nregras = Nota de Aderncia s regras;
ntestes = Nota de cobertura e sucesso dos testes;
ndupl = Nota sobre duplicao de cdigo;
Nota = ((nregras * 3) + (ntestes * 5) + (ndupl * 2)) / 10;

Exemplos:
nregras = 7, ntestes = 8, ndupl = 4, nota = 6,9;
nregras = 9, ntestes = 3, ndupl = 7, nota = 5,6;
nregras = 6, ntestes = 8, ndupl = 9, nota = 7,6;

O Bom Programador TechGuides - 18 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Nota Aderncia s Regras

Fonte: relatrios das ferramentas PMD, e Checkstyle;

npmd = nota do PMD;


ncks = nota do Checkstyle;
nota aderncia = ((npmd * 6) + (ncks *4)) / 10;

Exemplos:

npmd = 7, ncks = 4;
nota = ((7 * 6) + (4 * 4)) / 10 = 5,8;

Como obter a nota do PMD e do Checkstyle

Para calcular as notas do PMD e do Checkstyle, Temos que calcular os ndices de violaes por
cada categoria de erro. As categorias podem ser agrupadas em:
NONE: Nenhum erro ou s informacional;
CRITICAL: Erro crtico, que bloqueia o projeto para qualquer outra coisa;
SEVERE: Erro muito grave;
MAJOR: Erro grave;
MINOR: Erro leve;
WARNING: Observao. Pode at no significar um erro;

nota = ((vcritical * 4) +
(vsevere * 2,5) +
(vmajor * 2) +
(vminor * 1) +
(vwarning * 0,5)) / 10

ql = quantidade de linhas de cdigo


vcritical = 10 - ((qtde violaes critical / ql) * 10)

O Bom Programador TechGuides - 19 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

vsevere = 10 - ((qtde violaes severe / ql) * 10)


vmajor = 10 - ((qtde violaes major / ql) * 10)
vminor = 10 - ((qtde violaes minor / ql) * 10)
vwarning = 10 - ((qtde violaes warning /ql) * 10)

Exemplos:

ql = 1500
qtde violaes critical = 300
qtde violaes severe = 100
qtde violaes major = 150
qtde violaes minor = 200
qtde violaes warning = 80
vcritical = 10 - ((300 / 1500) * 10) = 8
vsevere = 10 - ((100 / 1500) * 10) = 9,33
vmajor = 10 - ((150 / 1500) * 10) = 9
vminor = 10 - ((200 / 1500) *10) = 8,67
vwarning = 10 - ((80 / 1500) * 10) = 9,47
Nota PMD =((8 * 4) + (9,33 * 2,5) + (9 * 2) + (8,67 * 1) + (9,47 * 0,5)) / 10 = 8,67;

Agora, um exemplo muito ruim:

ql = 1500
qtde violaes critical = 1000
qtde violaes severe = 800
qtde violaes major = 1700
qtde violaes minor = 1000
qtde violaes warning = 800
vcritical = 10 - ((1000 / 1500) * 10) = 3,33
vsevere = 10 - ((800 / 1500) * 10) = 4,66
vmajor = 10 - ((1700 / 1500) * 10) = 0,0
vminor = 10 - ((1000 / 1500) *10) = 3,33

O Bom Programador TechGuides - 20 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

vwarning = 10 - ((800 / 1500) * 10) = 4,66


Nota PMD =((3,33 * 4) + (4,66 * 2,5) + (0 * 2) + (3,33 * 1) + (4,66 * 0,5)) / 10 = 3,06

Um exemplo muito bom:

ql = 1500
qtde violaes critical = 10
qtde violaes severe = 50
qtde violaes major = 80
qtde violaes minor = 20
qtde violaes warning = 100
vcritical = 10 - ((10 / 1500) * 10) = 9,93
vsevere = 10 - ((50 / 1500) * 10) = 9,66
vmajor = 10 - ((80 / 1500) * 10) = 9,46
vminor = 10 - ((20 / 1500) *10) = 9,86
vwarning = 10 - ((100 / 1500) * 10) = 9,33
Nota PMD =((9,93 * 4) + (9,66 * 2,5) + (9,46 * 2) + (9,86 * 1) + (9,33 * 0,5)) / 10 = 9,73

Nota de Testes

Fonte: relatrio da ferramenta Cobertura.

ncob = nota de cobertura;


ntok = nota de sucesso nos testes;
Nota de cobertura = ((ncob * 6) + (ntok * 4)) / 10;

Exemplos:
ncob = 6, ntok = 7;
nota = ((6 * 6) + (7 * 4)) / 10 = 6,4;

ncob = 8, ntok = 10;


nota = ((8 * 6) + (10 * 4)) / 10 = 8,8;

O Bom Programador TechGuides - 21 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

Nota de Cobertura de testes

Apenas no caso de cobertura de testes, o SLOC fornecido pelo prprio plugin Cobertura:
ql = qtde total de linhas;
qt = qtde total de linhas testadas;
nota = (qt / ql) * 10;

Como o ndice positivo, ou seja, quanto maior, melhor, ento a nota calculada no a diferena
para 10.

Exemplos:

ql = 1500, qt = 750
nota = ((750 / 1500) *10) = 5

ql = 1500, qt = 300
nota = ((300 / 1500) *10) = 2

ql = 1500, qt = 950
nota = ((300 / 1500) *10) = 6,33

Nota de sucesso nos testes

qtst = quantidade de testes executados


qf = quantidade de testes falhos
nota = 10 - ((qf / qtst)*10)

Exemplos

qtst = 10, qf = 3

O Bom Programador TechGuides - 22 / 23


Critrios para avaliar um projeto de software Cleuton Sampaio Setembro de 2014

nota = 10 - ((3/10) * 10) = 7

qtst = 10, qf = 8
nota = 10 - ((8/10) * 10) = 1

qtst = 10, qf = 1
nota = 10 - ((1/10) * 10) = 9

Nota de duplicao de linhas

Fonte: relatrio CPD da ferramenta PMD.

ql = quantidade total de linhas de cdigo;


qdup = quantidade total de linhas duplicadas;
nota = 10 - ((qdup / ql) *10);

Exemplos:

ql = 1500, qdup = 100;


nota = 10 - ((100/1500)*10) = 9,33;

ql = 500, qdup = 200;


nota = 10 - ((200/500)*10) = 6;

O Bom Programador TechGuides - 23 / 23