Desenvolvimento

Ξ Deixe um comentário

Métricas de reúso em desenvolvimento de software

publicado por Adriano Balaguer

Resumo

As métricas de software são fatores essenciais para o sucesso de um projeto de desenvolvimento de software. 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

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.

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

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

Percentual de Reúso

Proporção entre o número de linhas de código reusadas e o número total de linhas de código (Poulin & Caruso, 1993) apud (MEIRA et al, 2007).

Nível de Reúso

Proporção entre o número de itens reusados e o número total de itens (Frakes & Terry, 1994) apud (MEIRA et al, 2007).

Frequência de Reúso

Proporção de referências de itens reusados e o número total de referências (Frakes & Terry, 1994) apud (MEIRA et al, 2007).

Tamanho e Frequência de Reúso

Semelhante a Frequência de Reúso, mas também considera o tamanho dos itens no número de linhas de código (Devanbu et al., 1996) apud (MEIRA et al, 2007).

Taxa de Reúso

Semelhante ao Percentual de Reúso, mas também considera itens que foram parcialmente alterados como reusados (Devanbu et al., 1996) apud (MEIRA et al, 2007).

Densidade de Reúso

Proporção do número de partes reusadas e o número total de linhas de código (Curry et al., 1999) apud (MEIRA et al, 2007).

Tabela 1 – Métricas de Reúso

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

Qualidade

Quantidade Erros
Quantidade de Falhas
Proporção de Erros Graves sobre o Total de Falhas
Esforço com Retrabalho
Percepção dos Desenvolvedores

Produtividade

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 é 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).

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  e farão a diferença no competitivo mercado de desenvolvimento de software.

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:. 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:. 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.
(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:. 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:. 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.
(Weill & Ross, 2006) WEILL, Peter; ROSS, Jeanne W. Governança de TI: Tecnologia da Informação. São Paulo: M Books, 2006. 276 p. 2010

Autor

Adriano Balaguer atua desde 1991 no Mercado de Serviços Financeiros em grandes instituições como Itaú Latin America, Deutsche Bank, Cielo, Thomson Reuters, B3 (ex-BM&FBovespa), Santander, Bank of Boston e Banco Real. Interesses: Inovação Digital, Internet das Coisas, Inteligência Artificial, Gestão de Projetos, Gestão de Produtos, Metodologias Ágeis (Scrum , Lean, SAFe). Fluente em Português, Inglês e Espanhol. Sempre aprendendo e adquirindo novos conhecimentos, já atuou como Professor Universitário além de ser Blogger e Pai em tempo integral. Site Pessoal: http://www.adrianobalaguer.com

Adriano Balaguer

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes