É comum na área de informática nos depararmos com situações diversas onde o volume de tarefas é muito grande e também com tarefas específicas que possuem um grande volume de trabalho, muitas vezes um trabalho repetitivo e moroso. Em outras situações existe o fantasma assustador da necessidade de mudança de ferramentas durante um processo de desenvolvimento ou manutenção de software.

Muitos dos esforços na engenharia de software se dirigem à construção de ferramentas de apoio às tarefas comuns nessa área, como, modelagem, desenvolvimento, manutenção e documentação. Para aproveitar melhor as funcionalidades oferecidas por essas ferramentas é interessante ter a possibilidade de trocar informações entre elas. Assim, várias ferramentas independentes podem ser usadas em conjunto para formarem um poderoso ambiente de desenvolvimento/manutenção. Também é importante a possibilidade de migrar entre ferramentas diferentes com o mínimo impacto possível, mesmo que seja a migração de uma versão da ferramenta para uma mais atual.

Para conseguir essa troca de informações, foram desenvolvidas várias linguagens comuns que toda ferramenta poderia interpretar. Essas linguagens permitem salvar os dados em uma ferramenta e ler esses mesmos dados dentro de uma outra ferramenta. Uma dessas linguagens, que está ganhando muito apoio, é a XMI (XML Metadata Interchange) definida pela OMG (Object Modeling Group).

Podemos considerar que arquivos XML nada mais são que arquivos de texto formatados com base em um padrão definido, o DTD (Document Type Definitions), mesmo quando usados para compor um poderoso ambiente de desenvolvimento e manutenção. Os arquivos XML podem ser visualizados e manipulados até nos mais simples editores de texto disponíveis, onde podemos nos utilizar de expressões regulares ou então percorrer estes arquivos com simples programas desenvolvidos com Java ou macros.

XMI é um exemplo prático dos benefícios da padronização XML. Adotando XML como uma tecnologia base, as empresas podem dar maior atenção para os seus próprios produtos, dando maior ênfase ao negócio da sua empresa, mesmo que este não seja o desenvolvimento de software, confiando que um canal de comunicação por meio de XML possibilitará a eles conectar-se a processos e obter dados de outras empresas. Padrão XMI XMI é uma especificação XML para representação de modelos criada com o objetivo de permitir a interoperabilidade entre ferramentas de modelagem, repositórios de metadados e outras ferramentas de desenvolvimento.

O XML Metadata Interchange Format – XMI – é uma especificação mantida pelo Object Modeling Group (OMG) e consiste basicamente de um modelo aberto de troca de informações que permite aos desenvolvedores, que trabalham com tecnologia de objetos, a troca de dados de um modo padronizado. Entre outros benefícios, todos ganham em consistência e compatibilidade nas aplicações construídas em ambientes colaborativos. Isto ocorre em muitos projetos Open Source, por exemplo. O XMI foi construído a partir de uma combinação de UML (Unified Modeling Language) usada para descrever o meta modelo, análise e design, XML (eXtensible Markup Language), usado para sintaxe e encoding e MOF (Meta Object Facility) (usado para definições de metadados e gerenciamento).

Por ser um padrão que busca facilitar o intercambio de informações entre diferentes ferramentas, o XMI se torna um mecanismo de suporte a modelos e modelagem a ser utilizada por designers e implementadores.

Um exemplo a ser utilizado para migração de modelos pode ser visto na Figura 1.

Passos na migração de um modelo entre duas ferramentas diferentes
Figura 1. Passos na migração de um modelo entre duas ferramentas diferentes. Ambas devem ter suporte a importação e exportação por XMI.

Nem todas as ferramentas de modelagem gratuitas disponibilizam este recurso, mas a maioria das ferramentas comerciais como o Together e as versões posteriores à versão 2003 do Rational Rose já disponibilizam. No entanto, para o Rational Rose será necessário instalar um add-in para que ele tenha essa opção disponível.

XMI e MOF são fundamentais para as ferramentas IBM voltadas para o desenvolvimento de software. O padrão XMI já esta sendo também utilizado em ferramentas de integração e data warehouses. Até mesmo a Microsoft já se rendeu ao XMI. O componente de exportação de XMI pode exportar um modelo UML desenvolvido com Microsoft® Visio® 2003 para um arquivo XML dentro dos padrões XMI. Os elementos UML suportados incluem a maioria das estruturas estáticas: classes e diagramas.

