O Qualiti Coder [Cod05] ´e um gerador de c´odigo produzido pela Qualiti, empresa pernambu- cana, sediada no Porto Digital. A ferramenta possui licen¸ca comercial e ´e distribu´ıda na forma de um plug-in para IDEs, entre eles Eclipse [Ecl05a] e JBuilder [JBu05].
O Qualiti Coder, diferentemente do iQgen e do e-Gen, funciona como um wizard integrado ao ambiente de desenvolvimento. Esta caracter´ıstica torna simples a sua utiliza¸c˜ao.
A vers˜ao de demonstra¸c˜ao utilizada para avalia¸c˜ao possui alguns wizards para gera¸c˜ao de classes com diversos padr˜oes de c´odigo como “Adapter”, “EJB Data Collection”, “JDBC Data Collection”, “Singleton”.
Como entrada no sistema s˜ao aceitas apenas arquivos de classes Java e C#, que s˜ao as ´unicas linguagens para as quais o Qualiti Coder produz c´odigo. O c´odigo ´e transformado atrav´es do JaTS [COS+01].
O ambiente ´e bem documentado e possui funcionalidades para realizar refactoring, auditoria de c´odigo e coletar m´etricas.
A cria¸c˜ao de wizards s´o pode ser realizada pela fabricante por demanda.
3.5.1 Pontos Relevantes
N˜ao se teve acesso ao c´odigo fonte dos wizards, fato este que, infelizmente, impossibilitou uma avalia¸c˜ao mais criteriosa do gerador.
A Tabela 3.5 apresenta os pontos relevantes ao uso do Qualiti Coder. 3.6 Conclus˜oes
Este cap´ıtulo apresentou os principais ambientes geradores de c´odigo com enfoque na gera¸c˜ao de c´odigo Java. Foram analisadas, de acordo com a sua relevˆancia ao tema, ferramentas open-
3.6 CONCLUS ˜OES 43
Caracter´ıstica N´ıvel Observa¸c˜oes
Licen¸ca Comercial -
Extensibilidade Baixa Wizards criados apenas sob demanda pelo fabricante
Usabilidade M´edia Utilizado apenas como plug-in de IDE
GUI Sim Em forma de wizards na IDE
Input Classes Java e C#
Output Limitado Apenas para Java e C#
Modelos N˜ao
Abstra¸c˜ao Baixa Apenas no n´ıvel de implementa¸c˜ao
MDA N˜ao -
Tabela 3.5 Pontos relevantes ao uso do Qualiti Coder
source (XDoclet e AndroMDA) e ferramentas comerciais (iQgen, e-Gen e Qualiti Coder), dentro
de um vasto conjunto de ferramentas dispon´ıveis.
A tabela 3.6 apresenta um resumo com as principais caracter´ısticas dos ambientes analisados.
XDoclet AndroMDA iQgen e-Gen Coder
Open-source sim sim n˜ao n˜ao n˜ao
Extensibilidade alta alta alta alta baixa
Usabilidade alta alta alta alta baixa
GUI n˜ao n˜ao sim sim sim
Input Java xmi xmi xml Java
Output v´arios v´arios v´arios v´arios java
Modelos n˜ao UML e ER UML UML n˜ao
Abstra¸c˜ao baixa alta alta alta baixa
MDA n˜ao sim sim sim n˜ao
Tabela 3.6 Principais caracter´ısticas dos ambientes analisados
Enquanto o XDoclet ´e uma ferramenta que pode ser facilmente utilizada por desenvolvedores para facilitar algumas atividades, o AndromMDA, pode gerar uma arquitetura completa do sistema. O iQgen e o-Gen s˜ao ferramentas comerciais bastante completas e bem documentadas, enquanto que o Qualiti Coder cria uma dependˆencia do fabricante para cria¸c˜ao dos wizards.
Nos ambientes open-source n˜ao verificou-se a existˆencia de uma interface gr´afica que auxil- iasse a gera¸c˜ao de c´odigo ou visualiza¸c˜ao de modelos.
Em nenhum dos ambientes analisados foi poss´ıvel utilizar simultaneamente ou mapear difer- entes modelos de entrada.
Durante a pesquisa e avalia¸c˜ao das ferramentas, ficou claro que quando o assunto ´e gera¸c˜ao de c´odigo n˜ao existe a ferramenta definitiva. Cada uma possui aspectos positivos e negativos. Portanto a tarefa de escolha de um ambiente gerador de c´odigo deve contemplar uma extensa compara¸c˜ao entre as principais caracter´ısticas de cada uma das ferramentas analisadas, depen- dendo principalmente do contexto onde se pretende utiliz´a-las.
CAP´ITULO 4
XO2 - UM GERADOR DE C ´ODIGO MDA BASEADO EM
MAPEAMENTOS DE MODELOS
Este cap´ıtulo apresenta o ambiente XO2, um ambiente gerador de c´odigo MDA baseado em
mapeamentos de modelos. Primeiramente, ser´a mostrada uma vis˜ao geral do ambiente e seus principais elementos. Em seguida, ser˜ao apresentados os diversos tipos de arquivos de entrada. Logo ap´os, a arquitetura do ambiente ser´a explicada e, finalmente, o documento M3L para
mapeamento de modelos ser´a detalhado. 4.1 Vis˜ao Geral
O XO2 ´e um ambiente gerador de c´odigo, baseado no mapeamento de modelos de An´alise e
Projeto e foi projetado primeiramente para atender `as necessidades de sistemas de informa¸c˜ao orientados a objetos que possuem persistˆencia de dados em SGBDs relacionais. Sua utiliza¸c˜ao, contudo, n˜ao est´a limitada a apenas este tipo de gera¸c˜ao de c´odigo. Com o XO2 pode-se gerar
virtualmente qualquer tipo de c´odigo, atrav´es da cria¸c˜ao de templates personalizados, criados pelos pr´oprios usu´arios de acordo com suas necessidades.
A grande maioria dos ambientes geradores de c´odigo utiliza apenas um modelo de entrada, geralmente um diagrama de classes UML. Por´em, apenas um diagrama de classes n˜ao ´e suficiente para descrever mesmo a estrutura mais simples de um sistema.
Nesse aspecto, o XO2, com o intuito de possibilitar a utiliza¸c˜ao de um ou mais modelos,
fornece um n´ıvel maior de abstra¸c˜ao e a capacidade de lidar com mais detalhes das fases de an´alise e projeto de um sistema de informa¸c˜ao.
O ambiente XO2 segue a arquitetura MDA [KWB03], desta forma, precisam ser definidos:
um modelo independente de plataforma (PIM), um modelo espec´ıfico para a plataforma de implementa¸c˜ao (PSM), al´em de regras de transforma¸c˜ao entre os modelos.
O conceito de Gera¸c˜ao Ativa de C´odigo foi utilizado para que todo o c´odigo produzido possa ser reaproveitado em futuras gera¸c˜oes de c´odigo.
Uma abordagem de mapeamento entre modelos possibilita ao analista e ao arquiteto lan¸car m˜ao de uma gama de outros modelos para auxiliar na descri¸c˜ao e no detalhamento do sistema modelado. Como ser´a visto mais adiante, a utiliza¸c˜ao do modelo ER em conjunto com o modelo OO aumentar´a substancialmente o poder de cria¸c˜ao dos templates e gera¸c˜ao de c´odigo tornando o processo de gera¸c˜ao de c´odigo mais preciso e completo. A Figura 4.1 ilustra uma vis˜ao geral do ambiente XO2.
O sistema permite que sejam utilizados at´e trˆes tipos diferentes de arquivos de entrada: um
documento XMI (modelo OO), um documento M3L (mapeamento de modelos) e um documento
com as regras de transforma¸c˜ao (template). Tais arquivos descrevem o sistema modelado e as regras de transforma¸c˜ao que ser˜ao processadas pelo ambiente.
O documento XMI ´e constitu´ıdo pelo conjunto de elementos do modelo de an´alise e projeto escrito originalmente em linguagem UML.
Figura 4.1 Vis˜ao Geral do XO2
O documento M3L cont´em um mapeamento de modelos e ´e escrito em linguagem XML.
O documento M3L ´e opcional e foi proposto por este trabalho com objetivo de descrever os
mapeamentos dos elementos do diagrama de classes em elementos de outros modelos, como por exemplo: tabelas e colunas, widgets HTML, etc.
Finalmente, os templates s˜ao arquivos escritos seguindo o padr˜ao Velocity e descrevem as regras de transforma¸c˜ao de elementos do modelo de an´alise em estruturas de c´odigo de uma linguagem de programa¸c˜ao qualquer. A Figura 4.1 ilustra trˆes poss´ıveis tipos de c´odigo de sa´ıda: Java, SQL e textos ASCII. Isso mostra que, na verdade, o ambiente pode gerar uma gama bem maior de tipos de c´odigo.