Banco de Dados Ágeis e Refatoração SC1: Métodos Ágeis de Desenvolvimento de Software www.agilcoop.org.br Danilo Sato & João Eduardo Ferreira IV Experimental.

Slides:



Advertisements
Apresentações semelhantes
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Advertisements

Engenharia de Software
Engenharia de Software
Evolução dos SGBD’s (2ª Parte).
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
BANCO DE DADOS Transparências baseadas no capítulo 1 do livro de KORTH e SILBERCHATZ e 1 e 2 do livro de ELMASRI e NAVATHE. Juliana Amaral e Rodrigo Baroni.
Tipos de sistemas de Lehman
Identificando requisitos
Engenharia de Software
Rational Unified Process(RUP)
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO - UFES CENTRO DE CIÊNCIAS AGRÁRIAS - CCA DISCIPLINA DE INFORMÁTICA - ENG05207 Aula 09 –a Banco de dados Profs: Dr.
Maurício Edgar Stivanello
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Mapeamento Objeto Relacional
RV: Objetos e Implementação Prof. Dr. Annibal Hetem Jr.
Professora: Aline Vasconcelos
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas.
Introdução Visão Geral do Método.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Grupo 5: Fernando Lourenço Pinho Costa Rafael de Souza Santos
RUP: Fluxo de Análise e Projeto
Gerencia de Projeto OO Aspectos Avançados em Engenharia de Software Aula 5 Fernanda Campos DCC/UFJF.
TSDD Teste de segurança durante o desenvolvimento.
Mapeamento de Objetos para Tabelas Relacionais
Administração de Sistemas de Informação Banco de Dados
Diagrama de Componentes
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Tecnologias de Linguagens para Banco de Dados
Gerenciamento de Configuração
Conceitos.
Análise e Projeto de Sistemas
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Projeto de Banco de Dados
Gerência de Configuração - GC
Orientação a Objetos Parte I
Análise de Sistemas de Informação
Contexto da disciplina
SISTEMAS DISTRIBUIDOS Aula 4
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
A abordagem de banco de dados para gerenciamento de dados
O Processo Unificado (UP)
Banco de Dados Aplicado ao Desenvolvimento de Software
Padrão- MVC Model, View, Controller
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
METODOLOGIA, MÉTODOS E FERRAMENTAS
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
Banco de Dados Ágeis e Refatoração
Gestão de projetos de Software GTI-16
LINQ e Entity Framework
© 2007 by Pearson Education ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reuso de Software.
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Abr-17 Projetar Base de Dados Projetar base de dados.
Engenharia de Software
SOFTWARE DE ESTATÍSTICAS PARA BASQUETE EM CADEIRA RODAS ESTUDO DE CASO ADFP - FÊNIX Acadêmicos: Elisangela Fernandes Duarte Sandro Colaço de Lima Orientador:
UCSal – Bacharelado em Informática Banco de Dados Profa. Semíramis Assis
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
TÉCNICAS DE ESTIMATIVAS
Copyright © 2011 Ramez Elmasri and Shamkant Navathe slide 1 Tópicos  Introdução  Um exemplo  Características da abordagem de banco de dados  Vantagens.
Segurança em Banco de Dados 1 Prof: Thiago Moraes Martins Bacharel em Sistemas de Informa ç ão P ó s-Gradua ç ão Software Livre Aplicado P ó s-Gradua ç.
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Persistência de dados e padrão DAO
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Banco de Dados Ágeis e Refatoração SC1: Métodos Ágeis de Desenvolvimento de Software Danilo Sato & João Eduardo Ferreira IV Experimental Software Engineering Latin America Workshop

2 Copyleft AgilCoop 2007 Pergunta: Como fazer com que os bancos de dados evoluam de acordo com os novos requisitos, após colocá-los em produção ?

3 Copyleft AgilCoop 2007 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ã?

4 Copyleft AgilCoop 2007 Pergunta: Qual é o principal o problema para o desenvolvimento de BD Ágeis?

5 Copyleft AgilCoop 2007 Primeiro “A HERANÇA MALDITA”

6 Copyleft AgilCoop 2007 “Problema”:Persistência de objetos Em linguagens de programação OO: –Objeto é uma instância de uma classe. Objetos têm estados (os valores de seus atributos). Objetos têm comportamentos (seus métodos). –Modelo de objetos é uma coleção de todas as definições de classes de uma aplicação. –As classes podem representar: Elementos de interfaces do usuário. Recursos do sistema. Eventos da aplicação. Abstrações dos conceitos de negócio. –Nomes significativos para pessoas de negócio não- técnicas.

