• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Refatoração Banco de Dados (Agileweekend2009)
 

Refatoração Banco de Dados (Agileweekend2009)

on

  • 2,883 views

Apresentar conceitos e práticas de Refactoring de Banco de Dados, que consiste em diversas técnicas e práticas para se aplicar melhorias em banco de dados (legados ou não), fazendo uma passagem ...

Apresentar conceitos e práticas de Refactoring de Banco de Dados, que consiste em diversas técnicas e práticas para se aplicar melhorias em banco de dados (legados ou não), fazendo uma passagem pelo Catálogo de Database Refactorings do Sr. Scott W. Ambler e demonstrando exemplos e cenários típicos de aplicação utilizando o PostgreSQL com suas facilidades e limitações na implementação de Refactorings.

Statistics

Views

Total Views
2,883
Views on SlideShare
2,774
Embed Views
109

Actions

Likes
1
Downloads
54
Comments
0

5 Embeds 109

http://xp-rs.blogspot.com 67
http://xp-rs.blogspot.com.br 27
http://www.linkedin.com 10
http://www.slideshare.net 4
http://www.blogger.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Refatoração Banco de Dados (Agileweekend2009) Refatoração Banco de Dados (Agileweekend2009) Presentation Transcript

    • Refatoração de Banco de Dados Fabrízio de Royes Mello [email_address]
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação!
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Objetivo
      • Apresentar os conceitos de Refactoring bem como sua aplicação em Banco de Dados, o chamado Database Refactoring , abordando o Catálogo de Refactorings com suas definições, categorias e exemplos práticos.
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação!
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Problema
      • Abordagem Tradicional
        • Análise... Análise... Análise... (tem fim?)
        • Schema da Base está disponível mais cedo e é isso que as pessoas irão utilizar
        • Com isso temos o DBA mais feliz!!!
    • Modelo Cascata (Waterfall) Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Abordagem Tradicional 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?
    • Solução?
      • Abordagem Ágil
        • Processo Iterativo e Incremental
        • Feedback Rápido
        • Constante Inspeção e Adaptação
        • DBA deve rever seus conceitos!!! (Agile DBA)
    • Abordagem Ágil Solução Iterativa e Incremental Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Idéia Abrangente 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
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Refactoring
      • ”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)
    • Database 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)
    • Database 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)
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Dificuldades na aplicação
      • Database Refactoring é mais difícil que Code Refactorings porque além de manter o comportamento também deve manter as informações
      • Acoplamento [1] pode ser um complicador dependendo da sua arquitetura de banco de dados
      • [1] Acoplamento é a medida de dependência entre dois elementos. Quanto mais acoplados dois elementos estiverem, maior a chance que a mudança em um implique na mudança do outro.
      • Melhor Caso
      • Baixo Acoplamento
      Single-Database Application Sua Aplicação Seu Banco de Dados
      • Pior Caso
      • Alto Acoplamento
      Multi-Application Database Sua Aplicação Seu Banco de Dados Outros Banco de Dados Frameworks de Persistência Outras Aplicações que Você Conhece Outras Aplicações que Você NÃO Conhece Arquivos de Dados Códigos de Testes
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Processo de Refatoração
      • Existe necessidade de refatorar?
      • Escolher o refactoring mais apropriado
      • Depreciar o esquema original
      • Testar antes, durante e após
      • Modificar o esquema
      • Migrar os dados
      • Modificar código externo
      • Executar testes de regressão
      • Versionar seu trabalho
      • Anunciar o refactoring
    • Processo de Refatoração Regra Geral Aplicação do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Esquema Original Período de Transição (Backups, Criação de Campos, Cópias de Dados, Remoção campos antigos, etc) Esquema Resultante
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Structural (17)
      • Drop Column
      • Drop Table
      • Drop View
      • Introduce Calculated Column
      • Introduce Surrogate Key
      • Merge Columns
      • Merge Tables
      • Move Column
      • Rename Column
      • Rename Table
      • Rename View
      • Replace LOB With Table
      • Replace Column
      • Replace One-To-Many With Associative Table
      • Replace Surrogate Key With Natural Key
      • Split Column
      • Split Table
      São mudanças na estrutura do banco de dados (tabelas, colunas, visões)
    • Data Quality (13)
      • Add Lookup Table
      • Apply Standard Codes
      • Apply Standard Type
      • Consolidate Key Strategy
      • Drop Column Constraint
      • Drop Default Value
      • Drop Non-Nullable
      • Introduce Column Constraint
      • Introduce Common Format
      • Introduce Default Value
      • Make Column Non-Nullable
      • Move Data
      • Replace Type Code With Property Flags
      São mudanças que melhoram a qualidade das informações contidas em um banco de dados
    • Referential Integrity (7)
      • Add Foreign Key Constraint
      • Add Trigger For Calculated Column
      • Drop Foreign Key Constraint
      • Introduce Cascading Delete
      • Introduce Hard Delete
      • Introduce Soft Delete
      • Introduce Trigger For History
      São mudanças que asseguram que uma linha referenciada exista em outra e/ou assegura que uma linha que não é mais necessária seja removida apropriadamente
    • Architectural (12)
      • Add CRUD Methods
      • Add Mirror Table
      • Add Read Method
      • Encapsulate Table With View
      • Introduce Calculation Method
      • Introduce Index
      • Introduce Read-Only Table
      • Migrate Method From Database
      • Migrate Method To Database
      • Replace Method(s) With View
      • Replace View With Method(s)
      • Use Official Data Source
      São mudanças que melhoram a maneira que programas externos interagem com a base de dados
    • Method (11)
      • Interface Changing Refactorings
        • Add Parameter
        • Parameterize Method
        • Remove Parameter
        • Rename Method
        • Reorder Parameters
        • Replace Parameter with Explicit Methods
      • Internal Refactorings
        • Consolidate Conditional Expression
        • Decompose Conditional
        • Extract Method
        • Introduce Variable
        • Remove Control Flag
      São mudanças que melhoram a qualidade de uma Procedure ou Função
    • Transformations (5)
      • Insert Data
      • Introduce New Column
      • Introduce New Table
      • Introduce New View
      • Update Data
      Mudanças que alteram a semântica do esquema do banco pela adição de novas funcionalidades
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Demonstrar Exemplos práticos!
    • Agenda
      • Objetivo
      • Problema e Solução (Abordagem Tradicional e Ágil)
      • Refactoring e Database Refactoring
      • Dificuldades na Aplicação
      • Processo de Database Refactoring
      • Catálogo de Refactorings (60 + 5)
      • Colocando a Mão na Massa!
      • Considerações Finais
    • Por quê Refatorar?
      • Aceitar mudança de escopo
      • Fornecer feedback rápido
      • Melhoria contínua
      • Aumentar a simplicidade para facilitar entendimento
      • Tornar modelos mais próximos do mundo real
      • Ter modelos simples para facilitar
        • Manutenção e
        • Evolução da aplicação
      Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com
    • Para refatorar algo
      • Conhecimento
      • Disciplina
      • Simplicidade
      • Bom senso
      • Persistência
    • Algumas Referências!
      • Livros:
        • Refactoring Databases (Scott W. Ambler e Pramod J. Sadalage)
        • Refactoring (Martin Fowler)
        • Agile Modeling (Scott W. Ambler)
      • Sites:
        • http://www.agiledata.org
        • http://www.databaserefactoring.org
        • http://visaoagil.wordpress.com
        • http://www.refactoring.com
    • Dúvidas/Críticas/Sugestões!!! Fabrízio de Royes Mello [email_address]