ESS-Model. obtenha diagramas de classes por meio de engenharia reversa

Autor: Cristiano Caetano

 

Diagrama de classes

Hoje, estamos vivendo uma revolução nas áreas relacionadas ao desenvolvimento de software. Esta revolução está acontecendo em virtude do advento do amadurecimento da pesquisa e das técnicas relacionadas à Engenharia de Software. Há muito tempo, a única preocupação das empresas era concluir o software dentro dos prazos estabelecidos (ou dentro dos limites aceitáveis). Contudo, muitas empresas estão utilizando diversas técnicas oferecidas pela Engenharia de Software para auxiliar a concepção e, sobretudo, na construção de softwares com índices maiores de qualidade e produtividade.

A UML - Unified Modeling Language - é uma notação padronizada para a especificação e modelagem de softwares orientados a objeto amplamente aceita pelo mercado.

Fundamentalmente, a UML oferece um conjunto de diagramas cujo objetivo é representar graficamente os diversos elementos de um software orientado a objetos. Aqui, interessa-nos particularmente um deles: o Diagrama de Classes.

O diagrama de classes tem a finalidade de especificar o esqueleto de um sistema orientado a objetos. Neste diagrama são apresentadas as classes e os seus respectivos relacionamentos: Associação, Agregação, Composição, Generalização e Especialização. No entanto, ao contrário do que possa parecer, você poderá obter facilmente diagramas de classes a partir dos arquivos-fonte do seu projeto Delphi.

ESS-Model: Engenharia reversa

Para realizar tal tarefa, você deverá utilizar o ESS-Model - ferramenta Open Source escrita em Delphi 6 -, cujo objetivo principal é obter diagramas de classes por meio de engenharia reversa a partir dos arquivos-fonte. Convém lembrar, aliás, que o ESS-Model faz engenharia reversa de arquivos-fonte das plataformas Delphi, Kylix (*.dpr, *.pas) e Java (*.class, *.java). Você poderá fazer o download desta ferramenta no seguinte endereço: http://www.essmodel.com. A propósito, por se tratar de uma ferramenta extremamente simples, o ESS-Model não precisará ser instalado. Você deverá descompactar o arquivo em qualquer pasta e pronto!; a ferramenta estará disponível para o uso.

Nessa condição, tendo como ponto de partida uma suposta classe chamada TPessoa e duas outras classes especializadas TPessoaFisica e TPessoaJuridica, vamos analisar, por meio de exemplos práticos, as principais funcionalidades dessa ferramenta. A Figura 1 apresenta um diagrama de classes com a representação do relacionamento de especialização (Herança) entre as classes citadas anteriormente. Note que você poderá selecionar quais atributos ou operações serão exibidos conforme o tipo de visibilidade (Filter).

Figura 1 - Diagrama de classes

Recursos visuais

O ESS-Model utiliza alguns recursos visuais a fim de facilitar a leitura e o entendimento dos diagramas de classes, como pode ser visto na Tabela 1. Além disso, você poderá visualizar e navegar entre os packages e classes de um projeto, através de uma árvore hierárquica.

Tabela 1 - Significado dos recursos visuais

Você poderá obter o diagrama de classes de uma unit isoladamente ou, ainda, um projeto inteiro. Entretanto, quando um projeto é muito grande, em boa parte das vezes o ESS-Model não importará todas as classes de maneira organizada, dificultando a visualização. Por outro lado, você poderá reorganizar as classes utilizando um recurso chamado Layout. O Layout realiza a reorganização das classes de um diagrama automaticamente, como pode ser visto na Figura 2.

Figura 2 - Layout: reorganização das classes

Intercâmbio com outros aplicativos

