SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Por: Ismael Soares
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Agenda
Apresentar os conceitos de refatoração em banco de dados, o chamado  Database Refactoring  e apresentar alguns exemplos práticos. Objetivo
Após colocar em produção, como fazer os banco de dados evoluírem facilmente de acordo com os novos requisitos? Pergunta
Ou de forma mais específica, quem consegue mudar o nome de uma coluna do BD hoje e implantar essa alteração em produção amanhã? Pergunta
[object Object],[object Object],[object Object],[object Object],Problema e Solução
Problema e Solução Modelo Cascata (Waterfall)‏ Desenvolvimento (Vários Meses ou Anos)‏ Testes  (Dias)‏ Entrega Planejamento, Análise, Modelagem (Vários Meses)‏ Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Precisa Alterar o  Modelo e agora?
[object Object],[object Object],[object Object],[object Object],[object Object],Problema e Solução
Problema e Solução Idéia Abrangente Solução Iterativa e Incremental (Espiral) Iteração 01 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Tabela Tabela Tabela Tabela Software Iteração 02 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Software Tabela Tabela Tabela Tabela Iteração 03 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Tabela Tabela Tabela Tabela Software Iteração 04 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Software Tabela Tabela Tabela Tabela
“ Processo de alteração de um sistema de software de modo que o comportamento externo do código não mude, mas que sua estrutura interna seja melhorada.” “ É uma forma disciplinada de aperfeiçoar código que minimiza a introdução de falhas.” (Martin Fowler 2004)‏ O que é Refactoring?
“ É quando uma simples mudança no esquema de uma base de dados melhora a sua concepção (projeto), embora mantendo simultaneamente a sua semântica.” (Scott W. Ambler 2006)‏ O que é Data Base Refactoring?
“ Mudança disciplinada na estrutura de uma base de dados que não modifica sua semântica, porém melhora seu projeto e minimiza a introdução de dados inconsistentes.” (Fabrízio de Royes Mello 2009)‏ O que é Data Base Refactoring?
[object Object],[object Object],[object Object],Categorias de Refactoring Databases
Melhoria na qualidade da informação. Fazendo uma coluna não-nula para garantir que ela  sempre conterá um valor ou a aplicação de um formato  comum para uma coluna para garantir a consistência. Categorias de Refactoring Databases
[object Object],[object Object],[object Object],Categorias de Refactoring Databases
[object Object],[object Object],[object Object],[object Object],[object Object],Categorias de Refactoring Databases
[object Object],[object Object],Categorias de Refactoring Databases
[object Object],[object Object],Categorias de Refactoring Databases
Database Refactoring  é mais difícil que  Code Refactorings  porque além de manter o comportamento também deve manter as informações. Dificuldades
Dificuldades
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Dificuldades
Dificuldades
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Dificuldades
Single-Database Application (Modelo Simples) BD Sistema Dificuldades
Multi-Application Database (Modelo complexo) Quanto maior o acoplamento mais dificil é a refatoração! Dificuldades BD Sistema A Sistema desconhecido Outros BD Testes de Integração Hibernate Interfaces Externas
Encapsulamento do acesso ao banco de dados. Como resolver o acoplamento?
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Processos de Refactoring Databases
SandBox (caixa de  areia)  é um ambiente de teste que isola as mudanças de código não testado no contexto do desenvolvimento de software, incluindo o desenvolvimento Web e controle de revisão. É uma espécie de branch específico para testes. Cada desenvolvedor  que irá trabalhar no projeto deve ter um sandBox . Cada sandBox possui uma cópia do BD inteiro. SandBox
Devemos levar em conta três considerações: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Antes de começar...
Exemplo de Database Refactoring
Exemplo de Database Refactoring
“ Mal cheiros” são sintomas para refatorar: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],O que refatorar?
Ao fazer refactoring é de importante que a semântica seja mantida, ou seja, o esquema deve ser melhorada mas para o usuário, isto precisa ser transparente. Exemplo: Imagine que em uma tabela de cliente o número do telefone seja um varchar no seguinte formato:  (416) 555-1234 , e será alterado para numérico:  4165551234. Mantendo a semântica
O que testar? ,[object Object],[object Object],[object Object],[object Object],Test-Driven Development (TDD)
Test-Driven Development (TDD)
Testes  do esquema ,[object Object],[object Object],[object Object],[object Object],[object Object],Test-Driven Development (TDD)
Testes de migração dos dados ,[object Object],[object Object],[object Object],[object Object],[object Object],Test-Driven Development (TDD)
Testes do código de programas externos ,[object Object],[object Object],[object Object],Test-Driven Development (TDD)
Modificando o esquema
Modificando o esquema
[object Object],[object Object],[object Object],[object Object],[object Object],Modificando o esquema
Migração dos dados
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Controle de versionamento
[object Object],[object Object],[object Object],[object Object],Anunciando o Refactoring
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Processos de implantação
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Conclusão
Ambler, Scott W., Pramod J. Sadalage (2006). Refactoring Databases: Evolutionary Databases Design. New York: Addison Wesley Professional.  http://www.ambysoft.com/books/refactoringDatabases.html   Ambler, Scott W., Pramod J. Sadalage (2006). Refactoring Databases: The Process. http://www.simple-talk.com/sql/database-administration/refactoring-databases-the-process/   Ambler, Scott W. (2007). Presentation Databases Refactoring. http://www.infoq.com/presentations/ambler-database-refactoring   Ambler, S. W. (2003). Agile Databases Techniques: Effective Strategies for the Agile Software Developer. New York: John Wiley & Sons.  www.ambysoft.com/agileDatabasesTechniques.html Sato, Danilo e Ferreira, João Eduardo (2007).  Banco de Dados Ágeis e Refatoração .  Curso de Verão 2007 - IME/USP .  http://ccsl.ime.usp.br/agilcoop/files/4-BDs-Ageis.pdf Bibliografia
Perguntas
Agradecimentos

