Projeto Cordel Proposta de Continuidade

Propaganda
Projeto Cordel
Proposta de Continuidade
6 de julho de 2004
Este documento apresenta a proposta de continuidade do Projeto Cordel, iniciado em julho de 2003
a partir da parceria CPD/DCC da UFBa e Preview Computadores, e tendo sua primeira fase ndada
em junho de 2004. O projeto foi destinado ao levantamento, avaliação e desenvolvimento de uma
ferramenta para geração automática de sistemas web, baseada em tecnologias e paradigmas atuais.
Aqui serão descritos a motivação para o projeto, os objetivos da ferramenta, tecnologias utilizadas,
funcionalidades implementadas e a proposta de continuidade propriamente dita.
1
Apresentação
O desenvolvimento de sistemas computacionais, no contexto atual, tem sido caracterizado por processos
cada vez mais difíceis de gerenciar. Isto se deve a fatores diversos, tais como a crescente complexidade
das aplicações, prazos cada vez mais estreitos, orçamentos limitados e a diculdade, por parte dos
desenvolvedores, de acompanhar as tecnologias que entram e saem de cena num piscar de olhos.
Em particular, para sistemas web, este processo de desenvolvimento requer ainda uma completa
integração de tecnologias que abrangem as áreas de redes de computadores, engenharia de software,
linguagens de programação e middleware para computação distribuída, dentre outras. Além disso, o
desenvolvimento de sistemas complexos exige dos prossionais envolvidos um bom conhecimento da
linguagem de programação e middleware utilizados, mas isso não é o fator primordial. Estudos de
caso atuais reetem que o desenvolvimento de sistemas complexos devem ter seu foco voltado para a
arquitetura de software utilizada ou construída, e que esta habilidade não é derivada de boas técnicas
de programação e sim de experiências obtidas em projetos anteriores e que prospectam arquiteturas
ecientes e reutilizáveis.
Visto sob este prisma, o desenvolvimento de sistemas web pode ser um processo facilmente caracterizado como improdutivo, sem qualidade e sem o atendimento dos prazos e custos levantados.
A seção seguinte apresenta como o Cordel pode resolver ou amenizar os problemas acima citados,
construindo sistemas conáveis, de qualidade e a curto prazo.
2
Objetivos
O Cordel é uma ferramenta desenvolvida para a geração automática de versões ainda não ociais,
porém já em funcionamento, de sistemas web a partir de modelos UML contendo as classes de negócio
da aplicação. O objetivo é, a partir de um modelo simplicado, gerar uma aplicação contendo as
funcionalidades básicas de um sistema de informação convencional, sendo este posteriormente adequado
às reais necessidades do cliente. Com esta abordagem, o esforço inicial para o desenvolvimento de uma
versão estável e funcional - mesmo que parcialmente completa - é drasticamente reduzido, visto que
todo o trabalho de geração, compilação e empacotamento do código inicial é realizado pelo Cordel.
1
Além disso, garante-se que a aplicação gerada segue as boas práticas de programação e de projeto,
utilizando uma arquitetura baseada em padrões já consolidados, garantindo a qualidade do sistema
gerado.
O Cordel possui características que tentam atacar os principais pontos de entrave no desenvolvimento de sistemas web. A seguir serão descritas cada uma delas e como elas abordam o problema em
questão.
Time-to-Market. Nos dias atuais, o tempo decorrido para implementar e lançar um sistema no
mercado é tão importante quanto a sua qualidade técnica. Um dos grandes problemas é exatamente
aliar produtividade com qualidade, principalmente quando parte-se de um sistema onde seus requisitos foram parcialmente especicados. Quando este desenvolvimento é direcionado para um domínio
especíco de aplicações, tais como sistemas web, percebe-se que várias características ocorrem frequentemente em diversos sistemas: dados que são cadastrados através de formulários, sistemas que
sofrem autenticação e autorização baseados em usuários etc. Se estas soluções são reutilizadas adequadamente, certamente a produção aumentará, diminuindo o time-to-market. O Cordel, ao utilizar
o esquema de templates para geração automática de código, possibilita que o esforço inicial do processo de desenvolvimento seja reduzido a zero. O trabalho do desenvolvedor resume-se à customização
e adequação do sistema ao cliente: melhorias na camada de apresentação, validações complexas de
formulários, consultas mais rebuscadas etc.
Modelos Arquiteturais. O código-fonte gerado pelo Cordel foi construido a partir de padrões de
projeto consolidados e soluções arquiteturais que implicam em sistemas exíveis, escaláveis e de fácil
manutenção. Ao utilizar o Cordel, um desenvolvedor iniciante não corre o risco de implementar um
sistema com uma arquitetura precária, propensa a erros e a diculdades de manutenção e evolução.
Facilidade de Operação. Através do Node Editor - ambiente web de operação do Cordel - a
geração de versões iniciais de sistemas web pode ser realizada até mesmo por usuários com poucos
conhecimentos de programação. Todas as operações - desde importação do modelo UML até a geração
e teste do sistema - podem ser realizadas através de um browser web tradicional. Com um simples
processo de conguração da aplicação o sistema já pode ser gerado, sendo que, quanto mais o sistema
for congurado no Node Editor, mais acabada será a aplicação gerada.
Flexibilidade em Tecnologias. O Cordel foi idealizado e implementado seguindo uma estrutura
exível para utilização de tecnologias. Essa estrutura é baseada no conceito de avour (ou simplesmente arquitetura). Cada avour dene um conjunto de tecnologias a serem utilizadas e é composto
por um arquivo de conguração, uma classe de execução e um conjunto de templates. O Cordel
é disponibilizado com dois avours que utilizam as tecnologias EJB, Entities Beans CMP, Struts,
JBoss, JSP e Hypersonic ou PostgreSQL, a depender do avour. Futuramente novos avours podem
ser dinamicamente incorporados ao Cordel, possibilitando a geração de sistemas escritas em outras
plataformas tais como PHP, .NET ou CORBA.
3
Tecnologias
O Cordel é uma ferramenta fundamentalmente escrita em Java e utiliza diversas API's disponibilizadas sob a forma de software livre (licença GPL). O Cordel é basicamente formado pelos seguintes
componentes: Node Editor, Importador do modelo UML, Gerenciador de Arquiteturas e Máquina de
templates. A seguir serão descritas as tecnologias utilizadas em cada componente.
O Node Editor é uma aplicação web que concentra as operações de conguração e geração da
aplicação. O sistema foi construído utilizando as mesmas tecnologias e paradigmas utilizados nas
aplicações por ele geradas. A camada de apresentação foi escrita em JSP e Struts utilizando objetos
de sessão e invocando métodos remotos em EJB's que realizam o processo de geração, compilação,
empacotamento e implantação do sistema. O Cordel, como um todo, funciona como uma aplicação
distribuída hospedada no servidor de aplicações JBoss.
2
O Importador de modelo UML (também chamado de XMIReader) realiza a importação de modelos
UML disponibilizados sob a forma de arquivos XMI (XML Metadata Interchange ).
O Gerenciador de Arquiteturas é um componente EJB que gera código-fonte a depender da arquitetura (avour ) escolhida pelo usuário. Ele gerencia e fornece as arquiteturas disponíveis para o
Node Editor e delega a geração de código para a Máquina de templates.
A Máquina de templates é o componente responsável pela geração de código-fonte, através de arquivos de templates. O componente é baseado no Velocity, tecnologia para processamento de templates.
4
Funcionalidades Implementadas
A versão atual do Cordel é composta pelos componentes descritos acima e realiza as seguintes funcionalidades:
• Implementação das quatro funcionalidades básicas para cada classe presente no modelo: cadastro,
consulta, edição e remoção.
• Geração de código-fonte baseado na utilização dos seguintes padrões de projeto para J2EE:
Service Locator, Session Facade, Business Delegate e Transfer Object.
• Utilização do JSP, Struts e CSS para implementação da camada de apresentação.
• Persistência baseada em entities beans CMP (Container-Managed Persistence ).
5
Proposta de Continuidade
Ao longo deste ano de projeto vários objetivos importantes do Cordel foram alcançados: levantamento
e avaliação de uma solução previamente existente (o Application Nodes Designer ), o que descartou
as abordagens que certamente produziriam resultados indesejáveis, projeto e implementação do metamodelo e da infra-estrutura para geração de aplicações, implementação do Node Editor, Importador do
modelo UML, Gerenciador de Arquiteturas, Máquina de templates e preparação dos avours default.
A ferramenta encontra-se atualmente em uma versão parcialmente adaptada para uso em produção
e passando por testes em projetos-piloto no Centro de Processamento de Dados da UFBa. Todas
as funcionalidades básicas para a geração de sistemas já em funcionamento foram implementadas e
testadas.
No entanto, algumas melhorias e propostas de novas funcionalidades não puderam ser incorporadas
ao cronograma, sendo estas fundamentais para um uso efetivamente em produção e para a geração de
aplicações que necessitem cada vez menos de customizações por parte de desenvolvedor.
Os principais pontos de melhoria e evolução são (em ordem de prioridade): mecanismo inteligente
para relacionamentos, autenticação e autorização de usuários, gerência do controle de acesso, geração
inteligente de código, facilidades para conguração da camada de apresentação, suporte a auditoria e
log e novos avours. As seções a seguir descrevem com detalhes cada ponto proposto.
5.1 Mecanismo Inteligente para Relacionamentos
Os relacionamentos entre classes (agregações e composições) presentes no modelo UML representam
características importantes da aplicações e podem ser fontes bastante interessantes para a geração de
aplicações mais inteligentes.
Estes relacionamentos, apesar de já lidos pelo Importador de modelo UML e exibidos no Node Editor, não são ainda reetidos na aplicação gerada. Ao identicar um relacionamento, a depender do seu
tipo (um-para-um, um-para-muitos ou muitos-para-muitos), todas as restrições (chaves estrangeiras)
3
já poderiam ser criadas no banco de dados e todas os formulários web para cadastros e consultas já
podiam contar com mecanismos (combobox e listbox ) para disponibilização destes relacionamentos.
Em se tratando de ser totalmente recorrente em sistemas de informação convencionais, este ponto
representa fator fundamental e de maior prioridade na adequação da ferramenta para uso prossional
e em produção. Um trabalho considerável seria poupado ao desenvolvedor na implementação destas
características.
5.2 Autenticação e Autorização de Usuários
A autenticação e autorização baseadas em usuários é uma funcionalidade constantemente presente em
sistemas atuais. A utilização de logins e senhas para autenticação do acesso a sistemas é de fundamental
importância para a condencialidade e integridade dos dados envolvidos. A partir do mesmo princípio,
determinadas funcionalidades podem ser autorizadas ou não a um determinado usuário. A exclusão de
um ítem do cadastro, ou emissão de um relatório gerencial podem ser somente realizados por usuários
devidamente autorizados para tal operação.
As aplicações geradas atualmente pelo Cordel, apesar de totalmente funcionais, não contam com
nenhum mecanismo que implemente autenticação e autorização baseada em usuários. Qualquer usuário
com acesso ao sistema pode realizar qualquer operação sem autenticação nem autorização, devendo
esta funcionalidade ser implementada pelo desenvolvedor, como parte do processo de customização.
De modo a reduzir o trabalho do desenvolvedor e propiciar uma aplicação mais completa e de
maior qualidade, pretende-se incorporar ao meta-modelo os requisitos necessários para a geração de
aplicações que já contam com este suporte de autenticação e autorização. Esta funcionalidade poderá
ser implementada através do JCE (Java Cryptography Extension ), JAAS (Java Authentication and
Authorization Service ) e do JBoss Security Service, todas tecnologias já testadas e validadas para tal
situação.
5.3 Gerência do Controle de Acesso
Para a geração de aplicações que já fazem uso de mecanismos para autenticação e autorização de
usuários, não só alterações nos templates e no Gerenciador de Arquiteturas devem ser realizados. As
congurações e criações de grupos de usuários e denições de quais operações (cadastro, consulta,
remoção e listagem) cada grupo pode realizar é um processo importante durante a conguração de
novas aplicações. Para isso, tal conguração deve estar disponível para o usuários através do Node
Editor.
Pretende-se adicionar ao Node Editor formulários para a criação de usuários e grupos e amarração
destes às operações básicas já presentes no editor. Com isto, ao gerar a aplicação, todo o código para
realização destas funcionalidades já seria gerada, poupando o desenvolvedor desta atividade.
5.4 Geração Inteligente de Código
A sincronização código gerado/modelo UML é uma funcionalidade importante e raramente encontrada
nas ferramentas de suporte à produção (com exceções de algumas poucas soluções comerciais e nem
sempre viáveis nanceiramente). Tem se tornado fato comum, atualmente, o início do processo de
desenvolvimento a partir de requisitos que não estão totalmente denidos, caracterizando o chamado
Ciclo Exploratório de desenvolvimento de sistemas. Neste ciclo, cada vez que os requisitos são renados
o modelo deve ser novamente importado e a aplicação novamente gerada.
Na versão atual do Cordel, ao regerar a aplicação, todo o código já customizado pelo desenvolvedor
é perdido. Pretende-se implementar um mecanismo inteligente na Máquina de templates para a identicação e isolamento de pontos de customização, de modo a tentar preservar estas alterações. A solução
pode ser complexa ou não a depender das restrições e hipóteses feitas sobre o nível de manutenção de
4
código que será realizado. Espera-se denir um bom nível de comprometimento entre a complexidade
da solução e a preservação do código customizado.
5.5 Facilidades para Conguração da Camada de Apresentação
A camada de apresentação (páginas JSP e arquivos CSS) representa o ponto de interação do usuário
com o sistema e é o um ponto potencial de customização nas aplicações geradas pelo Cordel. Certamente o sistema deverá sofrer alterações nas cores, imagens e disposição dos controles em cada página
JSP.
Seguindo a mesma idéia de diminuição do trabalho realizado pelo desenvolvedor, alguns mecanismos
para conguração da camada de apresentação poderiam ser inseridos diretamente no Node Editor.
Facilidades tais como escolha da imagem do logotipo e escolha do arquivo CSS utilizado poderiam ser
facilmente informadas pelo usuário, gerando aplicações totalmente exíveis em relação à camada de
apresentação.
5.6 Suporte a Auditoria e Log
A identicação e armazenamento de quais operações foram realizadas por quais usuários e em qual
momento é um requisito importante em alguns sistemas mais críticos.
Tal requisito poderia também ser incorporado à estrutura interna do Cordel e congurado através
do Node Editor. O usuário poderia por exemplo, informar quais operações deveriam ser auditadas, qual
a forma e local de armazenamento ou denir alarmes para as operações mais críticas. O Cordel então
geraria aplicações que já contariam com esta infra-estrutura, reduzindo o trabalho do desenvolvedor.
5.7 Novos Flavours
Através do mecanismo exível disponibilizado pelo Gerenciador de Arquiteturas, novos templates podem ser acrescentados ao Cordel, de modo a possibilitar a geração de sistemas escritos para outras
plataformas que não seja o J2EE.
Como melhoria futura, pretende-se disponibilizar novos avours propiciando a geração de sistemas
escritos em PHP, .NET ou CORBA.
Para incorporação de novos avours nenhuma alteração é realizada na estrutura interna do Cordel.
Todas as modicações são realizadas em arquivos XML que são reetidas, dinamicamente, na execução
do Cordel.
6
Conclusões
Este documento apresentou o status atual da ferramenta Cordel bem como uma proposta para continuidade do projeto, justicando as melhorias e evoluções previstas para a ferramenta.
Vale salientar que o projeto constitui um trabalho com relevância tanto para as corporações quanto
para a comunidade cientíca. A disponibilidade de uma ferramenta que alavanque a produtividade
de desenvolvimento de sistemas web é crucial para o sucesso de corporações que trabalham sob o
modelo de fábrica de software, onde cada vez mais sistemas são produzidos em menos tempo. Sob
uma abordagem cientíca, o projeto está inserido em temas atuais de pesquisa que envolvem a MDA
(Model-Driven Architecture ), Executable UML, dentre outros esforços que se concentram na geração
automática de sistemas.
Com as melhorias propostas, em conjunto com testes-piloto da utilização do Cordel em ambientes
reais, acredita-se ser possível a utilização efetiva da ferramenta em ambientes de produção.
5
Download