You are on page 1of 15

A UTILIZAÇÃO DE MÉTRICAS DE REÚSO PARA COMPROVAÇÃO

DE BENEFÍCIOS EM DESENVOLVIMENTO DE SOFTWARE


BASEADO EM COMPONENTES

Adriano Lucas Balaguer1

Resumo

As métricas de software são fatores essenciais para o sucesso de um projeto de


desenvolvimento de sotware. O reúso de software componentizado tem como premissas
básicas a redução de custos e o aumento da produtividade e desempenho. As principais
métricas de reúso de software estão frequentemente relacionadas a fatores econômicos, a
descoberta e integração de ativos reutilizáveis em aplicações recém desenvolvidas, criação
de repositórios de ativos reutilizáveis e maior agilidade no processo de desenvolvimento.

Palavras-Chave: Software; Reúso; Métricas; Desenvolvimento; Componentes;


Serviços

Abstract

Software metrics are essential to the success of software development projects.


Software reuse has as basic premises cost reduction, productivity and performance increase.
The main software reuse metrics are often related to economic factors, discovery and
integration of reusable assets in lately developed applications, repository creation of reusable
assets and greater agility in the development process.

Keywords: Software; Reuse; Metrics, Development; Components; Services

1
Adriano Lucas Balaguer – adrianobalaguer@yahoo.com.br – Pós-Graduando em Engenharia de
Software baseada em SOA pela Faculdade IBTA – Grupo Veris Educacional
2

INTRODUÇÃO

Dentre todas as engenharias, a engenharia de sistemas de software


complexos ainda é a mais distante em termos de práticas, previsibilidade e
eficiência, principalmente pelo aspecto ainda artesanal em que sistemas são
construídos e as dificuldades em alavancar um processo fabril. Métricas de
Software são um importante componente para se obter um gerenciamento de
projeto de software mais efetivo e consistente, sendo o meio para se dimensionar o
software (produto) e o processo pelo qual ele é desenvolvido (Poulin, 1997). O reúso
de software torna-se ponto de extrema importância para alavancar a produtividade
do processo e trazer mais maturidade a este modelo de produção. Assim como em
métricas de software, as métricas de reúso devem quantificar os efeitos do processo
de desenvolvimento de software e os benefícios que ele provê. Reúso é um
processo bidirecional; portanto as pessoas e as organizações devem não somente
reusar software como também contribuir com software / código a ser reusado.
(Poulin, 1997). São vários os motivos que levam
a adotar o reúso de software, podendo destacar o aumento de produtividade e
redução de custos como pontos chave. Entretanto é importante saber como
demonstrar os resultados obtidos com o reúso e a melhor forma de fazer isso é
criando um bom caso de sucesso. (Poulin, 1996). Este artigo foca em descrever os
motivadores pelas métricas de reúso, bem como quais são as mais sugeridas pela
literatura e a forma de implementação destas métricas em corporações.
3

REÚSO

O reúso de software é muito usado tendo em vista a redução de custos,


produtividade e desempenho. Usualmente a componentização de trechos de
software são considerados como reusáveis, porém muitos esquecem que outros
fatores do desenvolvimento também são considerados como reúso, entre eles
executáveis independentes, documentação e design de arquitetura (Poulin, 2006).

O reúso de software pode ser classificado de duas formas:


 Externo: a utilização de (ou parte de) um software desenvolvido por outra
organização ou outra aplicação da qual a principal não faz parte.
 Interno: parte do próprio sistema principal. Isso é considerada boa prática e
não poderia ser considerado como reúso (Poulin, 1996).

GOVERNANÇA DE TI (Tecnologia da Informação)

A Governança de TI trata da especificação e definição dos processos e