7 Copyleft AgilCoop 2007 Repositórios para Persistência A persistência precisa armazenar o estado dos objetos em algum repositório para futuramente recuperá-los. Os repositórios podem ser: –Um BD relacional (mais comum). –Arquivos do sistema. –Um BD OO.

8 Copyleft AgilCoop 2007 Técnicas de Persistência A maioria dos projetos de desenvolvimento de software utiliza: –a linguagem OO, tais como Java e C#. –o BD relacional para armazenar dados. O desenvolvimento de aplicações que usam linguagens OO e DB Relacional enfrentam o problema da incompatibilidade conceitual (impedance mismatch).

9 Copyleft AgilCoop 2007 Técnicas de Persistência Para superar este problema é importante conhecer: –O processo de mapeamento objeto-relacional. –Como implementar mapeamento objeto-relacional. – e fundamentalmente como tornar ágil a manutenção do mapeamento!

10 Copyleft AgilCoop 2007 Técnicas de Persistência - Força Bruta Força Bruta (mais comum): –o código SQL é embutido no código-fonte das classes. –Vantagens: permite escrever códigos muito rapidamente viável para pequenas aplicações ou protótipos. –Desvantagens: Alto acoplamento entre as classes de domínio e o esquema do banco de dados. Mudanças simples no BD (por exemplo, renomear uma coluna) resulta na manutenção do código-fonte.

11 Copyleft AgilCoop 2007 Técnicas de Persistência - Força Bruta

12 Copyleft AgilCoop 2007 Técnicas de Persistência – Classes de Dados Classes de Dados: –SQL das classes de domínio são encapsuladas nas “classes de dados”. Exemplos: SP’s no BD representam objetos (substituindo as classes de dados) ActiveX Data Objects (ADO). –Vantagens: Eficiência na execução das funções de inserção e recuperação dos dados. –Desvantagens: Recompilação das classes de dados quando pequenas mudanças são feitas no BD. Recursos humanos consideráveis para implementação SQL.

13 Copyleft AgilCoop 2007 Técnicas de Persistência – Classes de Dados

14 Copyleft AgilCoop 2007 Técnicas de Persistência – Framework Camada de Persistência Robusta (framework): –O framework mapeia objetos para bancos de dados relacionais, de maneira que as pequenas mudanças no esquema relacional não afetem o código orientado a objetos. –Vantagens: Programadores não precisam conhecer nada a respeito do esquema do BD relacional. Permite que a empresa desenvolva aplicações de missão crítica e em larga escala. –Desvantagem: Impacto no desempenho das aplicações.

15 Copyleft AgilCoop 2007 Técnicas de Persistência – Framework

16 Copyleft AgilCoop 2007 Características da camada de Persistência As camadas de persistência devem permitir que desenvolvedores de aplicação se concentrem no que eles sabem fazer melhor: desenvolver aplicações, sem ter a preocupação com o como os seus objetos serão armazenados. Devem, também, permitir que administradores de banco de dados façam o que eles fazem melhor: administrar bancos de dados, sem ter que se preocupar com a introdução acidental de erros nas aplicações existentes.

17 Copyleft AgilCoop 2007 Situação Atual Scott Ambler (Julho 2006): –95.7% consideram dados como bens corporativos (assets) –40.3% possuem bateria de testes para BD –61.9% possuem problemas com dados em produção –18% sem estratégia para corrigí-los –33% estratégia é não deixar ficar pior

18 Copyleft AgilCoop 2007 Disparidades Programadores vs. DBAs ? Metodologias: –Quando projetar? –Práticas de Teste Cultural Generalistas vs. Especialistas

19 Copyleft AgilCoop 2007 Modelagem Evolutiva Modelo evolui com o conhecimento Não precisa acertar (e congelar) da primeira vez Alinhado com os desenvolvedores Integração Contínua Mudança de paradigma Apoio de novas ferramentas

20 Copyleft AgilCoop 2007 Modelagem Evolutiva Ruby on Rails (active record) –Scripts de migração API Ruby/SQL ou SQL Alterações de avanço ( up ) e retrocesso ( down ) Numerados sequencialmente –Tabela para armazenar versão do BD –Tarefa rake para migrar a versão do BD –Gerenciamento de migrações em diferentes ambientes (Desenv. / Teste / Produção)

21 Copyleft AgilCoop 2007 Refatoração de BD “Pequena alteração no BD para melhorar o design, preservando o comportamento e a semântica dos dados” Refatorar o BD é mais difícil que código: –Estrutura do BD –Dados –Código dos sistemas que acessam o BD Dificuldade varia com acoplamento

