Utilizado há décadas, o termo CASE – Computer Aided Software Engineering – aplica-se a ferramentas que, literalmente, “auxiliam” o processo de desenvolvimento de software. Compiladores, editores estruturados, sistemas de controle de código fonte e ferramentas de modelagem são alguns exemplos. Em qualquer caso, o objetivo principal é permitir que o desenvolvedor trabalhe em um nível de abstração mais elevado, eliminando a preocupação com detalhes intrínsecos do ambiente de desenvolvimento.

Nos últimos anos, as ferramentas CASE têm evoluído em direções diferentes, abrangendo desde a especificação de sistemas até a geração automática de código fonte. A geração de ferramentas CASE é composta por softwares complexos que auxiliam equipes de desenvolvimento a projetar sistemas da mesma forma que arquitetos e engenheiros projetariam um edifício.

Neste artigo discutiremos como uma ferramenta de modelagem de dados de última geração torna-se imprescindível durante o projeto das fundações (as estruturas de dados) de grandes “arranha-céus” de software.

Para ilustrar os benefícios da boa modelagem através da ferramenta CASE, apresentaremos um produto desenvolvido pela Embarcadero Technologies. O ER/ Studio é uma ferramenta CASE focada em modelagem de dados, projetada para atender às necessidades de analistas de sistemas, administradores de dados, DBAs, desenvolvedores de aplicações, gerentes de negócios e gerentes de TI.

Uma versão de avaliação do Embarcadero ER/Studio pode ser obtida clicando aqui.

Modelando dados através de uma ferramenta CASE

Podemos definir um modelo como uma representação (frequentemente gráfica) dos componentes de um projeto, refinados e esclarecidos através de definições textuais.

Um modelo de dados é uma especificação das estruturas de dados e regras de negócio que representam os requisitos de um sistema de informações. Um modelo de dados ideal procura equilibrar as necessidades do negócio com as características específicas do banco de dados escolhido para a implementação do sistema.

O benefício mais óbvio de uma ferramenta CASE de modelagem de dados é a facilidade com que se produz um diagrama a partir dos esforços de modelagem e com que se gera um banco de dados a partir do modelo.

Outro benefício é a possibilidade de documentar o sistema que está sendo modelado. Recursos de documentação e disponibilização de informações garantem que os profissionais envolvidos no desenvolvimento do software comuniquem-se entre si e com os usuários finais. Sofisticados relatórios HTML permitem a publicação de figuras e informações sobre os modelos em intranets e web sites. A Figura 1 mostra um exemplo construído na ferramenta Embarcadero ER/Studio.

Exemplo de relatório HTML gerado no Embarcadero ER/Studio
Figura 1. Exemplo de relatório HTML gerado no Embarcadero ER/Studio

Além de interfaces amigáveis, a ferramenta deve possuir recursos gráficos que facilitem a visualização e a navegação em modelos complexos. Diferentes opções de layout, tecnologia drag-and-drop (arrastar e soltar sobre o diagrama) e localização rápida de objetos são fundamentais para garantir a “explorabilidade” do modelo. Editores de propriedades simplificam o acesso às características de cada objeto, bem

como a padronização e o reuso de objetos em outros modelos. Domínios, datatypes, valores default e regras de validação podem ser definidos, compartilhados e alterados

globalmente. A Figura 2 ilustra alguns recursos gráficos. Uma visualização dos objetos do modelo em formato de árvore está disponível através do Data Model Explorer (Figura 3).

Recursos gráficos do Embarcadero ER/Studio
Figura 2. Recursos gráficos do Embarcadero ER/Studio
Embarcadero ER/Studio Data Model Explorer
Figura 3. Embarcadero ER/Studio Data Model Explorer

Através do Embarcadero ER/Studio também é possível modelar estruturas dimensionais (star schemas) para data warehouses, data marts e sistemas OLAP. A ferramenta também suporta a importação e exportação de metadados entre ferramentas de BI (business intelligence).

