Anda di halaman 1dari 6

50 Engenharia de Software Magazine - Mtricas de Software

Thamine Chaves de Abreu


thamine.abreu@gmail.com
Atualmente cursa especializao em De-
senvolvimento de Aplicaes para Web no
Centro de Ensino Superior de Juiz de Fora
(CES/JF), Bacharel em Sistemas de Infor-
mao pela Universidade Severino Sombra
(USS), Desenvolvedor de Sistemas Web na
Granbery Consultoria Jnior em projeto
para a Fundao COPPETEC, possui expe-
rincia de 4 anos em desenvolvimento de
sistemas Java (web/desktop).
Leonardo da Silva Mota
leonardo.smota@hotmail.com
Atualmente cursa especializao em De-
senvolvimento de Aplicaes para Web no
Centro de Ensino Superior de Juiz de Fora
(CES/JF), Bacharel em Sistemas de Infor-
mao pela Universidade Severino Sombra
(USS), Desenvolvedor de Sistemas Web na
Granbery Consultoria Jnior em projeto
para a Fundao COPPETEC, programa-
dor certificado Java (SCJP), atuou como
professor assistente no curso de Sistemas
de Informao da USS e dos cursos de in-
formtica da Fundao de Apoio a Escola
Tcnica (FAETEC), possui experincia de
4 anos em desenvolvimento de sistemas
Java (web/desktop).
Marco Antnio Pereira Arajo
maraujo@acessa.com
Doutor e Mestre em Engenharia de Sistemas
e Computao pela COPPE/UFRJ, Especialista
em Mtodos Estatsticos Computacionais e
Bacharel em Matemtica com Habilitao em
Informtica pela UFJF, Professor dos cursos de
Bacharelado em Sistemas de Informao do
Centro de Ensino Superior de Juiz de Fora e
da Faculdade Metodista Granbery, Analista de
Sistemas da Prefeitura de Juiz de Fora e Editor
da Engenharia de Software Magazine.
De que se trata o artigo?
O artigo trata da utilizao de mtricas de software
no gerenciamento de projetos, sendo fortes aliadas
na estimativa, acompanhamento e apoio em toma-
da de decises durante a construo de produtos de
software, visando uma melhor qualidade de todo
este processo.
Para que serve?
Mtricas de software servem para apresentar medi-
das, preferencialmente quantitativas, que reitam
caractersticas especcas de processos e de produtos
em construo, podendo ser utilizadas em diferentes
dimenses, como esforo, tamanho, complexidade,
dentre outras.
Em que situao o tema til?
A coleta adequada de mtricas, com suas res-
pectivas anlises, pode auxiliar o Engenheiro
de Software na tomada de decises ao longo
do desenvolvimento de um projeto, visando a
melhoria da qualidade do processo e do produto
em construo.
Mtricas de Software
Como utiliz-las no gerenciamento de projetos de software
A
garantia da qualidade uma
das principais preocupaes da
indstria de desenvolvimento
de software, pois atualmente a maior
parte das empresas atuantes no mercado
utiliza esse tipo de aplicao para gerir
seus negcios, produtos e relacionamen-
tos com clientes, necessitando maior
confiabilidade e qualidade. Existem
diversas medidas de garantia de qua-
lidade fundamentais para o sucesso de
qualquer tipo de aplicao de software,
dentre elas, uma das mais simples e
menos custosa, a medio de software.
Nesse sentido, a medio de software
auxilia a tomada de deciso, pois atravs
Abordagens Tradicionais de Desenvolvimento
Esta seo traz artigos que apresentam como e quando utilizar as diferentes abordagens
tradicionais de apoio ao desenvolvimento de projetos de software
Edio 21 - Engenharia de Software Magazine 51
GERNCI A DE PROJETOS
de dados quantitativos, capaz de informar que aspectos do
produto atendemou no ao padro de qualidade especificado,
alm de permitir a avaliao dos benefcios de novos mtodos
e ferramentas de engenharia de software, o entendimento e
aperfeioamento do processo de produo, a avaliao do
retorno do investimento e tornar o gerenciamento de projetos
baseado em fatos e no achismos, por exemplo.
Para medir software, so utilizadas diversas mtricas que so
como tipos de medies aplicadas a um sistema de software,
documentao ou processo relacionado. Atravs dessas mtri-
cas possvel determinar o esforo ou tempo para realizao
de uma tarefa ou o tamanho do produto, por exemplo. Alm
disso, as mtricas de software so facilmente calculadas, en-
tendidas e testadas e independemdo observador que as aplica,
sendo tambm uma boa fonte para estudos estatsticos acerca
do ciclo de vida do software.
Dentro desse contexto, este artigo tempor objetivo apresentar
algumas mtricas de software e sua importncia no processo
de desenvolvimento. Para isso, algumas mtricas sero aplica-
das empequenos exemplos, permitindo ao leitor compreender
e analisar seus benefcios imediatos.
Utilizao de mtricas
Existem dois tipos de mtricas no contexto de desenvolvi-
mento de produtos de software: as mtricas diretas, que so
realizadas em termos de atributos observveis, como por
exemplo, esforo, tamanho e custo, e as mtricas indiretas ou
derivadas, que podem ser obtidas atravs de outras mtricas,
como por exemplo, complexidade, confiabilidade, e facilidade
de manuteno. Quanto ao contexto, podem ser aplicadas em
produtos ou em processos. Quando as mtricas incidem dire-
tamente no produto de software, so chamadas de mtricas de
predio, quando em processos de software, so comumente
chamadas de mtricas de controle e sua aplicaonormalmente
realizada em processos j maduros e controlados.
Para obter resultados significativos, as mtricas devem ser
aplicadas em um ciclo constante, que envolve as etapas de
planejamento, medio, anlise de resultados, tomada de de-
ciso e implementao das decises. Desta maneira, pode-se
construir uma base histrica do artefato medido que permitir
ao engenheiro de software analisar que processos, ferramentas
e mtodos melhor se aplicam quele tipo de produto. Alguns
cuidados tambmdevemser tomados no processo de medio,
como o momento e a escolha do conjunto de mtricas mais
relevantes a serem aplicadas, e a comparao entre produtos
atravs da aplicao de mtricas (pois nenhumproduto igual
a outro). Oescopo, os desenvolvedores e o ambiente so fatores
que podeminfluenciar o processo de desenvolvimento. Assim,
comparaes devem ser cuidadosamente analisadas.
As mtricas podem e devem ser aplicadas durante as fases
de desenvolvimento do software, o que garante ainda mais
seu impacto positivo no produto final.
Segundo alguns especialistas, para medir artefatos de softwa-
re atravs de mtricas significativas, as medies devem ser
definidas de acordo comobjetivos especficos. Nesse sentido, o
GQM (Goal/Question/Metric), desenvolvido por Basili em1988,
uma abordagempara aplicao de mtricas afimde aprimorar
o processo de desenvolvimento de software (e, consequente-
mente, os produtos de software gerados) enquanto mantm
os objetivos de negcio e objetivos tcnicos da organizao
nivelados. uma abordagem top-down que estabelece uma
medio sistemtica para objetivos relacionados ao processo
de desenvolvimento, em que a equipe comea estabelecendo
os objetivos organizacionais, define metas de medio, insere
questes com o propsito de abordar os objetivos especifica-
dos e identifica as mtricas que fornecem respostas para as
questes definidas.
O GQM define um modelo de trs nveis, ilustrado na Figura 1.
Figura 1.
O GQM pode ser aplicado em todo o ciclo de vida de produ-
tos, processos e artefatos de software e bem alinhado com
o ambiente organizacional, sendo um meio adequado para
conseguir dados confiveis e conhecimento sobre as prticas
de software da organizao para conduzir a melhoria do
processo. Nesse contexto, til para auxiliar na compreenso
e formar um baseline das prticas aplicadas no desenvolvi-
mento de software, evoluir as atividades de medio, guiar e
monitorar processos de software e reduzir custos de desen-
volvimento, por exemplo. O GQM pode ser utilizado tambm
como base de fundamentao para outras tcnicas de medio
de software.
O GQM pode ser muito til na definio de quais mtricas
so necessrias de seremcoletadas e analisadas para responder
questes sobre um determinado objetivo. Isso importante
para evitar que esforo seja gasto com coleta desnecessria de
mtricas, que provavelmente nunca sero utilizadas.
Algumas mtricas comumente utilizadas
Softwares podem ser medidos (ou estimados) baseados em
diversos tipos de perspectivas, como tamanho e complexidade.
Alm disso, em funo da etapa do desenvolvimento, diferen-
tes mtricas podem ser colhidas para um mesmo produto. Por
exemplo, para a mediode tamanhona etapa de levantamento
de requisitos, podemos utilizar como mtrica o nmero de
requisitos especificados. J na fase de projeto, o tamanho pode
ser medido em funo do nmero de classes e, na fase de codi-
ficao, a partir no nmero de linhas de cdigo fonte.
A seguir, sero apresentadas algumas das principais m-
tricas baseadas nos tipos de medio citados e, para melhor
52 Engenharia de Software Magazine - Mtricas de Software
compreenso, sero utilizados exemplos de cdigos e aplicao
das mtricas.
Anlise de Pontos de Funo (APF): visa estimar o ta-
manho do software baseado em Pontos de Funo (PFs).
Seu objetivo medir as funcionalidades do software, sem
se preocupar com a tecnologia que ser utilizada na im-
plementao e, pode ser aplicado j nos estgios iniciais
do desenvolvimento de software. A Tabela 1 apresenta as
fases para sua medio.
Nmero de linhas de cdigo (LOC, KLOC): assim como a
APF, visa estabelecer o tamanho de umsistema, baseando-se
no nmero de linhas de cdigo. Essa medio pode auxiliar
o engenheiro de software a determinar o tamanho de uma
aplicao j construda ou estimar o esforo a ser conside-
rado para a obteno de um produto a ser desenvolvido.
Embora seja bastante objetiva, bastando analisar o cdigo-
fonte de produtos concludos para obt-la, ela pode variar
de acordo com a linguagem de programao utilizada e,
portanto, as estimativas devemconsiderar dados de projetos
similares apenas na mesma linguagem.
Complexidade Ciclomtica (CC): proposta por McCabe
em 1976, fornece uma medida quantitativa da complexidade
lgica de um programa. Atravs dessa mtrica possvel
definir o nmero de caminhos possveis de um algoritmo
atravs do seu nmero de condies (if, for, while, do e
switch) e assim, especificar o quanto umsistema complexo
e, por conseqncia, testvel, pois apresenta umindcio do
nmero de casos de teste a serem realizados para cobrir as
possibilidades de um algoritmo. O ideal que a complexi-
dade ciclomtica seja baixa, pois desta forma, as funes
podem ser mais facilmente entendidas e modificadas. O
FASE DESCRIO
Determinar o tipo de contagem de pontos de funo Existem trs tipos de contagem que podem ser levadas em conta: contagem de PF de projeto de desenvolvimento, de aplicaes instaladas e
de projetos de manuteno.
Determinar o escopo de contagem e a fronteira da aplicao A fronteira da aplicao definida estabelecendo um limite lgico entre a aplicao que est sendo medida, o usurio e outras aplicaes. O
escopo para a contagem define a parte do sistema (funcionalidades) a ser contada.
Determinar a contagem de pontos de funo no ajustados Essa contagem leva em conta dois tipos de funo: de dados e transacionais, bem como sua complexidade (simples, mdia ou complexa).
Contagem das funes de dados Contagem referente s funcionalidades relativas aos requisitos de dados internos e externos aplicao.
Contagem das funes transacionais Contagem referente s funcionalidades de processamento de dados do sistema fornecidas para o usurio, como entradas e consultas externas.
Determinar o valor do fator de ajuste Baseado em diversas caractersticas gerais de sistemas, que avaliam a funcionalidade geral da aplicao que est sendo contada e seus nveis
de influncia que podem ser determinados com base em uma escala de 0 a 5.
Calcular os pontos de funo ajustados PFs ajustados so calculados, considerando o tipo de contagem definido no primeiro passo.
Tabela 1. Fases para a medio por pontos de funo
SEI (Software Engineering Institute) definiu uma faixa de
valores para a CC, que indicam o grau de complexidade de
um algoritmo, conforme mostra a Tabela 2.
Para exemplificar o clculo da complexidade ciclomtica,
ser utilizado um algoritmo para clculo de aprovao de
um aluno. Os possveis caminhos no algoritmo so nume-
rados, conforme mostra a Figura 2.
Figura 2. Numerao de possveis caminhos em um algoritmo
Existem diversas formas de clculo da CC, atravs de fr-
mulas, ou pela contagemde caminhos possveis. ATabela 3
ilustra as possveis formas de clculo da complexidade
ciclomtica para este algoritmo.
Para programas grandes e complexos, calcular a com-
plexidade ciclomtica de cada funo pode se tornar uma
tarefa exaustiva. Por este motivo, ferramentas automatizadas
podem ser utilizadas, como o plugin Metrics for Eclipse
(ver seo Links), um plugin gratuito para a IDE Eclipse
que calcula a complexidade em sistemas desenvolvidos na
linguagem Java. A Figura 3 ilustra o clculo realizado pela
ferramenta.
Complexidade Situao
1-10 Programa simples, baixo risco.
11-20 Programa mais complexo, risco moderado.
21-50 Programa complexo, risco alto.
Maior que 50 Programa no testvel, risco elevado.
Tabela 2.
Edio 21 - Engenharia de Software Magazine 53
GERNCI A DE PROJETOS
Mtricas de Chidamber & Kemerer (CK): foram propostas
por Chidamber & Kemerer em 1994, um conjunto de seis m-
tricas que permitem a anlise quantitativa dos artefatos de
software construdos utilizando o paradigma da orientao a
objetos. Essas mtricas tm o objetivo de salientar as classes
que possivelmente contm maior nmero de defeitos, com o
propsito de direcionar os esforos de teste.
1. WMC (Weighted methods per class - Mtodos ponderados
por classe): clculo do nmero de servios por classe, que
pode auxiliar o engenheiro de software indicando o esforo
necessrio para o teste de complexidade da classe. Quando
classes apresentam um alto WMC, significa que tendem ser
especficas, ou seja, destinando-se a necessidades individuais,
o que restringe sua reutilizao.
2. DIT (Depth of the inheritance tree - Profundidade da
rvore de herana): nmero mximo de superclasses acima
da classe emquesto. UmDIT alto pode indicar que (i) a classe
em questo herdou muitas caractersticas comuns a outras
classes, indicando que suas superclasses esto preparadas
Forma de clculo Clculo
Contagem atravs dos nmeros de
arcos e ns
CC = E N + 2
onde:
E= nmero de arcos
N= nmero de ns
Contagem atravs do nmero de
ns predicados (que indicam uma
deciso)
CC = P + 1
onde:
P= nmero ns predicados (decises)
Contagem visual Atravs do nmero de regies fechadas do grfico
construdo, considerando tambm a regio externa
Contagem dos caminhos possveis CC = 5
1, 2, 10
1, 3, 4, 10
1, 3, 5, 6, 10
1, 3, 5, 7, 8, 10
1, 3, 5, 7, 9, 10
Tabela 3. Formas para clculo da Complexidade Ciclomtica
Figura 3. Clculo da complexidade ciclomtica no plugin Metrics for Eclipse
para reutilizao, visto que provavelmente possuem alto
nvel de abstrao, (ii) pode indicar que a classe herda mui-
tos servios, o que pode aumentar consideravelmente sua
complexidade.
3. NOC (Number of children - Nmero de filhos): nmero
de subclasses posicionadas imediatamente abaixo da classe
em questo. Um NOC alto indica que uma superclasse possui
muitos filhos que necessitaram implementar caractersticas
prprias, demonstrando baixo nvel de abstrao, visto que
podem existir poucas caractersticas em comum entre as
classes filhas. A Figura 4 exibe uma hierarquia de classes,
que demonstra um NOC de valor trs. Pode-se observar que
quanto maior o nmero de mtodos e atributos especializados,
menores so as chances de reutilizao das classes filhas e
mais complexas ficamas operaes de polimorfismo. Emuma
situao simples, como a do exemplo, o valor NOC no tem
impacto negativo sobre o sistema, porm caso o cenrio seja
umsistema complexo commuitas classes filhas, importante
acompanhar os valores de NOC, com o propsito de tomar
medidas que evitem nmeros altos.
Figura 4.
4.CBO (Coupling between object classes - Acoplamento
entre classes de objetos): o nvel de acoplamento entre as
classes. Um CBO alto indica que a classe possui muitos rela-
cionamentos, o que dificulta sua reutilizao e aumenta sua
complexidade, visto que a classe torna-se dependente de outras
para efetuar suas operaes. Essa mtrica auxilia o engenheiro
de software a avaliar o nvel de reaproveitamento da aplicao
e o esforo despendido em testes.
5.LCOM (Lack of cohesion in methods - Falta de coeso em
mtodos): Nmero de acessos a um ou mais atributos em co-
mumpelos mtodos da prpria classe. Quanto maior o LCOM,
menos coesa a classe. A coeso em mtodos a capacidade
dos mtodos realizaremapenas a funo a que so destinados
e, para isso devem acessar apenas atributos essenciais ao seu
funcionamento. Portanto, importante que o LCOMseja baixo
a fim de aumentar a reutilizao e diminuir a complexidade
da classe.
54 Engenharia de Software Magazine - Mtricas de Software
6.RFC (Response for a class - Resposta de uma classe):
Indica a capacidade de resposta que a classe tem ao receber
mensagens de seus objetos (conjunto resposta). o nmero de
mtodos que podem ser chamados em resposta a uma mensa-
gem recebida por um objeto ou por algum mtodo da classe.
Quanto maior o RFC, maior a possibilidade da classe atender
s suas funes. Em contrapartida, para obter um RFC alto,
necessrio projetar uma estrutura de classes adequada que
possa tender a essa particularidade, o que acaba gerando maior
complexidade, tornando necessrio maior esforo de teste.
Mtricas de Lorenz & Kidd: Lorenz &Kidd, tambmem1994,
propuseramum conjunto de quatro mtricas, comumente cha-
madas mtricas LK, que se baseiam assim como as mtricas
CK, no clculo quantitativo de alguns aspectos fundamentais
da Orientao a Objetos, como os atributos, mtodos, herana,
coeso e acoplamento. A diferena entre as mtricas LK e as
mtricas CK em relao metodologia empregada em seu
clculo.
1.CS(Class size - Tamanho da classe): o nmero de mtodos
e atributos da prpria classe e herdados de suas superclasses.
Um nmero alto de CS indica que a classe pode ser muito espe-
cfica, atendendo necessidades privadas, o que pode dificultar
sua reutilizao e aumentar sua complexidade.
2.NOO (Number of operations overriden by a subclass
- Nmero de operaes redefinidas por uma subclasse):
nmero de sobrescritas de mtodos em subclasses. Os
mtodos herdados de uma superclasse podem ser sobres-
critos, ou seja, redefinidos em subclasses, com o propsito
de tornar sua funcionalidade mais especfica. De certa
forma, essa redefinio de mtodos pode ferir a abstrao
implcita da superclasse e um nmero elevado de NOO
pode indicar problemas estruturais, pois muitas subclas-
ses do sistema tm mtodos redefinidos e possivelmente
esto hierarquicamente mal projetadas. Utilizando ainda
o exemplo da Figura 4, nas Listagens 1, 2 e 3 pode-se ob-
servar trechos de cdigo das trs classes (Gerente, Diarista
e Vendedor), que redefinem o mtodo calculaSalario(). As
classes Gerente e Vendedor tambm redefinem o mtodo
getCargo(), e ainda,a classe Vendedor redefine o mtodo
getDepartamento(). Apesar de no representar um risco
estrutural para o projeto, no caso do exemplo, o nmero
de mtodos redefinidos indica quais classes devem ter sua
evoluo acompanhada. Em um projeto de grande porte e
crtico, pode ser complicado reestruturar uma hierarquia
de classes no meio do projeto e o NOC indica que classes
possivelmente devem ser reestruturadas o quanto antes. A
Figura 5 apresenta o resultado da coleta dessa mtrica com
a ferramenta Metrics for Eclipse.
3. NOA (Number of operations added by a subclass - Nmero
de operaes adicionadas por subclasse): nmero de mtodos
e atributos definidos em uma subclasse. Um NOA alto quer
Figura 5. Coleta da Mtrica NOO pela ferramenta Metrics for Eclipse, aqui
chamada de Number of Overridden Methods
Listagem 1.
public String getCargo (){
return Gerente;
}
public double calculaSalario(){
double taxaTotal=(getSalario()*taxaDependentes)*numDependentes;
return getSalario()-getDesconto() + taxaTotal;
}
Listagem 2.
public double calculaSalario(){
return horasTrabalhadas * valorHora;
}
Listagem 3.
redefinidos na classe Vendedor
public Departamento getDepartamento(){
return new Departamento(Departamento.VENDAS);
}
public String getCargo(){
return vendedor;
}
public double calculaSalario(){
return (getSalario()- getDesconto())+(numeroVendas *
comissaoPorVenda);
}
dizer que a subclasse adicionou muitos mtodos e atributos
em sua definio, o que indica um problema estrutural, j que
boa parte de seus atributos deveria ser definida em super-
classes. Alm de aumentar a complexidade do sistema como
um todo, um valor elevado de NOA reduz as possibilidades
de reutilizao.
4. SI (Specialization index - ndice de especializao): n-
mero de mtodos adicionados, eliminados ou redefinidos em
uma classe. Na verdade, essa mtrica complementa as mtricas
NOO e NOA e um valor alto indica tambm um problema de
estruturao de classes, j que possivelmente foramrealizadas
alteraes para atendimento de necessidades especficas. Clas-
ses muito especficas dificilmente so reaproveitadas, ferindo
um dos princpios bsicos da OO, a reutilizao.
A seguir, so apresentadas na Figura 6 as possveis m-
tricas coletadas de um fragmento de sistema de controle de
Recursos Humanos, atravs da ferramenta Metrics for Eclipse,
para demonstrar como simples e rpida a coleta de um
conjunto significativo de mtricas atravs de ferramentas
automatizadas.
Edio 21 - Engenharia de Software Magazine 55
GERNCI A DE PROJETOS
Alguns outros tipos de mtricas
Diversos outros tipos de mtricas so largamente utilizados,
como mtricas de confiabilidade e esforo.
Mtricas de confiabilidade so normalmente baseadas em
nmero de defeitos apresentados por uma aplicao, poden-
do ser medidas por intervalo de tempo ou por verso de um
produto em uso. Nessa categoria, ferramentas de apoio como
BugZilla, Mantis ou Trac so boas aliadas para o registro e
acompanhamento de defeitos.
Mtricas de esforo so importantes no acompanhamento de
processos de software, sendo comumente utilizada a medio
de esforo por Homem/Hora, oualguma derivada desta, como
Homem/Ms, que refletema quantidade de recursos humanos
alocados ao projeto por unidade de tempo.
Concluso
Mtricas de software so medidas quantitativas acerca de
processos ouprodutos de software. Oartigo procuroumostrar
Figura 6. Mtricas coletadas pela ferramenta Metrics for Eclipse
D seu feedback sobre esta edio!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
Para isso, precisamos saber o que voc, leitor, acha da revista!
D seu voto sobre este artigo, atravs do link:
www.devmedia.com.br/esmag/feedback
D

s
e
u
Feedba
c
k
s
o
b
r
e
e
s
t
a
e
d i o
algumas das mtricas mais conhecidas e exemplificar o uso
de algumas delas atravs de exemplos simplificados, com o
propsito de acentuar a importncia de sua utilizao em um
projeto. As mtricas so capazes de indicar pontos em que
so necessrios maiores esforos de teste e acompanhamento.
Atravs de ferramentas automatizadas, possvel coletar um
grande nmero de mtricas com menor esforo, o que viabi-
liza a implantao de processos de medio em qualquer tipo
de sistema, desde os mais simples at os mais crticos, o que
contribui para a qualidade do produto final.

Anda mungkin juga menyukai