SlideShare a Scribd company logo
1 of 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

More Related Content

Viewers also liked

Refactoring Data base parte 2
Refactoring Data base parte 2Refactoring Data base parte 2
Refactoring Data base parte 2
Ismael
 

Viewers also liked (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
 

Similar to Refactoring Databases

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
elliando dias
 
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
Katálysis Científica
 

Similar to Refactoring Databases (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
 

More from Ismael

More from 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
 

Recently uploaded

Recently uploaded (8)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Refactoring Databases

  • 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