Uma ferramenta CASE de modelagem de dados pode alavancar os investimentos feitos em aplicações de bancos de dados, suportando o processo iterativo inerente ao ciclo de vida das aplicações. Através de recursos como engenharia reversa, geração de scripts SQL e sincronização entre modelo e banco, ela pode ajudar a controlar, documentar e efetivar mudanças nos bancos de dados da organização.

Quer você esteja modelando conceitos de negócio, começando um novo projeto de banco de dados ou fazendo alterações em um banco já existente, uma ferramenta CASE pode auxiliá-lo a obter resultados em menos tempo e com mais qualidade.

Modelando em camadas

Ferramentas CASE permitem a criação e manutenção de diversas camadas de modelagem, facilitando a integração entre os diversos profissionais envolvidos no desenvolvimento de software: analistas de sistemas, administradores de dados, DBAs, desenvolvedores de aplicações e gerentes.

O Embarcadero ER/Studio é uma ferramenta voltada para o projeto lógico, o projeto físico, a criação e a manutenção de bancos de dados, suportando as três principais notações de modelagem da indústria de software: IDEF1X, Information Engineering (IE ou “pé de galinha”) e Filtered IE (que esconde as chaves estrangeiras). Através dela, é possível criar vários níveis de sub-modelos para isolar e gerenciar estruturas de dados específicas. Pode-se dividir o modelo em “assuntos” e, dessa forma, lidar com a complexidade do projeto.

Por outro lado, é possível criar um modelo lógico e, a partir dele, gerar diferentes modelos físicos para uma ou mais plataformas de bancos de dados. Os modelos podem ser criados para representar etapas do ciclo de vida do projeto (concepção, desenvolvimento, homologação, produção, etc.) ou diferentes implementações físicas.

A ferramenta mantém links entre as diversas camadas e permite que quaisquer alterações sejam propagadas entre os modelos, em qualquer direção. Também é possível visualizar mapeamentos entre objetos lógicos e físicos, bem como rastrear conceitos de negócio através da estrutura de modelos e sub-modelos.

Os modelos físicos podem ser denormalizados (para otimizar a performance, por exemplo) e as transformações documentadas, como uma forma de registrar as decisões que afetam cada camada do projeto.

A automação de transformações facilita a derivação de modelos físicos a partir do modelo lógico. Durante este processo, a ferramenta checa a denormalização e faz validações de sintaxe para a plataforma escolhida. Padrões de nomenclatura e parâmetros de armazenamento físico podem ser especificados, preparando a futura implementação.

Uma variedade de estratégias automáticas de denormalização está disponível, como particionamentos horizontais e verticais, mapeamento de colunas, roll-up e roll-down de tabelas, etc. A ferramenta mantém os links entre os objetos lógicos e os objetos físicos denormalizados, garantindo a integridade entre as diferentes camadas de modelagem.

Criando e mantendo bancos de dados

Se você precisa iniciar a modelagem a partir de um banco de dados já existente, a ferramenta CASE oferece o recurso da engenharia reversa. Você pode extrair objetos seletivamente de um banco de dados e construir um modelo a partir deles. É possível, então, documentar as tabelas, colunas e outros objetos do modelo, fazer alterações e, posteriormente, implementar o modelo em outra plataforma.

A engenharia forward ou “engenharia direta” permite que um banco de dados completo seja gerado a partir do modelo. Através da ferramenta CASE, é possível gerar automaticamente um código SQL parcial ou total, conectar-se ao banco e gerar as estruturas de dados fisicamente. A ferramenta assegura que os diferentes tipos de objetos sejam criados na seqüência correta, respeitando a integridade referencial implícita no modelo. A Figura 4 mostra a seleção de objetos para uma engenharia forward utilizando o Embarcadero ER/Studio.

Engenharia forward
Figura 4. Engenharia forward

Uma funcionalidade chave é a sincronização entre modelo e banco de dados. Através de recursos de comparação e exportação de diferenças, a ferramenta emprega uma estratégia de alteração inteligente, preservando os dados, os privilégios e as dependências existentes no banco de dados. Também é possível importar diferenças do banco para o modelo.

O Embarcadero ER/Studio estende a funcionalidade de sincronismo à possibilidade de comparar e “fundir” modelos (Figura 5). O usuário da ferramenta dispõe de várias

opções de comparação, visualização e resolução de discrepâncias entre modelos lógicos e físicos.

Embarcadero ER/Studio Compare and Merge Utility
Figura 5. Embarcadero ER/Studio Compare and Merge Utility

Também podem ser gerados scripts SQL com as diferenças entre banco e modelo. Isto é importante em ambientes em que, por motivos de segurança, não é permitido implementar alterações diretamente nos bancos de dados.

Tutorial

A seguir, apresentaremos um breve tutorial do Embarcadero ER/Studio, abordando funcionalidades como engenharia reversa, alteração de objetos do modelo e engenharia forward para outra plataforma.

Iniciaremos a criação de um modelo novo a partir de uma engenharia reversa, como visto na Figura 6. A partir do menu File, clica-se em New e seleciona-se a opção Reverseengineer an existing database.

Opções de criação de um novo modelo
Figura 6. Opções de criação de um novo modelo

Em seguida, devemos escolher como será o acesso ao banco de dados. Existem opções de conexões “nativas” com os principais bancos de dados, além da conexão com outros bancos via ODBC (Figura 7). Neste tutorial, selecionaremos o banco MS SQL Server. A idéia é fazer uma engenharia reversa de alguns objetos do banco de dados de exemplo Northwind.

Escolhendo o banco de dados para a engenharia reversa
Figura 7. Escolhendo o banco de dados para a engenharia reversa

Para conectar-se ao banco, é preciso informar o servidor (datasource), um usuário e a senha. Após o clique em Next, a ferramenta tentará se conectar ao banco escolhido. Naturalmente, o servidor mencionado precisa estar ativo (Figura 8).

Conectando-se ao banco de dados
Figura 8. Conectando-se ao banco de dados

Uma vez estabelecida a conexão, é preciso selecionar o banco de dados para a engenharia reversa. O Embarcadero ER/Studio mostra uma lista dos bancos criados e permite que selecionemos um banco da lista (Figura 9).

Seleção do banco de dados para a engenharia reversa
Figura 9. Seleção do banco de dados para a engenharia reversa

Também é possível selecionar o owner e os tipos de objetos para a engenharia reversa. Neste exemplo, selecionaremos o usuário dbo e os objetos user tables e procs/funcs (Figura 10).

Selecionando o owner dbo
Figura 10. Selecionando o owner dbo

Note que o wizard da engenharia reversa é intuitivo, bastando selecionar as opções apresentadas e clicar OK ou Next para visualizar o próximo passo. O botão Finish é habilitado para acelerar o processo, pulando passos intermediários através de configurações default.

Um diferencial interessante do Embarcadero ER/Studio em relação a outras ferramentas é a possibilidade de fazer uma engenharia reversa de objetos específicos do banco de dados. Em nosso exemplo, selecionaremos apenas as tabelas CustomerCustomerDemo, CustomerDemographics, Customers, Region (Figura 11) e a stored procedure CustOrderHist (Figura 12).

Selecionando tabelas específicas
Figura 11. Selecionando tabelas específicas
Selecionando uma stored procedure específica
Figura 12. Selecionando uma stored procedure específica

O próximo passo do wizard da engenharia reversa é configurar as opções de inferência de integridade referencial e de layout inicial do modelo de dados. Chaves

primárias e estrangeiras podem ser inferidas a partir de índices, por exemplo. Além disso, o ER/Studio implementa cinco tipos diferentes de auto-layout (circular,

hierárquico, ortogonal, simétrico e árvore), facilitando o trabalho de organização dos objetos do diagrama logo após a engenharia reversa. Utilizaremos as opções