responsabilidades para tomada de decisão e estimular comportamentos que devem
ser seguidos na utilização dos recursos da TI (Weill & Ross, 2006).
Atualmente as empresas estão cada vez mais dependentes de soluções de
TI e podemos dizer que grande parte dos investimentos empresariais são
destinados a esta área, resultando em uma atenção cada vez maior da alta gerência
para que gere valor e se torne um diferencial estratégico para o negócio. De fato, na
maioria das empresas o Executivo de TI reporta-se diretamente ao Presidente da
Empresa e não mais ao Executivo de Finanças (Weill & Ross, 2006).
Partindo do ponto que a TI está se tornando mais presente em todo lugar e a
todo instante, é importante a implantação de uma governança de TI que possibilite
definições de uma hierarquia organizacional responsável por tomada de decisões ou
contribuir para elas, objetivando a organização e o controle da utilização de seus
recursos, resultando em redução de custos com TI ou melhores retornos em relação
ao desempenho dos recursos (humanos e/ou equipamentos) (Weill & Ross, 2006).
Uma das decisões fundamentais para o sucesso da TI é a Arquitetura, onde
são definidos e organizados os padrões de estrutura dos dados, aplicações e infra-
estrutura a fim de obter integrações entre os sistemas e negócios para atender as
4

necessidades da empresa. Isso implica diretamente nas decisões dos investimentos


em TI e consequentemente resultará no sucesso ou fracasso dos projetos. A
arquitetura também define padrões para a utilização eficaz dos recursos investidos
ou disponíveis a fim de promover o reúso e as inovações de forma a reduzir custos
e aumentar a produtividade na TI e no negócio. Em algumas empresas há a
formação de um comitê de arquitetura que é integrado por especialistas técnicos e
tem a responsabilidade de definir os padrões ou conceder exceções além de
aconselhar equipes sobre questões de arquitetura. Em alguns casos este comitê se
torna o principal tomador de decisões da governança de TI (Weill & Ross, 2006).

CONCEITOS BÁSICOS DE MÉTRICAS DE REÚSO DE SOFTWARE

As métricas de reúso de software podem ser divididas nas seguintes


categorias (MEIRA et al., 2007):

1. EORM - Economics Oriented Reuse Metrics (Métricas de Reúso


Orientada a Economia);
2. SORM - Software Structure Oriented Reuse Metrics (Métricas de
Reúso Orientada a Estrutura de Software);
3. RRM - Reuse Repository Metrics (Métricas de Repositório de Reúso).

1. EORM - Métricas de Reúso Orientada a Economia

Estão relacionados aos modelos de ROI - Return Over Investment (Retorno


Sobre o Investimento) e aos impactos econômicos de reúso de software, baseados
em um conjunto de dados observáveis (MEIRA et al., 2007), como: quantidade de
código gerado por um time ou organização que esteja sendo utilizado por outros
times ou organizações, custo de código fonte reutilizável, custo de manutenção de
código reusado, custo de desenvolvimento de software – custo por linha de código –
taxa de erros em desenvolvimento de software, custo de manutenção de código
com defeito, etc (Poulin, 2002) apud (MEIRA et al., 2007).
Os modelos de custo e produtividade medem o custo de reúso de
componentes de software e o custo de desenvolvimento de componentes
reutilizáveis (Barnes, 1988) (Gaffney & Durek, 1989) apud (MEIRA et al., 2007). Os
benefícios do reúso correspondem ao quanto foi economizado pelo reúso dos
5

componentes reutilizáveis existentes. A relação entre os benefícios de reúso e os


investimentos de reúso determina se o esforço de reúso resultou em lucro ou
prejuízo para a organização (Barnes & Bollinger, 1991) apud (MEIRA et al., 2007).

As Métricas de Reúso Orientada a Economia, são formadas por um conjunto


de dados observáveis (MEIRA et al., 2007). Além dos dados observáveis, podemos
ainda destacar duas abstrações adicionais (RCR - Custo Relativo de Reúso ou
Custo de Integração e RCWR - Custo Relativo para Escrever Software Reutilizável).

RCR - Relative Cost of Reuse (Custo Relativo de Reúso ou Custo de


Integração)

É o custo das atividades associadas com a descoberta e integração de ativos


reutilizáveis em aplicações recém desenvolvidas. Este custo está relacionado com
programas educacionais sobre reúso e ferramentas adequadas de suporte aos
desenvolvedores, bem como com a qualidade dos ativos reutilizáveis existentes
(MEIRA et al., 2007).
O desenvolvimento de softwares com componentes reutilizáveis não vem de
graça, mas tem um custo para entender, adaptar ao sistema, testar etc. que
consome uma fração do custo de desenvolver um todo do zero. Esta fração é
proporcional a complexidade do componente, tendo uma margem estatística de
20% a 40% de gasto. Entretanto tem-se de 60% a 80% de economia (Poulin, 1996).

RCWR - Relative Cost of Writing Reusable Software (Custo Relativo para


Escrever Software Reutilizável)

Esta medida define o custo adicional relacionado ao desenvolvimento de


código com foco em reusabilidade (MEIRA et al., 2007). Quando se propõe a
desenvolver um componente com a finalidade de ser reutilizado, o custo total de
desenvolvimento tende a ser em torno de 50% a 60% a mais do que um
desenvolvimento do mesmo projeto que seria utilizado somente uma vez. Isso se
deve ao investimento maior em passos que visam o reúso do componente, como
generalizar mais os requisitos (sendo acrescidos muitas vezes), documentação e
testes. (Poulin, 1996). Entretanto, é claro que o custo maior inicial para desenvolver
6

algo com foco em reúso deve ser compensado pela economia derivada das
reutilizações do componente.

Considerando-se que os dados observáveis e as abstrações adicionais foram


estabelecidas, as principais métricas de reúso orientadas a economia, serão
apresentadas abaixo:

RCA - Reuse Cost Avoidance (Economia de Custo pelo Reúso)

É o que se economiza em termos de custos ao escrever código com ativos


reutilizáveis comparado a uma estimativa de custo de escrever um código
equivalente sem ativos reutilizáveis. Esta métrica é utilizada nas fases de
desenvolvimento e manutenção. Com código reutilizável, menos código será
produzido, o que diminui o esforço com desenvolvimento. Junte a isso o fato que um
código reutilizado potencialmente terá menos erros do que um código novo (desde
que tenha sido previamente testado em produtos que utilizaram o mesmo código).
Menos erros significa menos tempo corrigindo erros e consequentemente menos
esforço durante as fases (MEIRA et al., 2007).

RVA - Reuse Value Added (Valor Agregado do Reúso)

É um indíce que é calculado para medir a efetividade que um time ou


organização tem com seu programa de reúso. Leva em conta fatores como:
tamanho total do software produzido pelo time ou organização, o que este time ou
organização está utilizando do seu repositório de ativos reutilizáveis e o que está
sendo produzido por este time ou organização e que esteja sendo reutilizado por
terceiros (MEIRA et al., 2007).

Organizational or Project-level ROI (Retorno Sobre o Investimento em Nível de


Projeto ou Nível Organizacional)

É calculado subtraindo o esforço de desenvolvimento adicional de uma


organização ou projeto (depende do nível em que está sendo calculado) do RCA
previamente calculado. (MEIRA et al., 2007).
7

2. SORM - Métricas de Reúso Orientada a Estrutura de Software

A grande questão do reúso de software é alcançar os mesmos ou melhores


resultados a um custo igual ou inferior quando comparado a uma abordagem de
desenvolvimento de software não orientado a reúso. Sob este ponto de vista o
EORM seria uma métrica mais do que suficiente. Porém em alguns casos o
conjunto de dados observáveis pode levar a resultados incorretos ou imprecisos,
pois tais métricas estão concentradas no quanto foi reusado quando comparado
com a quantidade de código novo. Para resolver este problema as Métricas de
Reúso Orientada a Estrutura de Software irão analisar o que foi reusado e como foi
reusado (MEIRA et al., 2007).
As Métricas de Reúso Orientada a Estrutura de Software estão divididas em
duas categorias principais: métricas de reúso (Tabela 1) e uma avaliação de
métricas de reutilização. A primeira avalia o reúso de ativos existentes, enquanto a
segunda tem por objetivo avaliar, baseado em um conjunto de atributos de
qualidade, o quanto um ativo é reusável (MEIRA et al., 2007).

Métrica Definição
Proporção entre o número de linhas de código reusadas e o número
Percentual de
total de linhas de código (Poulin & Caruso, 1993) apud (MEIRA et al,
Reúso
2007).
Proporção entre o número de itens reusados e o número total de itens
Nível de Reúso
(Frakes & Terry, 1994) apud (MEIRA et al, 2007).
Frequência de Proporção de referências de itens reusados e o número total de
Reúso referências (Frakes & Terry, 1994) apud (MEIRA et al, 2007).
Tamanho e Semelhante a Frequência de Reúso, mas também considera o
Frequência de tamanho dos itens no número de linhas de código (Devanbu et al.,
Reúso 1996) apud (MEIRA et al, 2007).
Semelhante ao Percentual de Reúso, mas também considera itens
Taxa de Reúso que foram parcialmente alterados como reusados (Devanbu et al.,
1996) apud (MEIRA et al, 2007).
Densidade de Proporção do número de partes reusadas e o número total de linhas
Reúso de código (Curry et al., 1999) apud (MEIRA et al, 2007).
Tabela 1 - Métricas de Reúso
8

