metacom - um método para análise de correlação entre métricas de produto de software e...

19

Click here to load reader

Upload: roberto-pepato

Post on 05-Jul-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

METACOMUm Método para Análise de Correlação entre Métricas

de Produto de Software e Propensão a Manutenção

Gabriel de Souza Pereira Moreira - ITA

Roberto Pepato Mellado - ITA

Prof. Adilson Marques da Cunha - ITA

Prof. Luiz Alberto Vieira Dias - ITA

Page 2: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Agenda

• Manutenção de Software

• Qualidade de Produto de Software

• Métricas de Software

• Trabalhos sobre Manutenibilidade

• METACOM

• Estudo de Caso

• Análise e Discussão dos Resultados Obtidos

• Limitações

• Conclusões, Recomendações e Trabalhos Futuros

Page 3: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Manutenção de Software

Mais de 50% do esforço de desenvolvimento [Kemerer1999]

Entre 40% e 90% do custo total do ciclo de vida [Bennett 2002]

Mais de 50% dos profissionais de software envolvidos em modificar aplicações [Jones 2007]

Fenômeno mal compreendido na academia [Kemerer 1999]

Page 4: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Características de Qualidade do Produto de

Software

Esforço e Assertividade da Manutenção

[Ware 2007], [Ahn 2003], [ISO 25000]

• Aumento do ciclo de vida do software implica em tempoestendido de manutenção, aumentando a importância daqualidade do produto [Blanc 2009]

• Segundo [Jones 2008], os maiores responsáveis peloaumento do custo de manutenção relacionam-se aotamanho, complexidade e idade do softwar

Qualidade de Produto x Manutenção de Software

Page 5: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Qualidade de Produto

ISO/IEC 25000:2005 - Software Quality Requirements and Evaluation (SQuaRE)

Qualidade no ciclo de vida de um produto de software [ISO/IEC 9126-1/25000]

Page 6: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Manutenibilidade

Modelo de Qualidade Interna / Externa [ISO/IEC 25000]

Page 7: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Métricas de Produto OO

Tamanho

• LOC

• N. Métodos

• N. Atributos

Complexidade

•CC - Complexidade Ciclomática

•Métricas de Halstead

•MCD - Max Conditional Depth

•MLD - Max Loop Depth

•DD - Decision Density

Acoplamento

• AC – AferentCoupling

• EC – EferentCoupling

• ABC –AssociationBetween Classes

Coesão

• LCOM – Lack ofCohesionMethods

• LCOM-HS -Lack of Cohesion Of Methods Henderson-Sellers

Herança

• NOC - Number of Children

• DIT - Depth of Inheritance Tree

Page 8: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Trabalhos sobre Manutenibilidade

• Em sua maior parte, relacionam métricas de produto à

análise subjetiva de manutenibilidade [Kafura 1987],

[Oman 1992], [Riaz 2009].

• Deste grupo de trabalhos, destaca-se o Maintainability

Index (MI) [Oman 1992], [Oman 1994] e [Welker 1995]

• Outros trabalhos avaliam a manutenibilidade de forma

objetiva relacionando, por exemplo, métricas de produto

de uma versão com o volume de manutenção observado

após esta versão [Ware 2007]

MI = 171-5.2* ln(aveV)-0.23 * aveV(g')-16.2 * ln (aveLoC)-50 * sin(sqrt(2.4*perCM))

Page 9: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

METACOM

• Processo de ETL de métricas de produto e de volume de manutenção

• Aplicável a projetos em desenvolvimento, manutenção ou finalizados

• Requisitos:• Sistema de Controle de

Versão

• Issue Tracker

• Mecanismo de rastreabilidade entre modificações e casos de uso ou defeitos

Page 10: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Estudo de Caso

• Quais funcionalidades do código possuem maior probabilidade

de causar problemas no futuro, se não forem ajustadas agora?

• Em que partes do código deveriam-se investir mais esforços

em inspeções e testes?

• Para quais partes do código deveriam ser atribuídos os esforços

dos membros dos times mais habilidosos e experientes?

Métricas de produto de software podem ser utilizadas para

indicar classes com maior propensão à manutenção

Page 11: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Projetos Considerados

Proj.Início

Desenv.Nº Revisões*

Desenvolvedores

DistintosDefeitos Casos de Uso

A 08/2008 2.977 20 1.387 103

B 08/2009 1.358 8 313 93

Projetos considerados no estudo de caso

Proj.Plataforma

(Linguagem)

LoC

Total

LoC

Compilável

Linhas de

ComentáriosTipos

A Web (C#.NET) 97.488 51.017 31.670 297

B Web (C#.NET) 70.735 33.644 27.795 407

Tamanho dos Produtos de Software

* Revisão – Identificador único de um conjunto de alterações no código-fonte

Page 12: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Implementação do METACOM

Passo do METACOM Ferramenta

1 - Checkout das revisões SVN Extractor

2 - Compilação NAnt e MSBuild

3 - Análise Estática de Código NDepend e SDMetrics C#

4 - Extração do Histórico de Modificações SVNStat

5 - Extração de informações de Casos de

Uso e rastreabilidadeMantis

6 - Transformação e CargaDataExtractor

7 – Análise de correlações entre métricas

de produto e volume de manutençõesSPSS 17.0

Page 13: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Métricas de Volume de Manutenção

Métricas Básicas

LoC Adic

Soma do número de linhas de código adicionadas a classe, após

a revisão analisada (revisões posteriores até o momento de

extração das métricas)

LoC Rem.Soma do número de linhas de código removidas da classe, após

a revisão analisada (revisões futuras)

Nº RevisõesTotal de revisões em que a classe foi alterada, após a revisão

analisada (revisões futuras)

Meses Após RevisãoTotal de meses transcorridos entre a revisão e a extração das

métricas

Métricas Derivadas

Média Mensal de LoC

Modificado (Adic. + Rem.)

Soma das linhas de código modificadas (adicionas e

removidas), normalizadas pelo número de Meses Após

Revisão.

Média Mensal de RevisõesTotal de revisões de alteração da classe normalizado pelo

número de Meses Após Revisão.

Page 14: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Resultados Obtidos

Métricas das Classes (antes

do início das manutenções)

Métricas Básicas de Volume de

Manutenção

Métricas Derivadas de

Volume de Manutenção

normalizadas por mês

Categoria de

Métrica

Métrica LoC Adic.

Posterior

LoC Rem.

Posterior

Revisões

Post.

Média Mensal

de LoC

Modificado

(Adic. + Rem.)

Post.

Média

Mensal de

Revisões

Posteriores

Tamanho LoC ,586 ,511 ,491 ,609 ,518

Acoplamento

AC -,126 -,168 -,139 -,156 -,165

EC ,563 ,538 ,527 ,632 ,601

ABC ,628 ,608 ,585 ,643 ,609

Coesão LCOM ,044 ,020 ,015 ,002 -,019

Complexidade

MCC ,510 ,486 ,453 ,486 ,444

HUOpt ,574 ,527 ,516 ,558 ,510

HUOpd ,654 ,608 ,593 ,653 ,603

Manutenibilidade MI -,404 -,419 -,393 -,397 -,409

Correlações entre Métricas de Produto e Volume de Manutenção

Page 15: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Análise e Discussão dos Resultados

Tamanho

• LOC – Correlação moderada. Classes com muitas responsabilidades podem indicar problemas de design OO, pois ferem o Single Responsability Principle (SRP)

Acoplamento

• EC e ABC – Entre as maiores correlações encontradas. Confirma os resultados de outros estudos como [Ferneley 1999]. Quanto maior a dependência externa, maior a propensão à modificações.

• AC – Fraca correlação. Resultado também alinhado com o estudo de [Ferneley 1999].

Coesão

• LCOM – Ao contrário do esperado, observou-se fraca correlação.

Complexidade

• MCC – Correlação moderada.

• Métricas de Halstead – Maior correlação encontrada com HUOpd e HUOpt, referentes ao número de operandos e operadores

Índice de Manutenibilidade (MI)

• Ao contrário do esperado, observou-se fraca correlação com este indicador, calibrado a partir de análise subjetiva de especialistas.

Volume de

Manutenção X

Page 16: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Limitações do Experimento

• Realizado com dois produtos de software desenvolvidos

pela mesma empresa, na mesma plataforma (web) e

tecnologia (ASP.NET e C#), com o mesmo processo

(baseado em RUP).

• Rastreabilidade entre modificações de código e casos de

uso/defeitos depende de processo manual.

• Manutenção avaliada apenas no nível de classes, a partir

do momento em que o respectivo caso de uso é

considerado em manutenção.

Page 17: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Conclusões

• Concepção do METACOM, com objetivo de identificar métricas com potencial de indicar classes com propensão a um maior volume de manutenção

• Implementação do METACOM em estudo de caso com dois produtos de software da indústria

• Análise de correlações (método de Spearman) permitiu confirmar e invalidar expectativas prévias sobre o potencial preditivo de algumas métricas.

• As métricas mais correlacionadas ao volume de manutenção referem-se aos aspectos tamanho, complexidade e acoplamento

• O Índice de Manutenibilidade (MI), bastante citado, utilizado e recomendado pela SEI, não apresentou correlação com volume de manutenção

Page 18: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Recomendações e

Trabalhos Futuros

• Utilização de regressão linear multivariada para compor

índices de estimativa de volume de manutenção futura,

baseados em métricas de produto

• Experimentação do METACOM em outras linguagens

OO estaticamente tipadas (como Java, Object Pascal e

C++) e dinâmicas (como Perl, Python, PHP, Javascript e

Ruby).

Page 19: METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção

Perguntas