Weitere ähnliche Inhalte

Andere mochten auch

Geb - Acceptance Test
Geb - Acceptance TestGeb - Acceptance Test
Geb - Acceptance TestIsmael
 
Java one
Java oneJava one
Java oneIsmael
 
Refactoring Data base parte 2
Refactoring Data base parte 2Refactoring Data base parte 2
Refactoring Data base parte 2Ismael
 
Introdução ao EasyTest
Introdução ao EasyTestIntrodução ao EasyTest
Introdução ao EasyTestIsmael
 
SPED no Sistema Bluesoft
SPED no Sistema BluesoftSPED no Sistema Bluesoft
SPED no Sistema BluesoftIsmael
 
Habilidade sensorial em Equipes Auto-Organizáveis
Habilidade sensorial em Equipes Auto-OrganizáveisHabilidade sensorial em Equipes Auto-Organizáveis
Habilidade sensorial em Equipes Auto-OrganizáveisIsmael
 
Product Owner na prática
Product Owner na práticaProduct Owner na prática
Product Owner na práticaPedro Valente
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu softwareIsmael
 
Inove suas retrospectivas
Inove suas retrospectivasInove suas retrospectivas
Inove suas retrospectivasIsmael
 
Java one
Java oneJava one
Java oneIsmael
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloIsmael
 
Emoções do Lider
Emoções do LiderEmoções do Lider
Emoções do LiderIsmael
 
Novidades Groovy 2.0
Novidades Groovy 2.0Novidades Groovy 2.0
Novidades Groovy 2.0Ismael
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do UsuarioIsmael
 
Equipes auto organizaveis
Equipes auto organizaveisEquipes auto organizaveis
Equipes auto organizaveisIsmael
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1Ismael
 
Clareza nos objetivos
Clareza nos objetivosClareza nos objetivos
Clareza nos objetivosIsmael
 
Quando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaQuando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaIsmael
 

Andere mochten auch (20)

Geb - Acceptance Test
Geb - Acceptance TestGeb - Acceptance Test
Geb - Acceptance Test
 
Java one
Java oneJava one
Java one
 
Refactoring Data base parte 2
Refactoring Data base parte 2Refactoring Data base parte 2
Refactoring Data base parte 2
 
Introdução ao EasyTest
Introdução ao EasyTestIntrodução ao EasyTest
Introdução ao EasyTest
 