3. RRM – Métricas de Repositório de Reúso

Repositórios de reúso executam um importante papel em programas de


componentização uma vez que atuam como ponto de convergencia para todas as
atividades relacionadas ao reúso, sejam elas de produção ou consumo de itens
reusáveis. A eficiência dos repositórios em aspectos tais como tamanho e
quantidade de repositórios, disponibilidade e qualidade dos resultados de busca
podem ser decisivos para se obter impactos positivos na qualidade e custo do
software produzido. Uma ampla estratégia de reúso, incluindo processos bem
estabelecidos, um programa educacional contínuo e apropriadas ferramentas de
suporte podem aumentar a probabilidade de uma iniciativa de reúso de sucesso
dentro de um projeto ou organização (MEIRA et al., 2007).

Impactos sobre Reúso de Software

Alguns impactos mensuráveis com o reúso de software, componentes ou


ativos podem ser vistos na Tabela 2 abaixo:

Aspecto Impactos Mensuráveis


Quantidade Erros
Quantidade de Falhas
Proporção de Erros Graves sobre o Total de
Qualidade
Falhas
Esforço com Retrabalho
Percepção dos Desenvolvedores
Produtividad
e Linhas de Código por Aplicação
Prazo Tempo do Ciclo de Desenvolvimento
Tabela 2 - Impactos sobre Reúso de Software

MÉTRICAS DE REÚSO FUNCIONAL

A Análise de Pontos de Função (Function Point Analysis - FPA) é uma


medida funcional de tamanho de software que foi utilizada pela primeira vez em
1979 por Alan Albrecht. A Medida funcional de tamanho de software refere-se à
medição do tamanho do software considerando-se apenas a funcionalidade
solicitada e recebida pelos respectivos usuários. A contagem dos pontos de função
9

é realizada com base em cinco tipos de componentes de software: arquivos


internos, arquivos externos, entradas, saídas e consultas (BFPUG, 2010).
O reúso de software vai muito além da reutilização de linhas de código fonte
e inclui dados, arquitetura, design, programa e os módulos do subsistema comum,
documentação, dados de teste e intangíveis diferentes. Em 1995, Abran e
DesHarnais propuseram a primeira versão da métrica de reúso funcional baseada
na técnica de Análise de Pontos de Função (Abran & Desharnais, 1995) apud
(Abran & Maya, 1997).
O estudo é baseado nas definições de Fronteiras e Arquivos de Interface da
FPA. As definições e regras da FPA, fornecem um meio de identificar e medir
algumas dimensões específicas de reúso (Abran & Maya, 1997).
As métricas de reúso em geral utilizam linhas de código como unidade de
medida. Estas métricas são úteis para medir o reúso sob uma perspectiva técnica e/
ou do ponto de vista dos desenvolvedores e podem ser usadas para análise de
eficiência e melhoria de performance (Abran & Maya, 1997). Métricas de reúso
funcional são independentes das técnicas de desenvolvimento e seguir alguns
processos de implementação serão necessários para medir o desempenho dos
produtos e processos, sob uma perspectiva gerencial e dos usuários (Abran &
Maya, 1997). Também são importantes para análise de produtividade e a FPA pode
ser usada como uma métrica de reúso funcional, por ter estas características. Se o
reúso pode ser medido sob uma perspectiva funcional então esta métrica de reúso
pode ser integrada a modelos de produtividade para análise de reúso funcional
(Abran & Maya, 1997).

EXEMPLOS DE ANÁLISE DE MÉTRICAS DE REÚSO

Abaixo será explorado um simples exemplo da utilização e análise de


