SlideShare uma empresa Scribd logo
1 de 19
PolymorphicView: 
Visualizando o uso do Polimorfismo 
em Projetos de Software 
Fábio Petrillo, Guilherme Lacerda, Marcelo Pimenta, Carla Freitas 
{fspetrillo,gslacerda,mpimenta,carla}@inf.ufrgs.br 
INF-UFRGS/FacIn-UniRitter
Introdução 
Polimorfismo 
 Conceito chave da OO 
 Benefícios 
 Formato de uso
Problema
Proposta: PolymorphicView
Proposta: PolymorphicView
Experimento: Processo 
1. Extrair os dados dos projetos 
2. Pesquisar todas as classes abstratas e interfaces 
3. Filtrar 
DIT >= 1, NOC >= 1, NAM >= 1, pelo menos um cliente 
4. Construir o PolymorphicView 
5. Analisar o polimorfismo através da visualização 
6. Complementar a análise com o código fonte
Experimento: JUnit
Experimento: JUnit
Experimento: FindBugs
Experimento: FindBugs
Discussão 
 Apoio na localização de estruturas polimórficas 
 Forma de encontrar e detectar patterns 
 PolymorphicView 
Perspectiva Estrutural + Perspectiva Comportamental 
 Compreensão de padrões arquiteturais
Conclusões e Trabalhos Futuros 
Limitações 
 Dificuldade em analisar todos os níveis de 
hierarquia 
 Em alguns casos, precisou-se recorrer ao 
código
Conclusões e Trabalhos Futuros 
Perspectivas 
 como os tipos polimórficos se relacionam com seus clientes? 
 quais padrões de projeto que adotam polimorfismo são 
encontrados? 
 quais anti-padrões são encontrados? 
 há diferenças entre o uso de polimorfismo em Java e em outras 
linguagens? 
 uso do polimorfismo é uma opção deste as primeiras versões de 
um tipo ou é o resultado de um processo de evolução do 
software, através de refatorações, por exemplo?
Dúvidas?
Muito Obrigado! 
Fábio Petrillo, Guilherme Lacerda, Marcelo Pimenta, Carla Freitas 
{fspetrillo,gslacerda,mpimenta,carla}@inf.ufrgs.br 
INF-UFRGS/FacIn-UniRitter
PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software
PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software
PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software
PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software

Mais conteúdo relacionado

Destaque

(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários ComplexosWildtech
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)Wildtech
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TIWildtech
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorWildtech
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleWildtech
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of RetrospectivesWildtech
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureWildtech
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Wildtech
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...Wildtech
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"Wildtech
 

Destaque (11)

