Você está na página 1de 6

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

Mtricas de Software
Como utiliz-las no gerenciamento de projetos de software
De que se trata o artigo?

Thamine Chaves de Abreu

Marco Antnio Pereira Arajo

thamine.abreu@gmail.com

maraujo@acessa.com

Atualmente cursa especializao em Desenvolvimento de Aplicaes para Web no


Centro de Ensino Superior de Juiz de Fora
(CES/JF), Bacharel em Sistemas de Informao pela Universidade Severino Sombra
(USS), Desenvolvedor de Sistemas Web na
Granbery Consultoria Jnior em projeto
para a Fundao COPPETEC, possui experincia de 4 anos em desenvolvimento de
sistemas Java (web/desktop).

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.

Leonardo da Silva Mota


leonardo.smota@hotmail.com

Atualmente cursa especializao em Desenvolvimento de Aplicaes para Web no


Centro de Ensino Superior de Juiz de Fora
(CES/JF), Bacharel em Sistemas de Informao pela Universidade Severino Sombra
(USS), Desenvolvedor de Sistemas Web na
Granbery Consultoria Jnior em projeto
para a Fundao COPPETEC, programador certificado Java (SCJP), atuou como
professor assistente no curso de Sistemas
de Informao da USS e dos cursos de informtica da Fundao de Apoio a Escola
Tcnica (FAETEC), possui experincia de
4 anos em desenvolvimento de sistemas
Java (web/desktop).

50

O artigo trata da utilizao de mtricas de software


no gerenciamento de projetos, sendo fortes aliadas
na estimativa, acompanhamento e apoio em tomada 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 medidas, 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?

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 relacionamentos com clientes, necessitando maior
confiabilidade e qualidade. Existem
diversas medidas de garantia de qualidade fundamentais para o sucesso de
qualquer tipo de aplicao de software,

Engenharia de Software Magazine - Mtricas de Software

A coleta adequada de mtricas, com suas respectivas 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.

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

GERNCIA DE PROJ E TOS

de dados quantitativos, capaz de informar que aspectos do


produto atendem ou 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 mtricas 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, entendidas e testadas e independem do observador que as aplica,
sendo tambm uma boa fonte para estudos estatsticos acerca
do ciclo de vida do software.
Dentro desse contexto, este artigo tem por objetivo apresentar
algumas mtricas de software e sua importncia no processo
de desenvolvimento. Para isso, algumas mtricas sero aplicadas em pequenos exemplos, permitindo ao leitor compreender
e analisar seus benefcios imediatos.

GQM (Goal/Question/Metric), desenvolvido por Basili em 1988,


uma abordagem para aplicao de mtricas afim de aprimorar
o processo de desenvolvimento de software (e, consequentemente, 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 especificados e identifica as mtricas que fornecem respostas para as
questes definidas.
O GQM define um modelo de trs nveis, ilustrado na Figura 1.

Utilizao de mtricas
Existem dois tipos de mtricas no contexto de desenvolvimento 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 diretamente no produto de software, so chamadas de mtricas de
predio, quando em processos de software, so comumente
chamadas de mtricas de controle e sua aplicao normalmente
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 deciso 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 tambm devem ser 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 nenhum produto igual
a outro). O escopo, os desenvolvedores e o ambiente so fatores
que podem influenciar 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 software atravs de mtricas significativas, as medies devem ser
definidas de acordo com objetivos especficos. Nesse sentido, o

Figura 1.

O GQM pode ser aplicado em todo o ciclo de vida de produtos, 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 desenvolvimento de software, evoluir as atividades de medio, guiar e
monitorar processos de software e reduzir custos de desenvolvimento, 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 serem coletadas 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, diferentes mtricas podem ser colhidas para um mesmo produto. Por
exemplo, para a medio de tamanho na 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 codificao, a partir no nmero de linhas de cdigo fonte.
A seguir, sero apresentadas algumas das principais mtricas baseadas nos tipos de medio citados e, para melhor

Edio 21 - Engenharia de Software Magazine

51

compreenso, sero utilizados exemplos de cdigos e aplicao


das mtricas.
Anlise de Pontos de Funo (APF): visa estimar o tamanho 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 implementao 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 um sistema, 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 considerado para a obteno de um produto a ser desenvolvido.
Embora seja bastante objetiva, bastando analisar o cdigofonte de produtos concludos para obt-la, ela pode variar
de acordo com a linguagem de programao utilizada e,
portanto, as estimativas devem considerar 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 um sistema complexo
e, por conseqncia, testvel, pois apresenta um indcio do
nmero de casos de teste a serem realizados para cobrir as
possibilidades de um algoritmo. O ideal que a complexidade ciclomtica seja baixa, pois desta forma, as funes
podem ser mais facilmente entendidas e modificadas. O
FASE

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 numerados, conforme mostra a Figura 2.

