Do que se trata o artigo:

O artigo aborda os principais conceitos e práticas de refatoração em banco de dados, bem como detalha o uso das técnicas disponíveis e faz análises sobre o uso das refatorações e sua pragmática para os desenvolvedores. É demonstrado o uso da ferramenta Liquibase que aplica os conceitos de refatoração em banco de dados.


Para que serve:

O artigo ajuda o leitor a entender os conceitos e a viabilidade da aplicação das técnicas no cotidiano das equipes de desenvolvimento, e como isso se faz cada vez mais necessário devido ao fato de que softwares têm sua vida útil relativamente minimizada devido aos problemas criados durante seu desenvolvimento.

Em que situação o tema é útil:

O tema será útil no desenvolvimento e manutenção de bancos de dados durante o ciclo de desenvolvimento de um software.
Autores: Marcos Alexandre Miguel e Marco Antônio Pereira Araújo

Devido aos problemas causados pela constante manutenção sem a devida compreensão de softwares, a sua vida útil tende a ser minimizada. Essas manutenções em curto prazo, geralmente, são complexas e precisam de embasamentos técnicos que minimizem o impacto e aumentem a qualidade dos softwares. Os dados em um banco de dados são um recurso importante e por isso todo o esforço requerido para validar e qualificar eficazmente os dados é válido. Devido a isso, técnicas de Refatoração em Banco de Dados podem auxiliar as equipes de desenvolvimento nesse processo.

Refatorações em Banco de Dados são pequenas alterações nos esquemas de bancos de dados melhorando seu projeto, preservando o comportamento e a semântica dos dados. O processo de refatoração aprimora os esquemas de banco de dados, dando suporte ao desenvolvimento evolucionário do software e ajudando a reparar problemas existentes no projeto de banco de dados.

Este artigo tem como objetivo apresentar técnicas de refatoração de banco de dados, dando enfoque ao detalhamento das técnicas e sua aplicação aos bancos de dados e como podem ser usados no cotidiano do desenvolvedor para facilitar o processo de manutenção dos sistemas de software.

Scott W. Ambler criou um catálogo que detalha 70 refatorações de banco de dados que são apresentados em http://www.agiledata.org/essays/databaseRefactoring.html, e são uma fonte valiosa na pesquisa e aprofundamento das técnicas atualmente disponíveis.

As técnicas listadas por Ambler são divididas em categorias como: Estruturais, Qualidade de Dados, Integridade Referencial, Arquiteturais, Método e Transformações.

Todas essas categorias mencionadas apresentam problemas que precisam ser explorados e corrigidos para a melhoria de um projeto de software. Entre os problemas Estruturais, podem-se citar nomes não representativos para a coluna que os define e associação de colunas que precisam transformar-se em outra tabela. Na Qualidade de Dados, pode-se citar como um problema a ser corrigido a verificação da integridade dos esquemas de dados na deleção ou inserção de uma constraint. A verificação de uma Integridade Referencial aponta para um problema que acontece naturalmente ao introduzir uma nova trigger para atualizar o valor contido em uma coluna calculada. Uma refatoração Arquitetural preocupa-se com os programas externos que interagem com o banco de dados e como esses reagem às mudanças de dados. Uma refatoração na categoria Métodos provê uma mudança que melhore a qualidade de um procedimento armazenado, de uma função armazenada, ou de uma trigger, melhorando assim o projeto de banco de dados sem mudar sua semântica. Uma refatoração na categoria Transformação preocupa-se com mudanças que afetem a semântica do esquema do banco de dados ao se adicionar novos elementos a ela ou ao modificar elementos existentes.

Refatorar um banco de dados é mais difícil que refatorar o código fonte, devido a problemas estruturais do banco de dados, os próprios dados existentes no banco e o código fonte dos softwares que acessam esse banco podem estar preparados para ler uma determinada estrutura pré-definida. Quanto maior for o acoplamento entre o banco de dados e o software, scripts, frameworks, entre outros, mais complexas se tornam as mudanças no mesmo.

Existem “Maus cheiros” nos bancos de dados que são sintomas para a utilização das técnicas de refatoração. Como exemplo, pode-se citar colunas com multiuso, tabelas com multiuso, dados redundantes, tabelas com muitas colunas e tabelas com muitas linhas. A aplicação de técnicas pontuais e bem definidas nesses sintomas identificados pode fazer com que o banco de dados tenha qualidade e clareza, colaborando assim para que o mesmo se torne manutenível ao longo de seu ciclo de vida.

Vantagens e Desvantagens

Ao se aplicar a refatoração em banco de dados, deve-se conhecer bem essa técnica e os benefícios alcançados com sua utilização, para que a mesma possa produzir realmente resultados satisfatórios.

A refatoração acaba trazendo outros benefícios, que podem ser considerados indiretos, por que derivam da busca por um banco de dados mais fácil de entender e modificar.

Em projetos concluídos, a refatoração pode ser vantajosa por melhorar de forma significativa um projeto mal elaborado. Ou seja, ao refatorar o banco de dados continuamente, é possível corrigir problemas graves, caso existam, que podem se tornar evidentes à medida que se aplicam as refatorações. Além desse benefício, a refatoração pode impedir que o projeto se deteriore com as possíveis alterações que tendem a ocorrer ao longo do tempo.

Pode-se notar que quanto pior estiver o projeto, maior a quantidade de refatorações necessárias para torná-lo fácil de entender e modificar. Ou seja, um projeto bem feito traz benefícios, mas mesmo nos casos em que o projeto é ruim, refatorar continuamente permite detectar e corrigir muitos dos problemas presentes.

...
Quer ler esse conteúdo completo? Tenha acesso completo