51
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

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

Embed Size (px)

Citation preview

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

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

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

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

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

Introdução à AEC

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 3 / 40

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

Problema (construção complexa, sujeito diversos problemas, erro humano)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 4 / 40

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

Estado da Prática: CDT

(Crash Driven Testing)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40

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

Estado da Prática: CDT (Crash Driven Testing)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40

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

(Parênteses) Qual o objetivo de testes?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 6 / 40

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

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

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

(Parênteses) Qualidade de Código

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 8 / 40

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

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

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

(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

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

(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

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

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

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

Ferramentas (Java, no caso)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 12 / 40

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

Ferramentas (Eclipse, no caso)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 13 / 40

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

Onde as ferramentas atuam?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 14 / 40

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

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

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

(Parênteses) Estilo (e.g., Google)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40

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

(Parênteses) Estilo (e.g., Google)

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40

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

Perigo de Erro #1: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 17 / 40

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

Falta de Estilo #1: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 18 / 40

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

Perigo de Erro #2: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 19 / 40

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

Falta de Estilo #2: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 20 / 40

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

Perigo de Erro #3: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 21 / 40

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

Falta de Estilo #3: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 22 / 40

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

Perigo de Erro #4: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 23 / 40

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

Falta de Estilo #4: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 24 / 40

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

Perigo de Erro #5: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 25 / 40

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

Falta de Estilo #5: Consegue identificá-lo?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 26 / 40

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

Aplicações

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 27 / 40

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

Comparativo de Ferramentas

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 28 / 40

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

Conformidade Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40

Planejada

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

Conformidade Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40

Planejada Implementada

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

Conformidade Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40

Planejada Implementada

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

Conformidade Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40

Planejada Implementada

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

Conformidade Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40

Planejada Implementada

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

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

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

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

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

Conformidade Arquitetural – Integração Contínua

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 32 / 40

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

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

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

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

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

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

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

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

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

(Parênteses) Cadeia

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 35 / 40

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

Conformidade Arquitetural – Descoberta Arquitetural

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 36 / 40

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

Considerações Finais

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 37 / 40

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

Considerações Finais

Como produzir código de qualidade?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40

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

Considerações Finais

Como produzir código de qualidade?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40

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

Considerações Finais

Como produzir código de qualidade?

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40

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

Bala de Prata

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 39 / 40

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

Obrigado!!!

Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 40 / 40