SPED no Sistema Bluesoft
SPED no Sistema BluesoftSPED no Sistema Bluesoft
SPED no Sistema Bluesoft
 
Svn e processos de controle de código
Svn e processos de controle de códigoSvn e processos de controle de código
Svn e processos de controle de código
 
Habilidade sensorial em Equipes Auto-Organizáveis
Habilidade sensorial em Equipes Auto-OrganizáveisHabilidade sensorial em Equipes Auto-Organizáveis
Habilidade sensorial em Equipes Auto-Organizáveis
 
Product Owner na prática
Product Owner na práticaProduct Owner na prática
Product Owner na prática
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu software
 
Inove suas retrospectivas
Inove suas retrospectivasInove suas retrospectivas
Inove suas retrospectivas
 
Java one
Java oneJava one
Java one
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Emoções do Lider
Emoções do LiderEmoções do Lider
Emoções do Lider
 
Novidades Groovy 2.0
Novidades Groovy 2.0Novidades Groovy 2.0
Novidades Groovy 2.0
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do Usuario
 
Equipes auto organizaveis
Equipes auto organizaveisEquipes auto organizaveis
Equipes auto organizaveis
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega Contínua
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 
Clareza nos objetivos
Clareza nos objetivosClareza nos objetivos
Clareza nos objetivos
 
Quando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaQuando a tecnologia se torna um problema
Quando a tecnologia se torna um problema
 

Ähnlich wie Database Refactoring: Conceitos, Desafios e Exemplos Práticos

Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Fabrízio Mello
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Fabrízio Mello
 
Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Fabrízio Mello
 
O fator manutenção no ciclo de vida de data warehouse
O fator manutenção no ciclo de vida de data warehouseO fator manutenção no ciclo de vida de data warehouse
O fator manutenção no ciclo de vida de data warehouseEderson Schwaickardt
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerIgor Rosa Macedo
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis Científica
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01Alan Carlos
 
Mining software repositories
Mining software repositoriesMining software repositories
Mining software repositoriesRafael Rossi
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Januário Neto
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Matheus de Oliveira
 

Ähnlich wie Database Refactoring: Conceitos, Desafios e Exemplos Práticos (20)

Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009
 
Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009
 
O fator manutenção no ciclo de vida de data warehouse
O fator manutenção no ciclo de vida de data warehouseO fator manutenção no ciclo de vida de data warehouse
O fator manutenção no ciclo de vida de data warehouse
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
ES4.ppt
ES4.pptES4.ppt
ES4.ppt
 
C # banco de dados
C # banco de dadosC # banco de dados
C # banco de dados
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial V
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01
 
Mining software repositories
Mining software repositoriesMining software repositories
Mining software repositories
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7
 

Mehr von Ismael

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilIsmael
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIsmael
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basicoIsmael
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft CultureIsmael
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacksIsmael
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxoIsmael
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017Ismael
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas FrequentesIsmael
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4Ismael
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do ÁgilIsmael
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesIsmael
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John KotterIsmael
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossIsmael
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016Ismael
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider AgilIsmael
 
Law of demeter
Law of demeterLaw of demeter
Law of demeterIsmael
 
Junit Lambda
Junit LambdaJunit Lambda
Junit LambdaIsmael
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos TestesIsmael
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 
Truques da mente
Truques da menteTruques da mente
Truques da menteIsmael
 

Mehr von Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros Macetes
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Truques da mente
Truques da menteTruques da mente
Truques da mente
 