É preciso lembrar que o propósito do ESS-Model é a obtenção de diagramas de classes por meio de engenharia reversa, a partir dos arquivos-fonte de um projeto sem, contudo, oferecer recursos para a manipulação desses diagramas (exceto visual). Nessa condição, para contornar esse problema, você poderá exportar o diagrama para a área de transferência e manipulá-lo em algum documento ou relatório; se for necessário, você também poderá salvar o diagrama como um arquivo no formato PNG ou WMF. Em ambos os casos, os diagramas exportados são meras imagens estáticas. Entretanto, você poderá exportar os diagramas de classes para um arquivo XML no formato XMI (Metadata Interchange), como mostra a Listagem 1. Basicamente, o arquivo XMI contém informações sobre as classes e os seus relacionamentos, exceto as suas representações gráficas. Segundo orientações encontradas no manual do ESS-Model, esse arquivo deverá ser importado pelo ArgoUml - ferramenta Open Source para projetar sistemas utilizando a notação UML. Maiores informações sobre o ArgoUml poderão ser obtidas no seguinte endereço: http://argouml.tigris.org/.

<?xml version=”1.0" encoding=”UTF-8"?>
<XMI xmi.version=”1.0">
<XMI.header>
<XMI.documentation>
<XMI.exporter>Eldean ESS-Model</XMI.exporter>
<XMI.exporterVersion>2.2</XMI.exporterVersion>
</XMI.documentation>
<XMI.metamodel xmi.name=”UML” xmi.version=”1.3"/>
</XMI.header>
<XMI.content>

Listagem 1. Trecho de um arquivo XMI

Relatórios em HTML

Assim como as principais ferramentas disponíveis no mercado, o ESS-Model também realiza a exportação dos seus diagramas para um relatório padronizado no formato HTML. Os relatórios são extremamente sofisticados e profissionais; as classes são apresentadas hierarquicamente com base nos seus tipos de relacionamento. Você poderá navegar de maneira intuitiva entre as classes, visualizando os seus atributos e operações, conforme apresentado na Figura 3.

Figura 3 - Exemplo de relatório em HTML

Entretanto, para utilizar esse recurso, torna-se necessária a instalação do parser XML da Microsoft, versão 4.0 ou superior. Normalmente, essa biblioteca é instalada junto com o Internet Explorer 5.0 ou superior, contudo, você poderá fazer o download dessa biblioteca no seguinte endereço: http://msdn.microsoft.com/library/default.asp?url=/downloads/
list/xmlgeneral.asp
.

Linha de comando

Você também poderá utilizar o ESS-Model na linha de comando ou, se for necessário, executá-lo diretamente a partir da sua aplicação. Para tal tarefa, basta observar atentamente a sintaxe apresentada abaixo:

essmodel.exe [opções] [@lista-arquivos] [arquivo]

Onde:

[opções]: são as opções globais aceitas pelo ESS-Model (veja a Tabela 2);
[@lista-arquivos]: aponta para um arquivo contendo a listagem dos arquivos que serão lidos pelo ESS-Model;
[arquivo]: aponta para o arquivo que será lido pelo ESS-Model;

Tabela 2 - Opções globais do ESS-Model

Integração com o Windows e o Delphi

Um outro recurso interessante fornecido pelo ESS-Model, é a integração nativa com o Windows Explorer e a IDE do Delphi. Como indicado na Figura 4, você poderá configurar o ESS-Model para inserir no menu de contexto do Windows Explorer ou do menu Tools da IDE do Delphi uma nova opção com o propósito de obter o diagrama de classes da unit ou do projeto que você estiver trabalhando (Figura 5).

Figura 4 - Configurando o ESS-Model

Figura 5 - Integração com o Windows Explorer e a IDE do Delphi

Conclusão

Observamos, assim, que o ESS-Model é, em virtude da sua proposta simples, uma ferramenta extremamente poderosa e flexível para obtenção de diagramas de classes (UML standard). Os seus recursos são objetivos e práticos, sem, contudo, abrir mão do uso de algumas idéias sofisticadas (relatórios em HTML e integração com o Windows Explorer e a IDE do Delphi).