apresentação para banca de qualificação de mestrado do Programa de Pós-graduação em Ciência da Computação da Universidade Federal da Bahia
Salvador-Ba, 08 de Julho de 2016
Joenio Marques da Costa
Orientadora: Christina von Flach G. Chavez
Co-orientador: Paulo Roberto Miranda Meirelles
a tecnologia de análise estática tem se desenvolvido rapidamente, mas a comparação e avaliação de técnicas e ferramentas não tem acompanhado tal velocidade
LI, P.; CUI, B. A comparative study on software vulnerability static analysis techniques and tools. In: Information Theory and Information Security (ICITIS), 2010 IEEE International Conference on. [S.l.: s.n.], 2010. p. 521–524.
HARMAN, M. Why source code analysis and manipulation will always be important. In: Source Code Analysis and Manipulation (SCAM), 2010 10th IEEE Working Conference on. [S.l.: s.n.], 2010. p. 7–19.
compreender as ferramentas de software para análise estática de código-fonte do ponto de vista de sua manutenabilidade, a partir da análise de sua complexidade estrutural, discutindo quais características arquiteturais explicam seus atributos de qualidade interna
Q1: Como a complexidade estrutural pode ser interpretada e explicada para ferramentas de software do domı́nio de aplicação de análise estática de código-fonte?
análise estática de código-fonte é a atividade de obter informações acerca de um programa a partir do seu código-fonte, tem suas origens nos estudos e desenvolvimentos de compiladores
CRUZ, D. d.; HENRIQUES, P. R.; PINTO, J. S. Code analysis: Past and present. 2009.
os formatos de representação intermediárias costumam ser aplicados em fins específicos, por exemplo, a métrica de complexidade ciclomática de McCabe é calculada através de um Grafo de Fluxo de Controle
uma função cujas entradas são dados de software e cuja saı́da é um valor numérico, que pode ser interpretado como o grau em que um software possui um determinado atributo que afeta sua qualidade
COMMITTEE, S. . S. E. S. et al. Ieee std 1061-1998—ieee standard for a software quality metrics methodology. IEEE Computer Society, Tech. Rep, 1998.
métricas de código-fonte cobrem aspectos de tamanho, complexidade e qualidade, e podem indicar aspectos relevantes à manutenibilidade de um programa
ACC, ACCM, AMLOC, ANPM, CBO, DIT, LCOM4, LOC, NOA, NOC, NOM, NPA, NPM, RFC, SC
MEIRELLES, P. R. M. Monitoramento de métricas de código-fonte em projetos de software livre. Tese (Doutorado) — Universidade de São Paulo, São Paulo, Brazil, 2013.
mede o número de classes que acessam a classe analisada
indica acesso à atributos ou métodos
quanto maior a complexidade de um sistema de software, maior é o esforço para compreendê-lo, modificá-lo e evoluí-lo
Darcy, D. P. et al. The structural complexity of software: An experimental test. IEEE Transactions on Software Engineering, v. 31, n. 11, p. 982–995, Nov. 2005. ISSN 0098- 5589.
sistemas complexos são sistemas compostos de várias partes que interagem entre si com a habilidade de gerar novas qualidades no comportamento coletivo
Mitchell, M. Complexity - A Guided Tour. [S.l.]: Oxford University Press, 2009.
a partir da sua estrutura interna sistemas de software podem ser caracterizados como um sistema complexo artificial
uma medida da complexidade de software calculada em termos do acoplamento (CBO) e coesão (LCOM4)
mede o número classes acessadas pela classe analisada
indica acesso à atributos ou métodos
mede os métodos e atributos acessados dentro de uma mesma classe
calculado através dos componentes fracamente conectados de um grafo não-orientado
mede a complexidade estrutural de uma classe
a seleção de ferramentas será feita através de uma revisão estruturada para ferramentas da academia e de uma busca livre para ferramentas da indústria
a análise de código-fonte e coleta de suas métricas será feita de forma automatizada utilizando a ferramenta Analizo
um processo disciplinado para seleção de artigos a partir de critérios bem definidos com o objetivo de encontrar ferramentas de análise estática de código-fonte
NOVAK, J.; KRAJNC, A. et al. Taxonomy of static code analysis tools. In: IEEE. MIPRO, 2010 Proceedings of the 33rd International Convention. [S.l.], 2010. p. 418–422.
http://analizo.org
Terceiro, A. et al. Analizo: an extensible multi-language source code analysis and visualization toolkit. In: CBSOFT-Ferramentas. [S.l.: s.n.], 2010.
as métricas serão coletadas para cada módulo de cada ferramenta, uma análise exploratória nos dará um entendimento inicial sobre a natureza dos dados
✔ 315 artigos do SCAM avaliados e 9 ferramentas selecionadas
✔ 54 ferramentas da indústria avaliadas e 14 selecionadas
✔ 23 ferramentas analisadas de forma automatizada para coleta de métricas de código-fonte
✔ início da análise exploratória dos dados
✔ evolução inicial da ferramenta Analizo
Lanza e Marinescu(2006) Michele Lanza e Radu Marinescu. Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate and Improve the Design of Object-Oriented Systems. Hardcover.
em 18 de Fevereiro de 2016 lançamos, no contexto deste trabalho, a versão 1.19.0 da ferramenta Analizo
joenio@joenio.me
Esta apresentação está disponível em:
http://joenio.me/caracterizacao-analise-estatica
(código-fonte: http://github.com/joenio/joenio.me)
Imagens utilizadas nesta apresentação
Onde e quando esta apresentação foi realizada