Database Refactoring: Conceitos, Desafios e Exemplos Práticos

  • 2.
  • 3. Apresentar os conceitos de refatoração em banco de dados, o chamado Database Refactoring e apresentar alguns exemplos práticos. Objetivo
  • 4. Após colocar em produção, como fazer os banco de dados evoluírem facilmente de acordo com os novos requisitos? Pergunta
  • 5. Ou de forma mais específica, quem consegue mudar o nome de uma coluna do BD hoje e implantar essa alteração em produção amanhã? Pergunta
  • 6.
  • 7. Problema e Solução Modelo Cascata (Waterfall)‏ Desenvolvimento (Vários Meses ou Anos)‏ Testes (Dias)‏ Entrega Planejamento, Análise, Modelagem (Vários Meses)‏ Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Precisa Alterar o Modelo e agora?
  • 8.
  • 9. Problema e Solução Idéia Abrangente Solução Iterativa e Incremental (Espiral) Iteração 01 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Tabela Tabela Tabela Tabela Software Iteração 02 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Software Tabela Tabela Tabela Tabela Iteração 03 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Tabela Tabela Tabela Tabela Software Iteração 04 (2 a 4 semanas)‏ (Planejamento, Modelagem, Desenvolvimento, Testes)‏ Software Tabela Tabela Tabela Tabela
  • 10. “ Processo de alteração de um sistema de software de modo que o comportamento externo do código não mude, mas que sua estrutura interna seja melhorada.” “ É uma forma disciplinada de aperfeiçoar código que minimiza a introdução de falhas.” (Martin Fowler 2004)‏ O que é Refactoring?
  • 11. “ É quando uma simples mudança no esquema de uma base de dados melhora a sua concepção (projeto), embora mantendo simultaneamente a sua semântica.” (Scott W. Ambler 2006)‏ O que é Data Base Refactoring?
  • 12. “ Mudança disciplinada na estrutura de uma base de dados que não modifica sua semântica, porém melhora seu projeto e minimiza a introdução de dados inconsistentes.” (Fabrízio de Royes Mello 2009)‏ O que é Data Base Refactoring?
  • 13.
  • 14. Melhoria na qualidade da informação. Fazendo uma coluna não-nula para garantir que ela sempre conterá um valor ou a aplicação de um formato comum para uma coluna para garantir a consistência. Categorias de Refactoring Databases
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Database Refactoring é mais difícil que Code Refactorings porque além de manter o comportamento também deve manter as informações. Dificuldades
  • 21.
  • 23.
  • 24. Single-Database Application (Modelo Simples) BD Sistema Dificuldades
  • 25. Multi-Application Database (Modelo complexo) Quanto maior o acoplamento mais dificil é a refatoração! Dificuldades BD Sistema A Sistema desconhecido Outros BD Testes de Integração Hibernate Interfaces Externas
  • 26. Encapsulamento do acesso ao banco de dados. Como resolver o acoplamento?
  • 27.
  • 28. SandBox (caixa de  areia)  é um ambiente de teste que isola as mudanças de código não testado no contexto do desenvolvimento de software, incluindo o desenvolvimento Web e controle de revisão. É uma espécie de branch específico para testes. Cada desenvolvedor que irá trabalhar no projeto deve ter um sandBox . Cada sandBox possui uma cópia do BD inteiro. SandBox
  • 29.
  • 30. Exemplo de Database Refactoring
  • 31. Exemplo de Database Refactoring
  • 32.
  • 33. Ao fazer refactoring é de importante que a semântica seja mantida, ou seja, o esquema deve ser melhorada mas para o usuário, isto precisa ser transparente. Exemplo: Imagine que em uma tabela de cliente o número do telefone seja um varchar no seguinte formato: (416) 555-1234 , e será alterado para numérico: 4165551234. Mantendo a semântica
  • 34.
  • 36.
  • 37.
  • 38.
  • 41.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47. Ambler, Scott W., Pramod J. Sadalage (2006). Refactoring Databases: Evolutionary Databases Design. New York: Addison Wesley Professional. http://www.ambysoft.com/books/refactoringDatabases.html   Ambler, Scott W., Pramod J. Sadalage (2006). Refactoring Databases: The Process. http://www.simple-talk.com/sql/database-administration/refactoring-databases-the-process/   Ambler, Scott W. (2007). Presentation Databases Refactoring. http://www.infoq.com/presentations/ambler-database-refactoring   Ambler, S. W. (2003). Agile Databases Techniques: Effective Strategies for the Agile Software Developer. New York: John Wiley & Sons. www.ambysoft.com/agileDatabasesTechniques.html Sato, Danilo e Ferreira, João Eduardo (2007). Banco de Dados Ágeis e Refatoração . Curso de Verão 2007 - IME/USP . http://ccsl.ime.usp.br/agilcoop/files/4-BDs-Ageis.pdf Bibliografia