default (Figura 13).

Selecionando as opções de inferência e layout
Figura 13. Selecionando as opções de inferência e layout

Por último, é mostrada uma tela com um resumo dos objetos escolhidos. Também é possível especificar a notação (relacional ou dimensional) do modelo físico que será gerado. As opções escolhidas ao longo do wizard podem ser salvas em um arquivo de configuração e recuperadas em futuras engenharias reversas (Figura 14).

Último passo da engenharia reversa
Figura 14. Último passo da engenharia reversa

Após clicarmos em Finish, a ferramenta começa a acessar o MS SQL Server e “montar” o modelo de dados parcial do Northwind. Durante a engenharia reversa, é mostrada uma mensagem de alerta: algumas tabelas referenciadas pela procedure que escolhemos não foram incluídas na lista de objetos selecionados. A ferramenta reconhece o problema e avisa que vai incluir as dependências que faltam no modelo

que será gerado (Figura 15).

Garantindo a integridade da engenharia reversa
Figura 15. Garantindo a integridade da engenharia reversa

Após o término da engenharia reversa, é mostrado um resumo dos objetos extraídos e importados para o modelo. Note que as tabelas Order Details, Order e Products foram incluídas para preservar a integridade com a procedure CustOrderHist (Figura 16).

Resumo da engenharia reversa
Figura 16. Resumo da engenharia reversa

Uma vez gerado o modelo, é possível acessar os detalhes de todos os objetos: entidades/tabelas, atributos/colunas, relacionamentos, chaves, procedures, etc. Pode-se, por exemplo, documentar a definição de uma entidade ou acrescentar uma nova coluna a uma tabela. A janela Overview (canto superior direito) mostra uma visão do modelo inteiro e da área selecionada para a visualização do diagrama (Figura 17).

Documentando entidades
Figura 17. Documentando entidades

Note que a ferramenta cria automaticamente um modelo lógico e um modelo físico e que os objetos podem ser acessados a partir do Data Model Explorer (à esquerda).

Objetos físicos como stored procedures podem ser visualizados no diagrama. As dependências entre procedures e tabelas podem ser visualizadas através da opção Display Schema Object Relationships da caixa de diálogo Diagram and Object Display Options (acessada através do clique com o botão direito em uma área em branco do diagrama) (Figura 18).

Visualizando procedures no diagrama
Figura 18. Visualizando procedures no diagrama

O código da stored procedure também pode ser acessado e o Embarcadero ER/Studio valida a sintaxe após eventuais alterações. Em nosso exemplo, forçamos um erro apagando o “s” da tabela Products no código da procedure (Figura 19).

Validando a sintaxe de procedures
Figura 19. Validando a sintaxe de procedures

Digamos que, agora, precisamos gerar o modelo parcial do Northwind em outra plataforma, por exemplo, em um banco de dados Oracle 10g. O processo de engenharia forward é iniciado a partir do modelo lógico, clicando-se com o botão

direito sobre o modelo no Data Model Explorer e selecionando-se Generate Physical Model (Figura 20).

Iniciando a geração de um modelo físico
Figura 20. Iniciando a geração de um modelo físico

Após escolher um nome para o novo modelo físico e o tipo de notação (relacional ou dimensional), seleciona-se o banco de dados (Figura 21).

Selecionando a plataforma de banco de dados do modelo físico
Figura 21. Selecionando a plataforma de banco de dados do modelo físico

Entre vários conjuntos de opções para a geração do modelo físico, a ferramenta permite a seleção das entidades a serem incluídas (Figura 22) e a execução de algumas validações, como a checagem de integridade de índices (Figura 23).

Selecionando objetos para a engenharia forward
Figura 22. Selecionando objetos para a engenharia forward
Selecionando validações para a engenharia forward
Figura 23. Selecionando validações para a engenharia forward

