METACOM - Um Método para Análise de Correlação entre Métricas de Produto de Software e Propensão a Manutenção
1. METACOM
Um 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
2. 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
3. Manutenção de Software
Mais de 50% do esforço de desenvolvimento [Kemerer
1999]
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]
4. 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 tempo
estendido de manutenção, aumentando a importância da
qualidade do produto [Blanc 2009]
• Segundo [Jones 2008], os maiores responsáveis pelo
aumento do custo de manutenção relacionam-se ao
tamanho, complexidade e idade do softwar
Qualidade de Produto x Manutenção de Software
5. 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]
7. 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 – Aferent
Coupling
• EC – Eferent
Coupling
• ABC –
Association
Between Classes
Coesão
• LCOM – Lack of
Cohesion
Methods
• LCOM-HS -
Lack of
Cohesion Of
Methods
Henderson-
Sellers
Herança
• NOC - Number
of Children
• DIT - Depth of
Inheritance Tree
8. 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))
9. 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
10. 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
11. Projetos Considerados
Proj.
Início
Desenv.
Nº Revisões*
Desenvolvedores
Distintos
Defeitos 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ários
Tipos
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
12. 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 rastreabilidade
Mantis
6 - Transformação e Carga
DataExtractor
7 – Análise de correlações entre métricas
de produto e volume de manutenções
SPSS 17.0
13. 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ões
Total de revisões em que a classe foi alterada, após a revisão
analisada (revisões futuras)
Meses Após Revisão
Total 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ões
Total de revisões de alteração da classe normalizado pelo
número de Meses Após Revisão.
14. 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
15. 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
16. 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.
17. 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
18. 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).