Aplicações de terceiros podem acessar as propriedades dos elementos UML através da leitura e interpretação dos dados dos arquivos em formato XMI. Pelo fato destes arquivos utilizarem o XML, qualquer aplicação que seja capaz de interpretar um XML pode ser utilizada.

Exemplo prático com um grande modelo de dados

Este exemplo trata da construção de um grande modelo dimensional (ler Nota 1), a ser desenvolvido em um curto espaço de tempo, cerca de três semanas. O principal objetivo era ter o modelo físico pronto no prazo especificado para o início da implementação.

Este modelo possuía aproximadamente 70 tabelas, algumas com até 256 campos. O processo de criação e desenvolvimento do modelo envolveu um analista de dados que registrou na ferramenta de modelagem o que fora definido pelo desenvolvedor. Também participou do processo um DBA, mas de forma bastante restrita. No total foram cerca de 4500 campos em 72 tabelas.

Nota: Modelo Dimensional

Modelos desenvolvidos para suportar Data Warehouses ou Data Marts nos quais as informações são apresentadas como cubos, formados por várias dimensões. Cada dimensão representa uma perspectiva na qual os dados podem ser analisados. Há, em um modelo dimensional, dois tipos de objetos: fatos e dimensões. Os fatos representam as medições numéricas do negócio e as dimensões, representam as descrições das dimensões do negócio. Algumas autoridades no assunto, como Ralph Kimball, defendem a utilização da modelagem dimensional em relação à modelagem de Entidades-Relacionamentos (ER). O argumento é a do destaque às entidades mais importantes e a evidência de onde estão os valores numéricos do negócio e onde estão armazenadas as informações descritivas.

O processo utilizado para isto determina que o modelo de dados seja criado seguindo os padrões de nomenclatura definidos pela empresa, onde é necessário ter cada campo bem documentado e também o modelo lógico correspondente.

O uso de padrões de nomenclatura é fundamental neste processo, pois se cria uma cultura nos usuários deste modelo que posteriormente facilita a identificação da informação, principalmente num modelo dimensional onde vários usuários têm acesso para a criação de seus relatórios.

É importante ressaltar que a documentação de um modelo dimensional não se resume em apenas dizer o que o campo armazena. Também são necessários exemplos de dados que ele pode conter e o detalhamento da existência de relacionamentos em caso de chaves primárias e estrangeiras. Esta documentação deve detalhar a informação, de onde vêm, para onde vai, do que é formada e se é relativa a um período do ano, entre outras.Um modelo dimensional para Data Warehouse normalmente contém uma grande quantidade de indicadores que são responsáveis por dar embasamento para decisões estratégicas. Este modelo deve ter uma documentação adequada e completa, um dicionário de dados que tenha conteúdo significativo. Não devem ser aceitos relatos do tipo “código do produto, gerado automaticamente” para descrever um campo chave. Num modelo dimensional, o mínimo que se espera da documentação de um campo chave seria algo como: “código do produto disponibilizado para comercialização, importado do sistema de CRM por um processo mensal de carga de dados. Este código é gerado automaticamente pelo sistema de faturamento e é formado por código da empresa distribuidora + número sequencial+ ano corrente. Não poderá ser utilizado como identificador único, somente será representativo quando utilizado junto com o identificador da empresa distribuidora. Indica...”.

Num primeiro momento foi criada toda a documentação e também a padronização de nomes, mas o modelo lógico não foi gerado. Para a entrega do trabalho dentro das 3 semanas estipuladas, o modelo lógico também era artefato obrigatório e precisaria ser criado.

Inicialmente, foi feita uma análise para tentar reduzir ao máximo o trabalho manual, tentando automatizá-lo. A informação inicial de como deveria ser o modelo estava em diversas planilhas eletrônicas. Inicialmente, foi necessário um trabalho manual de percorrer todos os dados das planilhas para fazer a atribuição de nomes e complementar a documentação geral dos campos, a dicionarização. Foram 4500 campos revisados, pois cada caso deveria ser analisado individualmente e para algumas situações ajudou o velho e bom buscar/copiar/substituir. Após este trabalho, as planilhas foram importadas para o Microsoft Access, um grande companheiro para estas atividades, e a partir dele foram criadas as consultas que geraram a DDL(Data Definition Language) do modelo final.