Figura 2. Numerao de possveis caminhos em um algoritmo

Existem diversas formas de clculo da CC, atravs de frmulas, ou pela contagem de caminhos possveis. A Tabela 3
ilustra as possveis formas de clculo da complexidade
ciclomtica para este algoritmo.
Para programas grandes e complexos, calcular a complexidade 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.
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.
PFs ajustados so calculados, considerando o tipo de contagem definido no primeiro passo.

Calcular os pontos de funo ajustados

Tabela 1. Fases para a medio por pontos de funo

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.

52

Engenharia de Software Magazine - Mtricas de Software

GERNCIA DE PROJ E TOS

Forma de clculo

Clculo

Contagem atravs dos nmeros de CC = E N + 2


arcos e ns
onde:
E= nmero de arcos

Contagem atravs do nmero de


ns predicados (que indicam uma
deciso)
Contagem visual
Contagem dos caminhos possveis

N= nmero de ns
CC = P + 1
onde:
P= nmero ns predicados (decises)
Atravs do nmero de regies fechadas do grfico
construdo, considerando tambm a regio externa
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

para reutilizao, visto que provavelmente possuem alto


nvel de abstrao, (ii) pode indicar que a classe herda muitos 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 ficam as operaes de polimorfismo. Em uma
situao simples, como a do exemplo, o valor NOC no tem
impacto negativo sobre o sistema, porm caso o cenrio seja
um sistema complexo com muitas classes filhas, importante
acompanhar os valores de NOC, com o propsito de tomar
medidas que evitem nmeros altos.

Figura 3. Clculo da complexidade ciclomtica no plugin Metrics for Eclipse

Mtricas de Chidamber & Kemerer (CK): foram propostas


por Chidamber & Kemerer em 1994, um conjunto de seis mtricas 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 em questo. Um DIT alto pode indicar que (i) a classe
em questo herdou muitas caractersticas comuns a outras
classes, indicando que suas superclasses esto preparadas

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 relacionamentos, 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 comum pelos mtodos da prpria classe. Quanto maior o LCOM,
menos coesa a classe. A coeso em mtodos a capacidade
dos mtodos realizarem apenas a funo a que so destinados
e, para isso devem acessar apenas atributos essenciais ao seu
funcionamento. Portanto, importante que o LCOM seja baixo
a fim de aumentar a reutilizao e diminuir a complexidade
da classe.

Edio 21 - Engenharia de Software Magazine

53

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 mensagem 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.

Listagem 1.
public
return
}
public
double
return
}

String getCargo (){


Gerente;
double calculaSalario(){
taxaTotal=(getSalario()*taxaDependentes)*numDependentes;
getSalario()-getDesconto() + taxaTotal;

Listagem 2.
public double calculaSalario(){
return horasTrabalhadas * valorHora;
}

Listagem 3.

Mtricas de Lorenz & Kidd: Lorenz & Kidd, tambm em 1994,


propuseram um conjunto de quatro mtricas, comumente chamadas 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.

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);
}

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 especfica, 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 sobrescritos, 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 subclasses 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 observar 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

54

Engenharia de Software Magazine - Mtricas de Software

Figura 5. Coleta da Mtrica NOO pela ferramenta Metrics for Eclipse, aqui
chamada de Number of Overridden Methods

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 superclasses. 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): nmero 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 foram realizadas
alteraes para atendimento de necessidades especficas. Classes muito especficas dificilmente so reaproveitadas, ferindo
um dos princpios bsicos da OO, a reutilizao.
A seguir, so apresentadas na Figura 6 as possveis mtricas 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.

GERNCIA DE PROJ E TOS

Figura 6. Mtricas coletadas pela ferramenta Metrics for Eclipse

Concluso
Mtricas de software so medidas quantitativas acerca de
processos ou produtos de software. O artigo procurou mostrar

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 viabiliza 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.

D
s

D seu feedback sobre esta edio!

Feedback
eu

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

Edio 21 - Engenharia de Software Magazine

55

sobre e
s

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, podendo 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, ou alguma derivada desta, como
Homem/Ms, que refletem a quantidade de recursos humanos
alocados ao projeto por unidade de tempo.

edio
ta

Alguns outros tipos de mtricas

Você também pode gostar