SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

Introdução ao Mobile Marketing
Introdução ao Mobile MarketingIntrodução ao Mobile Marketing
Introdução ao Mobile Marketing
Dirceu Belém
 

Destaque (20)

Concurso de Pitch - EDIFPI
Concurso de Pitch - EDIFPIConcurso de Pitch - EDIFPI
Concurso de Pitch - EDIFPI
 
Algoritmos - Introdução à Computação
Algoritmos - Introdução à ComputaçãoAlgoritmos - Introdução à Computação
Algoritmos - Introdução à Computação
 
Programação lógica
Programação lógicaProgramação lógica
Programação lógica
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacao
 
aula 05 - Logica de programacao
aula 05 - Logica de programacaoaula 05 - Logica de programacao
aula 05 - Logica de programacao
 
Introdução ao Mobile Marketing
Introdução ao Mobile MarketingIntrodução ao Mobile Marketing
Introdução ao Mobile Marketing
 
Algoritmos - Comandos de Seleção
Algoritmos - Comandos de SeleçãoAlgoritmos - Comandos de Seleção
Algoritmos - Comandos de Seleção
 
aula 07 - Logica de programacao
aula 07 - Logica de programacaoaula 07 - Logica de programacao
aula 07 - Logica de programacao
 
aula 11 de logica de programacao
aula 11 de logica de programacaoaula 11 de logica de programacao
aula 11 de logica de programacao
 
Algoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de ProgramaAlgoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de Programa
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacao
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de Programação
 
aula 09 logica de programacao
aula 09 logica de programacaoaula 09 logica de programacao
aula 09 logica de programacao
 
Algoritmos - Registros
Algoritmos - RegistrosAlgoritmos - Registros
Algoritmos - Registros
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
aula 04 - Logica de programacao
aula 04 - Logica de programacaoaula 04 - Logica de programacao
aula 04 - Logica de programacao
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Aula 1 - Programação 1
Aula 1 - Programação 1Aula 1 - Programação 1
Aula 1 - Programação 1
 
Algoritmos - Procedimentos
Algoritmos - ProcedimentosAlgoritmos - Procedimentos
Algoritmos - Procedimentos
 

Mais de Ricardo Terra

Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
Ricardo Terra
 

Mais de Ricardo Terra (20)

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 
Apostila XHTML
Apostila XHTMLApostila XHTML
Apostila XHTML
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 

Último

O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 

Último (20)

Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 

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

  • 1. 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
  • 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 Ricardo Terra (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 o objetivo 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 de Có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ça Mú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ça Múltipla? (Ian Sommerville vs. Bertrand Meyer) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
  • 13. 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
  • 14. Ferramentas (Java, no caso) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 12 / 40
  • 15. Ferramentas (Eclipse, no caso) Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 13 / 40
  • 16. Onde as ferramentas atuam? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 14 / 40
  • 17. 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
  • 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 Ricardo Terra (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: #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
  • 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 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 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 produzir código de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 48. Considerações Finais Como produzir código de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 49. Considerações Finais Como produzir código de qualidade? Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
  • 50. Bala de Prata Ricardo Terra (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