A DDL foi carregada na ferramenta usada para a modelagem, o ERWin. Esta ferramenta não disponibiliza suporte para a geração de arquivos XMI na versão utilizada, infelizmente. Após 3 semanas de trabalho, o modelo físico estava pronto, com os devidos relacionamentos criados. A partir deste ponto, o dicionário de dados já poderia ser gerado a partir das consultas criadas na ferramenta Microsoft Access. Faltava ainda o modelo lógico. Não havia o propósito de manipular nenhuma entidade no modelo lógico, mas havia a necessidade de documentá-lo e renomear as entidades e atributos. Mas ainda faltava neste modelo lógico um grande trabalho para atribuir o nome lógico de cada tabela e campo à documentação que estava nas planilhas eletrônicas.

Se feito manualmente, este trabalho levaria mais algumas semanas e não tínhamos este tempo. Após algum tempo de investigação descobrimos que a ferramenta ErWin suportava a geração de arquivos XML, num formato proprietário mas facilmente reconhecido. Procurei logo o DTD do XML gerado e identifiquei que seria possível manipular o XML sem perder a formatação, os diagramas criados e as cores do modelo.

O próximo passo foi identificar as tags do arquivo XML que continham o nome físico e o nome lógico de cada entidade e demais atributos que deveriam ser substituídos ou preenchidos. O XML utilizado neste caso de estudo tinha cerca de 4 Megabytes de informação. Foi extraída uma parte deste arquivo o qual pode ser visualizado na Listagem 1.

23-01-2008pic10.JPG23-01-2008pic11.JPG
Listagem 1. Exemplo de conteúdo de um arquivo XML gerado pela ferramenta ErWin

Em seguida desenvolvemos um programa para a manipulação dos dados. Este programa poderia ter sido feito em qualquer linguagem de programação, mas a escolhida foi Java em função da familiaridade que a equipe possuía com esta linguagem e pelas facilidades que ela disponibiliza na manipulação de arquivos, em especial arquivos XML.

Basicamente, o programa lê o arquivo XML buscando pelas tags que delimitam os trechos a serem substituídos e faz a substituição pelo nome ou conteúdo necessário, o qual estava em um outro arquivo XML gerado a partir da consolidação das planilhas do Microsoft Excel. A partir da manipulação dos dados dos arquivos XML, o trabalho de semanas foi executado em cerca de 3 dias.

O exemplo citado foi apenas uma possível situação de utilização de arquivos XML, mas podemos utilizá-los para diversos outros fins. E com a evolução do padrão XMI, esta utilização tende a crescer ainda mais. Imagine a situação de uma troca de padrão de nomes, ou o caso em que deva ser trocado o tipo de dados de um grande número de campos, este mesmo processo poderia ser utilizado. Importante ressaltar, nem o ERWin nem o Rational Rose possuem recurso para buscar/substituir nomes ou tipo dos dados. E existe um grande número de modelos desenvolvidos nestas ferramentas, principalmente no ERWin.

Um outro recurso muito interessante de arquivos XML é o fato de que ele pode ser visualizado em qualquer editor de textos ou em browsers, os quais até fazem verificações da integridade do arquivo com base no DTD especificado. Além de disponibilizar uma visualização do arquivo amigável conforme mostrado na Figura 2.

Visualização de um arquivo XML por meio de um Browser
Figura 2. Visualização de um arquivo XML por meio de um Browser

Conclusões

Procurei, neste artigo, colocar algumas sugestões de como podemos agilizar a execução diária de tarefas que normalmente exigiriam um trabalho muito mais mecânico. Este ganho de tempo é conseguido com a manipulação de arquivos XML que podem ser gerados pelas ferramentas encontradas atualmente no mercado. Este artigo procurou mostrar uma abordagem inovadora para problemas de manipulação de grandes volumes de dados: se você se deparar com uma situação onde a tarefa seja altamente mecânica, mantenha a calma, e com calma, identifique as opções disponíveis para automatizar a tarefa. Este tempo para pesquisas normalmente permitirá que o trabalho seja feito em menos tempo e com um menor número de erros.

Outra utilização interessante para este padrão é a possibilidade de mudar ou atualizar as ferramentas de modelagem na sua empresa com o mínimo de impacto. Modelos podem ser facilmente convertidos para o padrão XMI e em seguida podem ser importados pela nova ferramenta. Existem até mesmo algumas ferramentas que fazem a transformação de modelos em formato XMI, modelos estes criados em ferramentas que não disponibilizam essa opção XMI.