| 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).
cristiano@ciasoft.net

|