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

Preview:

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