Upload
ricardo-terra
View
616
Download
3
Embed Size (px)
Citation preview
Análise Estática de Código:
Aplicações
Ricardo Terra
rterrabh [at] gmail.com
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 1 / 40
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),Post-Ph.D. (INRIA/Université Lille 1)
BackgroundAcadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 2 / 40
Introdução à AEC
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 3 / 40
Problema (construção complexa, sujeito diversos problemas, erro humano)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 4 / 40
Estado da Prática: CDT
(Crash Driven Testing)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
Estado da Prática: CDT (Crash Driven Testing)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
(Parênteses) Qual o objetivo de testes?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 6 / 40
Atividades de V&V (Estamos construindo o produto corretamente-ver, correto-val)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 7 / 40
(Parênteses) Qualidade de Código
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 8 / 40
V&V [estática (inspeções, e.g., revisão de código, análises automatizadas, ver. formal) vs. dinâmica (testes, e.g., de defeitos e de validação); complementares]
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 9 / 40
(Parênteses) Segundo Sommerville...
Herança Múltipla? (Ian Sommerville vs. Bertrand Meyer)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
(Parênteses) Segundo Sommerville...
Herança Múltipla? (Ian Sommerville vs. Bertrand Meyer)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
Análise Estática de Código (inspeções/análises automatizadas, reduzir erros apontando anomalias)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 11 / 40
Ferramentas (Java, no caso)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 12 / 40
Ferramentas (Eclipse, no caso)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 13 / 40
Onde as ferramentas atuam?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 14 / 40
Anomalias (erros/formas de programação/omissões que possivelmente gerariam erros)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 15 / 40
(Parênteses) Estilo (e.g., Google)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
(Parênteses) Estilo (e.g., Google)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
Perigo de Erro #1: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 17 / 40
Falta de Estilo #1: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 18 / 40
Perigo de Erro #2: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 19 / 40
Falta de Estilo #2: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 20 / 40
Perigo de Erro #3: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 21 / 40
Falta de Estilo #3: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 22 / 40
Perigo de Erro #4: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 23 / 40
Falta de Estilo #4: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 24 / 40
Perigo de Erro #5: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 25 / 40
Falta de Estilo #5: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 26 / 40
Aplicações
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 27 / 40
Comparativo de Ferramentas
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 28 / 40
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
Conformidade Arquitetural
DCL
0: # definicoes de modulos #
1: on ly Factory can - c rea te Product2: Util can -only -depend $java , Util3: View cannot - access Model4: Product must- implement Serializable
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 30 / 40
Conformidade Arquitetural – Linguagens Dinamicamente Tipadas
Parser dasrestrições
ArchRubyRestrições
Arquiteturais
Código Fonte
Parser docódigo fonte
Conformidade arquitetural
Relatório de violações
Visão da arquitetura
in1
in2
t1 t2 t3
out1
out2
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 31 / 40
Conformidade Arquitetural – Integração Contínua
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 32 / 40
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
Refatoração – Extract/Move Method
publicgclassgCggg...ggvoidgmethodM(Aga)gggggFoogfg=gnewgFoo();ggggifg(x)gggggggdoA(a);ggggggintgyg=ggetY();ggggggy++;ggggggdoB();ggggggggsuper.methodM();gggg...
A B C
candidate
1
2
3
4
Generation of Candidates Scoring Function Ranking and FilteringExtract Method
RecommendationsSource Code
JExtract
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 34 / 40
(Parênteses) Cadeia
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 35 / 40
Conformidade Arquitetural – Descoberta Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 36 / 40
Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 37 / 40
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
Bala de Prata
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 39 / 40
Obrigado!!!
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 40 / 40