Sie sind auf Seite 1von 24

2016/1

ARQUITETURA
DE SOFTWARE
MTRICAS
OL!
Eu sou o XXX
E estou aqui hoje para falar do meu tema,
qualquer dvida entre em contato
xxxx@gmail.com
1.
Specialization
index
Intoduo
A

C
OBRIGADO!
Dvidas?
OL!
Eu sou o Fernando Elias de Oliveira
E estou aqui hoje para falar do meu tema,
qualquer dvida entre em contato
fernandoeliasti@gmail.com
2.
Coupling Between
Objects (CBO)
Introduo

Mtricas convencionais

OL!
Meu nome Roger Santos Ferreira
Falarei a vocs hoje sobre Mtricas de Halstead.
rogersantosferreira@gmail.com
3.
Halstead
Introduo
As medidas de complexidade de Halstead
receberam tal nome pelo seu autor Maurice
Howard Halstead, em 1977.

Halstead observou que mtricas de software


deveriam refletir a implementao ou expresso
de algoritmos em diferentes linguagens, mas
independentemente de sua execuo em uma Maurice Howar
d Halstead
plataforma especfica. 1918 - ????
Fonte: Google Imag
ens

Logo, suas mtricas so computadas


estaticamente (diretamente sob o cdigo-fonte)
Objetivos de Halstead

Identificar propriedades mensurveis de software e


suas relaes.

Determinar uma medida quantitativa da


complexidade de um mdulo de programa
diretamente a partir de seu cdigo-fonte.
Definies
De acordo com Halstead:
Um programa de computador uma
implementao de um algoritmo considerado
como uma coleo de tokens os quais podem ser
classificados como operadores e operandos:

Como dizer o que operador e o que operando?


Exemplo:

int x = 1 + 2;
Exemplo explicado:

Ignorar, considerando-o
Modificador da varivel x,
apenas como uma
faz parte de sua
pontuao padro?
definio. Portanto, seria
tambm um operando?
int x = 1 + 2; Operador de fim de linha?
Modifica a natureza do
identificador, tornando-o
um operador?
Exemplo de classificao:

As regras de classificao so definidas de acordo


com o ambiente de testes empregado.
Exemplo: Verysoft Testwell CMT++

OPERANDOS OPERADORES

Identificadores Identificadores que no Palavras reservadas Break, case, class,


so palavras reservadas continue, else, do

Especificadores Bool, char, double, float, Qualificadores de Const, volatile


de tipos int, long tipos

Constantes Caracteres, constantes Operadores lgicos !=, ==, &&, ||, +, +=,
numricas ou textuais e aritmticos ++, {, }, >=
Fonte: http://www.verifysoft.com/en_halstead_metrics.html
Clculo: medidas bsicas
Contando-se, portanto, tais tokens e classificando-os
entre operandos e operadores, tais medidas bsicas
podem ser coletadas:
n1: nmero de operadores distintos
n2: nmero de operandos distintos
N1: nmero total de operadores
N2: nmero total de operandos

Ainda foram adicionados mais dois por Halstead:


n1*: nmero de potenciais operadores Nmero mnimo
n2* nmero de potenciais operandos exigido pela
linguagem.
Ex.: C, main() { }
Mtricas de Halstead:
Todas as mtricas de Halstead para um programa P
so definidas baseadas nas medidas bsicas vistas,
so elas:

1 Tamanho (N) N = N1 + N2

2 Vocabulrio (n) N = n1 + n2

3 Volume (V) V = N * log2 n


Fonte: ABRAN (2010) e IBM Knowledge Center (20--).

V descreve o tamanho da implementao de um algoritmo.


Mtricas de Halstead (cont.):

4 Volume potencial mnimo (V*) V* = (2 + n *) log (2 + n *)


2 2 2

5 Nvel (L) L = V* / V

6 Dificuldade (D) D = (n1 / 2) * (N2 / n2)


^ ^
7 Estimador de Nvel (L) L = (2 / n1) * (n2 / N2)
^
8 Contedo inteligente (I) I=L*V
Fonte: Adaptado de Abran (2010), Serebrenick (2011) e IBM Knowledge Center (20--).

L descreve o nvel do cdigo. Ex.: cdigos de baixo nvel tm maior


propenso ao erro.
D tambm chamado de propenso ao erro.
Mtricas de Halstead (cont.):
9 Esforo de programao (E) E=V*D

10 Tempo de programao (T) T=E/S

11 Estimativa de bugs (B) B = (E^()) / 3000


Fonte: Adaptado de Abran (2010), Serebrenick (2011) e IBM Knowledge Center (20--).

E definido como da atividade mental necessria para se reduzir um


algoritmo j predefinido a um programa P. o total de discriminaes
mentais elementrias para se gerar um programa.
T o tempo para entendimento do algoritmo e programao do mesmo.
S o nmero de Stroud, definido como o nmero mximo de
discriminaes mentais elementrias desenvolvidas pelo crebro
humano por segundo (para cientistas de software = 18).
Para maiores detalhes, favor verificar diretamente na fonte.
Exemplo prtico

main() {
int a, b, c, media;
scanf(%d %d %d, &a, &b, &c);
media = (a + b + c) / 3;
printf(media = %d, media);
}

Os operadores nicos so:


main, (), {}, int, scanf, &, =, +, /, printf

Os operandos nicos so:


a, b, c, media, %d %d %d, 3, media = %d
main() {
Exemplo prtico int a, b, c, media;
scanf(%d %d %d, &a, &b, &c);
media = (a + b + c) / 3;
Volume (V) = 31 * log2 17 = 126,7 printf(media = %d, media);
}
Volume pot. mn. (V*) = 2
Mtricas bsicas
Nvel (L) = 0,01578
N1= 16 Tamanho
Dificuldade (D) = 10,7 (N) = 31
N2= 15
Esforo de programao (E) = 1355,69
n1 = 10 Vocabulrio
n2= 7 (n) = 17
Tempo de programao (T) = 75,31 segundos

n1* = 3 operadores mn.


Estimativa de bugs (B) = 1355,69^ / 3000 = 0,04
n2* = 0 operandos mn.
Referncias
ABRAN, Alain. Chapter 7. Halsteads Metrics: Analysis of Their Designs. Software Metrics &
Software metrology, 2010. Disponvel em: <http://profs.etsmtl.
ca/aabran/Accueil/ChapersBook/Abran%20-%20Chapter%20007.pdf>. Acesso em: 15 maio,
2016.

IBM Knowledge Center. Halstead Metrics. 20--. Disponvel em: <http://www.ibm.


com/support/knowledgecenter/SSSHUF_8.0.0/com.ibm.rational.testrt.studio.
doc/topics/csmhalstead.htm>. Acesso em: 14 maio, 2016.

SEREBRENIK, Alexander. Software metrics (2). Eindhoven University of Technology, 2011.


Disponvel em: <http://www.win.tue.nl/~aserebre/2IS55/2010-2011/10.pdf>. Acesso em: 14
maio, 2016.

VERIFYSOFT. Halstead Metrics: Measurement of Halstead Metrics with Testwell CMT++ and
CMTJava (Complexity Measures Tool), 2010. Disponvel em: <http://www.verifysoft.
com/en_halstead_metrics.html>. Acesso em: 15 maio, 2016.

VIRTUAL MACHINERY. The Halstead Metrics - how they are derived and a discussion about
how appropriate their use is with object-oriented code, 2015. Disponvel em: <http://www.
virtualmachinery.com/sidebar2.htm>. Acesso em: 14 maio, 2016.
OBRIGADO!
dvidas?

Das könnte Ihnen auch gefallen