Uma vez finalizado o processo de geração do modelo físico, pode-se distinguir o novo modelo dentro da árvore do Data Model Explorer.

Note que podemos ter vários modelos físicos criados para o mesmo modelo lógico. Isto torna possível a implementação do conceito de arquitetura de camadas dentro de um único arquivo. Pode-se, por exemplo, gerar modelos físicos independentes para espelhar os ambientes de desenvolvimento, homologação e produção, alterá-los separadamente e sincronizá-los através da funcionalidade de Compare and Merge Utility. Em nosso exemplo, o conceito de camadas foi utilizado para representar diferentes implementações físicas. Note que o Data Model Explorer mostra objetos físicos diferentes para os modelos Northwind_Parcial_SQL e Northwind_Parcial_Oracle, de acordo com a plataforma em que são implementados. Através dos editores da ferramenta, podem ser acessadas as diversas propriedades físicas e inclusive a DDL de cada tabela (Figuras 24 e 25).

Editando propriedades de storage
Figura 24. Editando propriedades de storage
Acessando o DDL de uma tabela
Figura 25. Acessando o DDL de uma tabela

Finalizando o tutorial, faremos a geração do script para o modelo Northwind_Parcial_Oracle. Clicando-se com o botão direito no modelo dentro do Data Model Explorer, basta selecionar a opção Generate Database (Figura 26).

Iniciando a geração do banco de dados a partir do modelo
Figura 26. Iniciando a geração do banco de dados a partir do modelo

Segue-se, então, um wizard de três passos cujo produto final é um script SQL para implementar o modelo no Oracle 10g (Figura 27). Opcionalmente, é possível conectar-se ao banco de dados e gerar o modelo diretamente no banco.

Geração do script DDL
Figura 27. Geração do script DDL

Modelando em workgroup

Através da utilização de um “repositório” de modelos, é possível estender as funcionalidades da ferramenta CASE a ambientes de workgroup. O Embarcadero ER/Studio Repository (Figura 28) foi projetado para permitir o acesso concorrente

a modelos de dados, implementar perfis de segurança e gerenciar versões. O trabalho colaborativo reforça a adoção de padrões, facilita o compartilhamento de objetos e aumenta a produtividade dos membros da equipe. Futuramente, apresentaremos um tutorial sobre o ER/Studio Repository.

Embarcadero ER/Studio Repository
Figura 28. Embarcadero ER/Studio Repository

Conclusões

Uma ferramenta CASE de modelagem de dados pode trazer inúmeros benefícios ao processo de desenvolvimento de software. Analistas de sistemas e administradores de dados podem se beneficiar de funcionalidades poderosas de modelagem lógica, incluindo a padronização e a reutilização de elementos de dados. DBAs tornam-se mais produtivos, usufruindo do suporte robusto a diversas plataformas de bancos de dados. Geração automática de código SQL, engenharia reversa e sincronismo entre banco e modelo permitem que o DBA aumente o foco na qualidade da modelagem física.

Desenvolvedores de aplicações tiram proveito das capacidades de análise de impacto e da colaboração bidirecional com ferramentas de UML (integração entre modelos de dados e modelos de classes). Por exemplo, o Embarcadero ER/Studio integra-se totalmente ao produto Embarcadero Describe, que suporta a UML 2.0. Por sua vez, gerentes de negócio e de TI beneficiam-se com as facilidades para geração de relatórios, reforço de padrões e disseminação de documentação sobre os dados. Também é óbvio que, se os modelos de dados não forem bem construídos, as aplicações não trarão os resultados esperados.

Naturalmente, a definição clara de um processo de Administração de Dados é fundamental para extrair o máximo da ferramenta CASE. Modelar dados sem definir critérios e responsabilidades é como disparar flechas a esmo, tentando adivinhar o alvo. A qualidade do software será sempre proporcional à qualidade do processo de modelagem.

Confira também