22 Copyleft AgilCoop 2007 Refatoração de BD Dificuldade varia com acoplamento: –Diversas aplicações –Scripts de extração de dados –Scripts de importação de dados –Frameworks de persistência –Documentação

23 Copyleft AgilCoop 2007 Refatoração de BD Uma aplicação acessando o BD

24 Copyleft AgilCoop 2007 Refatoração de BD Várias aplicações acessando o BD

25 Copyleft AgilCoop 2007 Refatoração de BD Uma refatoração de BD pode exigir um período de transição:

26 Copyleft AgilCoop 2007 Refatoração de BD Exemplo: Renomear Coluna

27 Copyleft AgilCoop 2007 Refatoração de BD O que NÃO é uma refatoração: –Alterar estrutura para estender o modelo –Fazer alterações grandes de uma vez Uma Transformação pode ou não mudar o comportamento Podem ser um passo da Refatoração Exemplo: Introduzir Coluna

28 Copyleft AgilCoop 2007 Refatoração de BD Categorias de Refatoração: –Estruturais –Qualidade de dados –Integridade Referencial –Arquiteturais –Método –Transformações (não são refatorações)

29 Copyleft AgilCoop 2007 Refatoração de BD “Mal cheiros” são sintomas para refatorar –Colunas multi-uso –Tabelas multi-uso –Dados redundantes –Tabelas com muitas colunas –Tabelas com muitas linhas –Colunas “espertas” –Resistência a mudanças

30 Copyleft AgilCoop 2007 Processo de Refatoração de BD 1.Verificar se a refatoração é apropriada –A refatoração faz sentido? –A mudança é necessária agora? –O esforço recompensa? 2.Escolher a refatoração mais apropriada –Os dados podem estar em outro lugar 3.Depreciar o esquema original do BD –Passo opcional –Analisar a necessidade e duração da transição

31 Copyleft AgilCoop 2007 Processo de Refatoração de BD 4.Testar antes, durante e depois –Esquema do BD –Migração de dados –Aplicações que usam o BD 5.Executar as alterações: 1.Modifique o esquema do BD 2.Faça as migrações necessárias 3.Refatore as aplicações externas

32 Copyleft AgilCoop 2007 Processo de Refatoração de BD 6.Executar os testes de regressão 7.Armazenar as alterações no repositório 8.Anunciar a refatoração –Atualizar documentação –“Release Notes” é uma estratégia simples: Associa o número dos scripts da refatoração com a alteração realizada

33 Copyleft AgilCoop 2007 Processo de Implantação 1.Fazer um backup do BD 2.Executar os testes de regressão –Antes, é preciso garantir que tudo está funcionando –Se falhar, pode ser melhor abortar 3.Implantar as alterações nas aplicações 4.Implantar as alterações no BD 5.Executar os testes de regressão

34 Copyleft AgilCoop 2007 Processo de Implantação 6.Desfazer, caso necessário –Falhas sérias nos testes de regressão –Utilize os backups do passo 1 –Desfaça as alterações nas aplicações 7.Anunciar a implantação A refatoração não está completa até a remoção do esquema depreciado

35 Copyleft AgilCoop 2007 Refatoração Estrutural Cuidados: –Evite ciclos em triggers –Triggers podem ser afetados –Views podem ser afetadas –Stored Procedures podem ser afetadas –Outras tabelas podem ser afetadas –Defina o período de transição

36 Copyleft AgilCoop 2007 Exemplo: Mover Coluna

37 Copyleft AgilCoop 2007 Refatoração de Integridade Referencial Exemplo: Introduzir Trigger para Histórico

38 Copyleft AgilCoop 2007 Transformação Exemplo: Introduzir Nova Coluna

39 Copyleft AgilCoop 2007 Conclusões É preciso quebrar barreiras culturais. Aproximar programadores e DBAs. É possível trabalhar de forma evolutiva com banco de dados. Ainda existem poucas ferramentas para a migração de dados. A Refatoração não implica em mudanças drásticas nos modelos de dados.

40 Copyleft AgilCoop 2007 Epitáfio O sucesso de BD Ágéis está fortemente ligado a facilidade de evolução do modelo de dados. A evolução do modelo de dados implica em processos de migração e sincronização de dados. A facilidade da migração dos dados depende do nível de abstração do modelo de dados.

41 Copyleft AgilCoop 2007 Referências Livros: –Scott Ambler e Pramod Sadalage, “Refactoring Databases: Evolutionary Database Design”, Addison-Wesley Professional, 2006 –Scott Ambler, “Agile Database Techniques”, Wiley Publishing, 2003

42 Copyleft AgilCoop 2007 Referências Online: