metacom - um método para análise de correlação entre métricas de produto de software e...
TRANSCRIPT
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
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
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]
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
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]
Manutenibilidade
Modelo de Qualidade Interna / Externa [ISO/IEC 25000]
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
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))
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
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
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
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
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.
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
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
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.
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
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).
Perguntas