reaproveitamento de softwares componentizados e reutilizáveis.
Levaremos em conta neste exemplo um componente que envia e-mail, onde houve
um investimento de 16 horas para ser desenvolvido, documentado e testado. Este
componente é utilizado nos sistemas de Manutenção de Promoções, Cadastro de
usuários e Contas a Receber. O custo de reutilização do componente é de 4 horas.
Sendo assim, houve o consumo deste componente por 3 sistemas que totalizam 12
10

horas de desenvolvimento. Caso não estivesse componentizado, o componente


consumiria 48 horas de desenvolvimento nos 3 sistemas, portanto, a empresa teve
uma economia de 36 horas.
Apontando estes indicadores em algum sistema de governança (como o
“Sensedia Repository®”), poderia ser feito um catálogo de componentes e serviços
disponíveis com todas as informações necessárias para reutilização e custo de
desenvolvimento. Também poderiam ser apontados módulos de sistemas que são
desenvolvidos e associar aos componentes ou serviços que são consumidos. Desta
forma facilmente poderia ser apurado indicadores de reúso e economia de cada
componente ou serviço.

CONSUMO DE COMPONENTES POR SISTEMAS

Figura 1 - Ilustra um componente que é utilizado por três sistemas.

Utilizando esta mesma forma de gerenciamento dos componentes


reutilizáveis, recomenda-se mapear todos os possíveis componentes que podem ser
reutilizados e investir no desenvolvimento e utilização.
No cadastro de usuários é possível implementar um outro serviço para
Consulta de CEP, para sua validação em uma base completa com dados dos
correios, e que retornaria o endereço, bairro, cidade e UF para o requisitante,
evitando que o usuário precise escrever todos estes dados. Este componente
poderia ser utilizado no Cadastro de Usuários, e futuramente no Cadastro de
Clientes, Empregados (RH), Fornecedores e Transportadoras. Mantendo a mesma
ideologia, outro candidato a serviço reutilizável seria o Cadastro de Produtos que
11

poderia ser utilizado em módulos como Cadastro de Produtos, Tabela de Preços,


Pedidos de Compra, Pedidos de Venda.

Componente ou Serviço Custo Qtde. Reúso Economia


desenvolviment
o
Envio de Emails 1.0 16 3 36
Consulta CEP 1.1 24 5 90
Manter Produtos 1.0 48 4 152
Total Horas Economzadas 278
Tabela 3 - Análide de Reúso

Como neste exemplo utilizamos a métrica de quantidade de horas de


desenvolvimento e considerando um Desenvolvedor Pleno onde seu custo por hora
é de R$ 30,00, podemos afirmar que a empresa teve uma economia de R$
8.340,00, conforme demonstrado na tabelas 3 e 4 abaixo, que indicam a análise do
reúso e a economia em Reais obtida com a reutilização dos componentes e
serviços.

Componente ou Serviço Custo desenvolvimento Qtde. Reúso Economia


R$ R$
Envio de Emails 1.0 480 3 1.080
Consulta CEP 1.1 720 5 2.700
Manter Produtos 1.0 1.440 4 4.560
Total R$ Economizados 8.340
Tabela 4 - Análise de Economia em Reais
12

CONCLUSÃO

As métricas de software e as métricas de reúso são um importante


componente no processo de desenvolvimento de software. Com base nos dados
obtidos através das técnicas apresentadas, podemos concluir que as métricas tem
papel fundamental no controle financeiro dos projetos e são fatores chave num
cenário onde a redução dos custos e cumprimento dos prazos de entrega,
significarão o sucesso ou fracasso do projeto.
No exemplo estudado, verificamos claramente a economia gerada através do
reúso de serviços simples como envio de e-mails e consulta de CEP. Seguindo o
mesmo conceito para serviços ou componentes mais complexos, em sistemas
integrados, utilizados em grandes projetos de desenvolvimento, migração ou
atualização de software, podemos projetar que as possibilidades de economia e
aumento de velocidade na entrega do produto final serão proporcionais e farão a
diferença no competitivo mercado de desenvolvimento de software.
13

REFERÊNCIAS

(Abran & Maya, 1997) ABRAN, Alain; MAYA, Marcela. Measurement of Functional
Reuse. Montréal (Québec), Canada: Université Du Québec À Montréal, 1997.
Disponível em: <http://www.umcs.maine.edu/~ftp/wisr/wisr8/papers/abran/
abran.html>. Acesso em: 16 jun. 2010.