(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TI
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo Professor
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By Example
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of Retrospectives
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion Architecture
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"
 

Semelhante a PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software

TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...Fulvio Mascara
 
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDDisciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDRogerio P C do Nascimento
 
Desbravando a web com python - Matheus Lima
Desbravando a web com python - Matheus LimaDesbravando a web com python - Matheus Lima
Desbravando a web com python - Matheus LimaMatheus Dos Santos Lima
 
Poo apostila visual c
Poo apostila visual cPoo apostila visual c
Poo apostila visual cFabiano Lima
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFS
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFSApresentação da Disciplina Gerência de Projetos - DCOMP - UFS
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFSRogerio P C do Nascimento
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...José Correia
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com PythonHenrique Bastos
 
Interface multitoque multi-utilizador no ensino das Ciências Naturais
Interface multitoque multi-utilizador no ensino das Ciências NaturaisInterface multitoque multi-utilizador no ensino das Ciências Naturais
Interface multitoque multi-utilizador no ensino das Ciências NaturaisAdriana Ramos
 
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...Fulvio Mascara
 
Construindo Chatbots com Design Thinking e framework i*: um método estruturado
Construindo Chatbots com Design Thinking e framework i*: um método estruturadoConstruindo Chatbots com Design Thinking e framework i*: um método estruturado
Construindo Chatbots com Design Thinking e framework i*: um método estruturadoMeire Helen Batista Dias
 
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...tdc-globalcode
 
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFS
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFSApresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFS
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFSRogerio P C do Nascimento
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Guilherme Ponce
 

Semelhante a PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software (20)

TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
 
Apresentação E-Profile
Apresentação E-ProfileApresentação E-Profile
Apresentação E-Profile
 
Trabalho es prototipagem
Trabalho es   prototipagemTrabalho es   prototipagem
Trabalho es prototipagem
 
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDDisciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
 
Desbravando a web com python - Matheus Lima
Desbravando a web com python - Matheus LimaDesbravando a web com python - Matheus Lima
Desbravando a web com python - Matheus Lima
 
Poo apostila visual c
Poo apostila visual cPoo apostila visual c
Poo apostila visual c
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFS
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFSApresentação da Disciplina Gerência de Projetos - DCOMP - UFS
Apresentação da Disciplina Gerência de Projetos - DCOMP - UFS
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
 
MEF DotNetArchitects
MEF DotNetArchitectsMEF DotNetArchitects
MEF DotNetArchitects
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com Python
 
aps_08 - Teoria POO.pdf
aps_08 - Teoria POO.pdfaps_08 - Teoria POO.pdf
aps_08 - Teoria POO.pdf
 
Interface multitoque multi-utilizador no ensino das Ciências Naturais
Interface multitoque multi-utilizador no ensino das Ciências NaturaisInterface multitoque multi-utilizador no ensino das Ciências Naturais
Interface multitoque multi-utilizador no ensino das Ciências Naturais
 
Mocking Test
Mocking TestMocking Test
Mocking Test
 
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
 
Aula poo x pe
Aula poo x peAula poo x pe
Aula poo x pe
 
Construindo Chatbots com Design Thinking e framework i*: um método estruturado
Construindo Chatbots com Design Thinking e framework i*: um método estruturadoConstruindo Chatbots com Design Thinking e framework i*: um método estruturado
Construindo Chatbots com Design Thinking e framework i*: um método estruturado
 
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...
TDC2018SP | Trilha ChatBots - Construindo Chatbots com Design Thinking e fram...
 
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFS
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFSApresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFS
Apresentação_atualizada_Gerencia_de_Projetos_DCOMP_UFS
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
 

Mais de Wildtech

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilWildtech
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareWildtech
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a AcademiaWildtech
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingWildtech
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Wildtech
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleWildtech
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasWildtech
 
Agile workshop FACENSA
Agile workshop FACENSAAgile workshop FACENSA
Agile workshop FACENSAWildtech
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011Wildtech
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentWildtech
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 

Mais de Wildtech (11)

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágil
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de software
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a Academia
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coaching
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By Example
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
 
Agile workshop FACENSA
Agile workshop FACENSAAgile workshop FACENSA
Agile workshop FACENSA
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based Development
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 

PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software

  • 1. PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software Fábio Petrillo, Guilherme Lacerda, Marcelo Pimenta, Carla Freitas {fspetrillo,gslacerda,mpimenta,carla}@inf.ufrgs.br INF-UFRGS/FacIn-UniRitter
  • 2. Introdução Polimorfismo  Conceito chave da OO  Benefícios  Formato de uso
  • 6. Experimento: Processo 1. Extrair os dados dos projetos 2. Pesquisar todas as classes abstratas e interfaces 3. Filtrar DIT >= 1, NOC >= 1, NAM >= 1, pelo menos um cliente 4. Construir o PolymorphicView 5. Analisar o polimorfismo através da visualização 6. Complementar a análise com o código fonte
  • 11. Discussão  Apoio na localização de estruturas polimórficas  Forma de encontrar e detectar patterns  PolymorphicView Perspectiva Estrutural + Perspectiva Comportamental  Compreensão de padrões arquiteturais
  • 12. Conclusões e Trabalhos Futuros Limitações  Dificuldade em analisar todos os níveis de hierarquia  Em alguns casos, precisou-se recorrer ao código
  • 13. Conclusões e Trabalhos Futuros Perspectivas  como os tipos polimórficos se relacionam com seus clientes?  quais padrões de projeto que adotam polimorfismo são encontrados?  quais anti-padrões são encontrados?  há diferenças entre o uso de polimorfismo em Java e em outras linguagens?  uso do polimorfismo é uma opção deste as primeiras versões de um tipo ou é o resultado de um processo de evolução do software, através de refatorações, por exemplo?
  • 15. Muito Obrigado! Fábio Petrillo, Guilherme Lacerda, Marcelo Pimenta, Carla Freitas {fspetrillo,gslacerda,mpimenta,carla}@inf.ufrgs.br INF-UFRGS/FacIn-UniRitter

Notas do Editor

  1. Aqui vamos apresentar a dinâmica e as iterações
  2. Aqui vamos apresentar a dinâmica e as iterações
  3. Aqui vamos apresentar a dinâmica e as iterações
  4. Aqui vamos apresentar a dinâmica e as iterações
  5. Aqui vamos apresentar a dinâmica e as iterações
  6. Aqui vamos apresentar a dinâmica e as iterações
  7. Aqui vamos apresentar a dinâmica e as iterações
  8. Aqui vamos apresentar a dinâmica e as iterações
  9. Aqui vamos apresentar a dinâmica e as iterações
  10. Aqui vamos apresentar a dinâmica e as iterações
  11. Aqui vamos apresentar a dinâmica e as iterações
  12. Aqui vamos apresentar a dinâmica e as iterações