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)
Background
Acadê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
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: only Factory can - create Product
2: Util can - only -depend $java , Util
3: View cannot - access Model
4: Product must-implement Serializable
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 30 / 40
Conformidade Arquitetural – Linguagens Dinamicamente Tipadas
Parser das
restrições
ArchRuby
Restrições
Arquiteturais
Código Fonte
Parser do
có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 extends X { c l a s s Foo extends X {
A a ; B b ;
B b ; G g ;
exampleBar ( D d ){ exampleFoo ( E e ){
a . f ( ) ; e . j ( ) ;
d . g ( ) ; new A ( ) . f ()
} }
} }
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
Similaridade Estrutural
c l a s s Bar extends X { c l a s s Foo extends 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
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
Similaridade Estrutural
c l a s s Bar extends X { c l a s s Foo extends 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
publicgclassgCg{
gg...
ggvoidgmethodM(Aga)g{
ggggFoogfg=gnewgFoo();
ggggifg(x)g{
ggggggdoA(a);
ggggggintgyg=ggetY();
ggggggy++;
ggggggdoB();
gggg}
ggggsuper.methodM();
gg}
gg...
}
A B C
candidate
1
2
3
4
Generation of Candidates Scoring Function Ranking and Filtering
Extract Method
Recommendations
Source 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

Análise Estática de Código: Aplicações

  • 1.
    Análise Estática deCódigo: Aplicações Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 1 / 40
  • 2.
    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) Background Acadê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
  • 3.
    Introdução à AEC RicardoTerra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 3 / 40
  • 4.
    Problema (construção complexa,sujeito diversos problemas, erro humano) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 4 / 40
  • 5.
    Estado da Prática:CDT Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
  • 6.
    Estado da Prática:CDT (Crash Driven Testing) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
  • 7.
    (Parênteses) Qual oobjetivo de testes? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 6 / 40
  • 8.
    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
  • 9.
    (Parênteses) Qualidade deCódigo Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 8 / 40
  • 10.
    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
  • 11.
    (Parênteses) Segundo Sommerville... HerançaMúltipla? (Ian Sommerville vs. Bertrand Meyer) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
  • 12.
    (Parênteses) Segundo Sommerville... HerançaMúltipla? (Ian Sommerville vs. Bertrand Meyer) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
  • 13.
    Análise Estática deCódigo (inspeções/análises automatizadas, reduzir erros apontando anomalias) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 11 / 40
  • 14.
    Ferramentas (Java, nocaso) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 12 / 40
  • 15.
    Ferramentas (Eclipse, nocaso) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 13 / 40
  • 16.
    Onde as ferramentasatuam? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 14 / 40
  • 17.
    Anomalias (erros/formas deprogramação/omissões que possivelmente gerariam erros) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 15 / 40
  • 18.
    (Parênteses) Estilo (e.g.,Google) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
  • 19.
    (Parênteses) Estilo (e.g.,Google) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
  • 20.
    Perigo de Erro#1: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 17 / 40
  • 21.
    Falta de Estilo#1: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 18 / 40
  • 22.
    Perigo de Erro#2: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 19 / 40
  • 23.
    Falta de Estilo#2: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 20 / 40
  • 24.
    Perigo de Erro#3: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 21 / 40
  • 25.
    Falta de Estilo#3: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 22 / 40
  • 26.
    Perigo de Erro#4: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 23 / 40
  • 27.
    Falta de Estilo#4: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 24 / 40
  • 28.
    Perigo de Erro#5: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 25 / 40
  • 29.
    Falta de Estilo#5: Consegue identificá-lo? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 26 / 40
  • 30.
    Aplicações Ricardo Terra (rterrabh[at] gmail.com) AEC: Aplicações Agosto, 2015 27 / 40
  • 31.
    Comparativo de Ferramentas RicardoTerra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 28 / 40
  • 32.
    Conformidade Arquitetural Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40 Planejada
  • 33.
    Conformidade Arquitetural Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40 Planejada Implementada
  • 34.
    Conformidade Arquitetural Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40 Planejada Implementada
  • 35.
    Conformidade Arquitetural Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40 Planejada Implementada
  • 36.
    Conformidade Arquitetural Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40 Planejada Implementada
  • 37.
    Conformidade Arquitetural DCL 0: #definicoesde modulos# 1: only Factory can - create Product 2: Util can - only -depend $java , Util 3: View cannot - access Model 4: Product must-implement Serializable Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 30 / 40
  • 38.
    Conformidade Arquitetural –Linguagens Dinamicamente Tipadas Parser das restrições ArchRuby Restrições Arquiteturais Código Fonte Parser do có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
  • 39.
    Conformidade Arquitetural –Integração Contínua Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 32 / 40
  • 40.
    Similaridade Estrutural c la s s Bar extends X { c l a s s Foo extends X { A a ; B b ; B b ; G g ; exampleBar ( D d ){ exampleFoo ( E e ){ a . f ( ) ; e . j ( ) ; d . g ( ) ; new A ( ) . f () } } } } Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
  • 41.
    Similaridade Estrutural c la s s Bar extends X { c l a s s Foo extends 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 Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
  • 42.
    Similaridade Estrutural c la s s Bar extends X { c l a s s Foo extends 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
  • 43.
    Refatoração – Extract/MoveMethod publicgclassgCg{ gg... ggvoidgmethodM(Aga)g{ ggggFoogfg=gnewgFoo(); ggggifg(x)g{ ggggggdoA(a); ggggggintgyg=ggetY(); ggggggy++; ggggggdoB(); gggg} ggggsuper.methodM(); gg} gg... } A B C candidate 1 2 3 4 Generation of Candidates Scoring Function Ranking and Filtering Extract Method Recommendations Source Code JExtract Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 34 / 40
  • 44.
    (Parênteses) Cadeia Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 35 / 40
  • 45.
    Conformidade Arquitetural –Descoberta Arquitetural Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 36 / 40
  • 46.
    Considerações Finais Ricardo Terra(rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 37 / 40
  • 47.
    Considerações Finais Como produzircódigo de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 48.
    Considerações Finais Como produzircódigo de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 49.
    Considerações Finais Como produzircódigo de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 50.
    Bala de Prata RicardoTerra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 39 / 40
  • 51.
    Obrigado!!! Ricardo Terra (rterrabh[at] gmail.com) AEC: Aplicações Agosto, 2015 40 / 40