(Abran & Desharnais, 1995) ABRAN, Alain; DESHARNAIS, J. Measurement of


functional reuse in maintenance. Journal of Software Maintenance: Research and
Practice, vol. 7, no. 4, pp. 263-277, 1995.

(Barnes et al., 1988) Barnes, B.; Durek, T.; Gaffney, J.; Pyster, A. A Framework and
Economic Foundation for Software Reuse. IEEE Tutorial: Software
Reuse - Emerging Technology, ed. W. Tracz. Washington, D.C.: IEEE
Computer Society Press, 1988.

(Barnes & Bollinger, 1991) Barnes B. & Bollinger T., Making software reuse cost
effective. IEEE Software, Vol. 08, No. 01, January, 1991, pp 13-24.

(BFPUG, 2010) Brazilian Function Point Users Group (Org.). BFPUG - FAQ. São
Paulo: BFPUG, 2010. Disponível em: <http://www.bfpug.com.br/>. Acesso em: 09
ago. 2010.

(Curry et al., 1999) Curry, W.; Succi, G.; Smith, M. R.; Liu, E.; Wong, R. Empirical
Analysis of the Correlation between Amount-of-Reuse Metrics in the C
Programming Language. Proceedings of the Fifth Symposium on
Software Reusability (SSR), pp. 135-140, 1999, ACM Press.

(Devanbu et al., 1996) Devanbu, P. T.; Karstu, S.; Melo, W. L.; Thomas, W.
Analytical and Empirical Evaluation of Software Reuse Metrics. Proceedings of
the 18th International Conference on Software Engineering (ICSE), Berlin,
Germany, pp. 189-199, 1996.
14

(Frakes & Terry, 1994) Frakes, W. & Terry, C. Reuse Level Metrics. Proceedings
of the 3rd IEEE International Conference on Software Reuse (ICSR):
Advances in Software Reusability, Rio de Janeiro, Brazil, 1994.

(Gaffney and Durek 1989) Gaffney J. E. and Durek T. A., Software reuse - key to
enhanced productivity: some quantitative models. Information and
Software Technology, pp. 258-267, 1989.

(ISACA, 2010) INFORMATION SYSTEMS AUDIT AND CONTROL ASSOCIATION


(Org.). ISACA: Glossary. Rolling Meadows, Il: Isaca, 2010. Disponível em: <http://
www.isaca.org/Knowledge-Center/Documents/Glossary/glossary.pdf>. Acesso em:
09 ago. 2010.

(MEIRA et al., 2007) ALMEIDA, Eduardo Santana de; MASCENA, Jorge Cláudio
Cordeiro Pires; BURÉGIO, Vanilson André de Arruda; NASCIMENTO, Leandro
Marques do; ALVARO, Alexandre; LUCRÉDIO, Daniel; MEIRA, Silvio Lemos;
GARCIA, Vinicius Cardoso. Component Reuse in Software Engineering. Recife,
PE: C.E.S.A.R E-books, 2007.

(Poulin, 1996) Poulin, Jeffrey S. Measuring Software Reuse: Principles,


Practices, and Economic Models. 1th Ed., Addison-Wesley, Massachusetts, USA,
1996.

(Poulin, 1997) POULIN, Jeffrey S. The Pitfalls of Measuring Software Reuse.


Owego, NY: Addison-wesley, 1997. Disponível em: <http://jeffreypoulin.info/Papers/
Crosstalk_Reuse_Warning/measwarn.html>. Acesso em: 01 fev. 2010.

(Poulin, 2002) Poulin, J. An Agenda for Software Reuse Economics. Proceedings


of the International Workshop on Reuse Economics (IWRE), Texas, USA, 2002.

(Poulin & Caruso, 1993) Poulin, J.; Caruso, J. A Reuse Metrics and Return on
Investment Model. Proceedings of the 2nd IEEE Workshop on Software
Reuse (WSR): Advances in Software Reusability, Lucca, Italy, 1993, pp. 152-
156.
15

(Weill & Ross, 2006) WEILL, Peter; ROSS, Jeanne W. Governança de TI:
Tecnologia da Informação. São Paulo: M Books, 2006. 276 p.