Londrina - Paraná
2006
2
Londrina - Paraná
2006
i
COMISSÃO EXAMINADORA
______________________________________________
Prof. Ms. Rodolfo Miranda de Barros
Universidade Estadual de Londrina
______________________________________________
Prof. Dr. Y
Universidade Federal do Rio de Janeiro
______________________________________________
Prof. Ms. Sergio Akio Tanaka
Centro Universitário Filadélfia
DEDICATÓRIA
AGRADECIMENTOS
Agradeço aos meus pais pelo apoio durante o tempo em que estive ocupado neste trabalho e aos
amigos pelos incentivos. Agradeço principalmente à Elen que sempre me motivou quando as
dificuldades surgiam.
iv
Albert Einstein
v
RESUMO
ABSTRACT
The software industry constantly searches for new methodologies to develop high quality systems
with a reduced cost. A form to increase the quality is to prioritize the requirements capture and
elaboration phases during the development, increasing the project cost, since more time is spent
in previous phases to the implementation. To improve the relation between quality and cost, the
MDA paradigm appeared, that consists of transforming system models written in UML language,
into specific technology models, generally programming languages codes. Beyond applying the
MDA to become the implementation phase less expensive, software can be projected in a flexible
and highly reusable architecture. The service oriented architecture or SOA has these qualities,
dividing the system in small parts that communicate in different platforms, where each part or
service can be used by distinct systems that needs the provided functionality. By a simple case
study, this work shows a system development applying MDA techniques, publishing its
functionalities as services of SOA architecture. For this, it makes use of a commercial tool that
assists the models transformation process and the services publication. It presents an example of
services consumption and concludes explaining why the presented concepts are applicable in
software factories processes through the use of tools.
LISTA DE FIGURAS
LISTA DE QUADROS
SUMÁRIO
RESUMO....................................................................................................................................................................... v
ABSTRACT.................................................................................................................................................................. vi
1 INTRODUÇÃO ......................................................................................................................................................... 1
1.1 OBJETIVOS ............................................................................................................................................................ 2
1.2 JUSTIFICATIVA ...................................................................................................................................................... 3
2 FUNDAMENTAÇÃO TEÓRICA ........................................................................................................................... 4
2.1 ARQUITETURA DE SOFTWARE ............................................................................................................................... 4
2.2 UML ........................................................................................................................................................................ 6
REFERÊNCIAS ......................................................................................................................................................... 42
1
1 Introdução
A demanda mundial por novos projetos de software cresceu muito nos últimos anos,
produção, diminuindo custos e riscos nos projetos, já que o mercado mostra que esses são fatores
cruciais para seu sucesso. É comum um projeto de software passar por problemas durante sua
realização e ser encerrado antes da conclusão, ou mais comum, ainda, é um projeto da área
êxito, diminuindo em muito o trabalho repetitivo que acontecia a cada novo projeto. A premissa
desse tipo de reuso é criar objetos que possam ser reutilizados, construindo-os de forma
Mas, devido ao baixo nível de abstração apresentado por esses conceitos, a manutenção
dos sistemas ainda é custoso, já que pequenas alterações nas implementações dos objetos base
existentes vem da sua falta de portabilidade. Portabilidade significa poder alterar a plataforma ou
tecnologia em que o software funciona para outras, caso seja necessário para os negócios da
1.1 Objetivos
projetos de software é que surgiu recentemente um novo paradigma aplicado à arquitetura dos
com suas funcionalidades, as quais são chamadas de serviços. Os serviços por sua vez podem ser
deixando que serviços possam ser aprimorados de forma independente. Mas serviços são difíceis
modelagem dos objetos do sistema para construí-lo, garantindo a sua interoperabilidade. Essa
visão foi apresentada no ano de 2000 pela OMG (Object Management Group) através do artigo
SOLEY (2000) intitulado “Model Driven Architecture” (Arquitetura dirigida a modelos), que deu
SOA. Para isso, utiliza-se o MDA para modelar de maneira padronizada cada um dos serviços e a
partir desses modelos, que são independentes de plataforma, fazer uso de uma ferramenta
1.2 Justificativa
rapidamente e com custo reduzido às mudanças do mercado, pois promove o reuso em um nível
mais elevado (serviços) ao invés de objetos. Cada serviço pode ser implementado utilizando uma
tecnologia diferente, bastando que o protocolo de comunicação seja entendido por todos.
Existem casos onde um serviço precisa ser portado de uma tecnologia para outra, como
acontece ao optar-se por aproveitar sistemas em produção que não se encontram na arquitetura
SOA e criar serviços para as suas funcionalidades. Para esses casos a utilização do MDA no
serviço, o MDA pode gerar o serviço para a tecnologia escolhida bastando escolher uma
ferramenta que reconheça os padrões definidos pela OMG. Isso aumenta a reusabilidade e
diminui os custos de manutenção, já que uma única alteração nos modelos pode ser gerada
pesquisa, como os conceitos de arquitetura de software, MDA, UML e SOA. Nos capítulo 3 e 4
2 Fundamentação Teórica
Para que seja possível o entendimento das técnicas e tecnologias utilizadas, este capítulo
apresenta os conceitos teóricos de maior relevância. As seções dividem-se para tratar dos
modelagem utilizada para documentar arquiteturas de programas; MDA, com uma explicação
respeito do SOA e exemplos de utilizações atuais da tecnologia; e finalmente uma seção com as
considerações finais.
O conceito de arquitetura de software teve origem no ano de 1968 com uma pesquisa de
Edsger Dijkstra e David Pantas onde enfatizaram que a estrutura de um sistema de software é
parte crucial em um projeto. Para ilustrar essa importância, pode-se citar WOODS (2005), que a
estruturado, ou seja, quais partes são necessárias para a sua constituição. Essas partes podem ser
componentes, que são pequenas partes de código, como módulos, ou pedaços maiores, como
definidos pela arquitetura são as interfaces entre as partes do sistema, descrevendo abstrações de
como os componentes interagem entre si, por exemplo. Além disso, para um projeto de software,
5
deve-se definir se o sistema será dividido em camadas, que isolam funcionalidades e que podem
ser distribuídas em diferentes máquinas, ou ainda se serão feitas chamadas a métodos remotos.
Um arquiteto de software deve ser capaz de selecionar quais componentes se adequam melhor a
A arquitetura de software deve ser documentada para facilitar a comunicação entre todos
os envolvidos no projeto. Uma documentação bem realizada garante que componentes e padrões
possam ser reutilizados em todo o projeto, e que decisões críticas possam ser feitas no seu início.
Para facilitar a criação desses documentos e seu entendimento por parte dos envolvidos,
diversos tipos de linguagens foram criados ao longo do tempo, mas uma delas acabou se tornando
consenso entre a maioria dos projetistas. Trata-se de um conjunto de símbolos que representam a
visão do sistema de forma padronizada, o quais são definidos pela OMG e formam a linguagem
chamada de UML, que será melhor explicada na próxima seção deste capitulo.
citar como exemplos: sistema monolítico, arquitetura cliente-servidor, três camadas, n-camadas,
tipo pode ser também chamado de arquitetura SOA, que é tema desse trabalho e será detalhado
2.2 UML
A UML é uma linguagem gráfica definida pela OMG (Object Management Group), que é
De acordo com FOWLER (2005), a UML pode ser utilizada de três modos diferentes por
uma equipe de desenvolvimento de software: como esboço, como projeto e como linguagem de
de código já construído. No segundo modo, é utilizada de maneira mais criteriosa e como parte
diagramas são responsáveis pela modelagem do sistema antes da fase de implementação e devem
de ferramentas CASE’s que se utilizam dos diagramas para gerar código em determinada
linguagem de programação nos leva ao terceiro modo de uso apresentado: a UML como
Com o uso da UML no decorrer dos anos, novas características foram adicionadas e assim
ocorreram na versão 2.0, onde foram melhorados os digramas que modelam a lógica
diagramas de objetos, que já eram amplamente utilizados, tornaram-se oficiais (FOWLER, 2005).
da UML na modelagem de sistemas grandes, sendo que cada classe pode pertencer a um
único pacote;
8
mostrando a troca de mensagens entre eles através de uma linha de tempo com a
de cada diagrama para a construção do aplicativo, fazendo-se uso da UML como uma linguagem
de programação.
2.3 MDA
A MDA é uma técnica de desenvolvimento de software criada pela OMG onde diferentes
modelos de objetos são ligados para construir um sistema completo. A OMG é um grupo
formado por empresas de desenvolvimento de software do mundo todo que tem como propósito
definir padrões a serem adotados, tanto para MDA como para a linguagem de modelagem já
estudada, a UML.
linguagens com alto nível de abstração e de facilitar o reuso de partes do mesmo. Desenvolver em
alto nível significa utilizar ferramentas que trabalhem com linguagens simples e abstratas, onde
referências com o mundo real sejam feitas com mais facilidade e que elas possam ser mapeadas
para linguagens de baixo nível, ou linguagem de máquina, as quais são muito mais complexas e
necessitam de muito mais tempo para a codificação. Em uma arquitetura MDA um sistema é
9
construído usando-se modelos UML ao invés de código, o que resulta em um alto nível de
objetos. Esse paradigma tem como uma de suas qualidades fundamentais a possibilidade de
reutilizar objetos em todo o sistema. Quanto mais coeso um objeto, mais alto seu grau de
reutilização.
A independência de tecnologia obtida com o uso de modelos é mais uma das vantagens da
técnica MDA, cuja premissa principal é transformar modelos abstratos em aplicativos, usando a
UML como linguagem de programação. Os modelos mais abstratos são classificados como
função de mapeamento, que resulta em modelos específicos de plataforma (PSM). Portanto, para
gerar o sistema para diferentes plataformas a partir de um modelo PIM, basta que existam
seu correspondente em código Java. Um diagrama de classes pode ser mapeado completamente
em código Java, onde cada classe do diagrama dá origem a declaração da classe de mesmo nome
na linguagem objetivo.
PIM : um PIM é um modelo para um determinado propósito, sendo abstrato, ou seja, que
pode representar diferentes plataformas. Como exemplo, tem-se que um modelo PIM não precisa
PSM : é um modelo feito especialmente para uma plataforma. Para um sistema que utilize
banco de dados, por exemplo, esse modelo deve conter referências para as tabelas do banco e
classes para acesso a esse dados. Outro exemplo seria a definição de classes para o controle de
mapeamento separada, que transforme o modelo abstrato (PIM) no modelo especifico (PSM).
Assim, apenas as alterações no modelo mais abstrato são importantes, e as mesmas podem ser
para o aplicativo que inexistem na UML, como por exemplo, a informação de que uma classe é
persistente. Para contornar esse problema, a UML permite extensões através de “profiles”, onde o
modelo está bem formado. Mas, mesmo com esses mecanismos, existem casos mais complexos.
Um exemplo mais complexo ocorre quando há a necessidade de uma interface de usuário (UI)
especifica para uma funcionalidade. A função de mapeamento gera UIs padronizadas, até mesmo
11
porque esses detalhes de implementação dizem respeito especificamente a plataforma alvo, não
podendo ficar em modelos genéricos. Para esses casos, MDA faz uso de Modelos Elaborados,
que nada mais são do que alterações manuais feitas modelo gerado, através da adição de código
tenha conhecimento necessário para modelar serviços e gerá-los para uma tecnologia específica
2.4 SOA
organizações possam acompanhar essas mudanças, o setor de tecnologia da informação (TI) deve
se adequar de maneira ágil. Essa flexibilização para acompanhar novos modelos de negócios e
operações da empresa pode ser conseguida mais facilmente desenvolvendo-se soluções com a
arquitetura identificada pela sigla SOA (Service Oriented Architecture), ou arquitetura orientada
a serviços. Segundo BROWN (2005), neste tipo de arquitetura, os sistemas deixam de ser
monolíticos, ou seja, focados em resolver todas as necessidades do negócio, para serem sistemas
compostos, formados pela integração de diferentes fontes para formar uma solução completa.
dividido em camadas, como por exemplo, em camada de apresentação com o servidor Web,
camada com o servidor de aplicação e a camada de acesso aos dados. No entanto, são difíceis de
passa a ser uma composição de diferentes serviços, cada um atendendo uma necessidade
específica, e que agrupados atendem a um processo de negócio mais sofisticado. Isso torna o
sistema mais componentizado e, por conseqüência, mais flexível e com maior probabilidade de
reuso de suas partes em outras situações. Além disso, serviços são mantidos e testados
distribuídos, sendo necessário um meio de comunicação para que ocorra a devida integração.
Exemplos de meios amplamente difundidos são redes internas (intranets) e a própria internet.
protocolo, como SOAP (Simple Object Access Protocol) ou REST (Representational State
formato desses documentos é definido em arquivos do tipo WSDL (Web Services Description
Language). Esses documentos e protocolos são definidos pelo W3C (World Wide Web
Consortium), um consórcio de empresas que da mesma maneira que a OMG, define os padrões a
Tecnologia da Informação e de Controle Financeiro, por exemplo, podem ter seus processos
de cada área. Dessa forma, um processo de contratação de pessoal pode ser implementado por um
contratar uma pessoa, ações são disparadas para o cadastro em RH e ainda para o cadastro de seu
salário nas finanças da empresa. Nesse contexto, modificações futuras podem ser mais facilmente
realizadas.
A adoção de SOA pelas empresas abre ainda um novo modelo de negócios, crescente nos
dias de hoje: outsourcing de serviços. Isso significa que empresas podem desenvolver um serviço
específico e bem focado e cobrar pelo seu uso. Um bom exemplo é o serviço de busca de CEPs
oferecido pela empresa dos correios, para que qualquer aplicativo ligado a internet possa
Diversos websites passaram a prover serviços especializados que originam novos tipos de
aplicativos web. Esses novos aplicativos consomem diferentes serviços, combinando-os a fim de
disponibilizar algo mais completo e melhor direcionado. O termo mashup designa essas
aplicações compostas e são os maiores responsáveis pela chamada Web 2.0. Um exemplo seria a
união de serviços de localização (como mapas) a catálogos virtuais de compras. Assim, é possível
serviços pode ser feita utilizando-se UML, com diagramas de classes e de componentes. Tal
modelagem propicia ainda o uso da técnica MDA para a transformação dos modelos para uma
capítulo.
então descrever como esses conceitos serão unidos neste trabalho. Conhecer arquiteturas é
importante para entender a diferença entre outros padrões e o padrão defendido e a ser utilizado,
SOA. Desenvolver aplicativos modularizados e integrados através de serviços não é uma tarefa
fácil de ser gerenciada, nem que demande pouco trabalho. Com a finalidade de agilizar o
processo de desenvolvimento e fazer com que futuras alterações possam ser implementadas
Conhecimentos de UML são a base para a construção de modelos úteis e transformáveis por
modelagem do sistema com UML até a escrita de testes, e já possuem funções de mapeamento
requisitos de um sistema simples para controle de finanças pessoais, que será utilizado como
estudo de caso da aplicação das técnicas apresentadas. No capítulo 4 descreve-se o uso de uma
3 Estudo de Caso
requisitos básicos para um sistema que servirá de exemplo na aplicação dos conceitos
apresentados neste trabalho. Portanto, sua construção será feita utilizando técnicas de MDA com
diagramas UML necessários e ainda em uma arquitetura orientada a serviços. Nas próximas
seções tem-se uma análise de requisitos breve, partindo-se da definição do escopo, casos de uso e
3.1 Escopo
O sistema aqui proposto tem como escopo o controle financeiro de pessoas físicas, onde
as mesmas cadastraram suas receitas e despesas realizadas em cada dia para saberem quanto de
saldo possuem. Cada despesa ou receita representa um movimento nas finanças e deve estar
relacionado a uma ou mais contas, o que permite que se totalizem os movimentos de cada conta.
Além disso, os movimentos podem ser cadastrados com uma data de vencimento futura com a
período de tempo escolhido ou aqueles que estejam associados a uma conta, também deve ser
possível. Para os movimentos visíveis, é preciso mostrar tanto o saldo disponível, que é a soma
de todos os movimentos visíveis, quanto o saldo atual, que é a soma dos movimentos vencidos
até a data atual. Por fim, o sistema deve disponibilizar as funcionalidades para acesso através da
Web ou ainda provendo serviços para outros aplicativos através de uma interface Webservice.
16
Como pode ser percebido na descrição do escopo, trata-se de um sistema simples, onde o
único interressado (stakeholder) é o usuário comum, que o utiliza com o objetivo de gerenciar
movimentos e obter saldos por intervalo de tempo e por conta. Logo, para um melhor
funcionamento do sistema é necessário um requisito de segurança, para que um usuário possa ser
identificado, impossibilitando então que dados sejam vistos por pessoas desautorizadas.
A partir dessas informações, listam-se os casos de uso que o sistema deve satisfazer para
alcançar seus objetivos. O diagrama de casos de uso pode ser observado na Figura 1. **Falta
ou ainda removê-los. Esse caso de uso está mais bem detalhado através de seu cenário de
• UC-02 Controlar Conta: o usuário deve associar pelo menos uma conta a cada movimento
cadastrado. No entanto, o controle é feito sem que o usuário tenha acesso direto ao cadastro
• UC-03 Visualizar Movimentos: cada usuário pode visualizar os movimentos a que está
associado.
• UC-04 Visualizar Movimentos por Período: o usuário especifica um intervalo de datas para
• UC-05 Visualizar Movimentos por Conta: o usuário pode filtrar os movimentos que deseja
• UC-06 Calcular Saldo Disponível: a partir dos movimentos em exibição obtidos através de
UC-04 ou UC-05, o saldo disponível é obtido pela soma dos valores desses movimentos.
• UC-07 Calcular Saldo Atual: depois de obter uma lista de movimentos em UC-04 ou UC-05,
o saldo atual é a soma dos valores dos movimentos da lista que já venceram, ou seja, que
• UC-08 Autenticar Usuário: para que o usuário possa realizar qualquer operação do sistema,
ele deve de identificar através de um nome (login) e uma senha. Assim o sistema sabe a qual
• Interface Web: o sistema deve possibilitar o uso completo de suas funcionalidades através
• Interface Webservice: uma interface de serviços deve ser disponibilizada para que aplicações
em uma arquitetura SOA possam fazer uso das funcionalidades do controle financeiro.
19
chegar a um esboço do diagrama de classes, que pode ser observado na Figura 2. Ele contém as
classes TMovimento, que representa todos os movimentos cadastrados pelo usuário e contém as
propriedades necessários para satisfazer todos os casos de uso, com exceção do UC-02, que
sistema onde são disponibilizados os serviços que podem vir a serem consumidos dentro de uma
arquitetura SOA, funcionando como o padrão de projeto façade, que limita o que os aplicativos
externos visualizam do sistema. Nesta classe, tem-se uma prévia dos métodos da interface da
aplicação.
Esse esboço de diagrama tem como objetivo apenas apresentar as possíveis classes do
das dependências elas. Já os métodos de cada classe serão obtidos quando os diagramas de
seqüência de cada caso de uso forem desenhados, os quais serão necessários para uma
modelagem mais completa do sistema, a ser mostrado no próximo capítulo deste trabalho.
de desenvolvimento chamada IBM® RSA (Rational Software Architect). Ela permite que os
Exemplificar a aplicação dos estudos realizados nos capítulos anteriores deste trabalho é o
objetivo das seções seguintes. Nelas tem-se os detalhes da modelagem dos casos de uso e das
como será feita a arquitetura do sistema para prover SOA, o processo de transformação dos
modelos UML em modelos específicos para a plataforma também a ser escolhida, e por fim
mostra-se como os serviços disponibilizados pelo controle financeiro pessoal podem ser
Os passos aqui descritos visam mostrar como a ferramenta IBM® RSA pode ajudar na
desenvolvimento dirigido por modelos (MDA), que foram estudados nos capítulos anteriores.
Através dela define-se os modelos do sistema utilizando a notação UML em vários níveis de
Assim, parte-se do ponto que os requisitos foram capturados no capítulo anterior, representando a
fase de concepção do processo. A próxima etapa é então a fase de Elaboração. Não é objetivo
desse documento detalhar as fases, iterações ou disciplinas do RUP. O objetivo é mostrar como
Nas próximas subseções tem-se a definição dos modelos necessários para que a
ferramenta possa realizar a transformação MDA de forma eficiente. Na próxima seção deste
implementação.
23
diagrama de casos de uso obtido na fase de concepção é apresentado na Figura 1 e faz esse papel.
O mesmo foi então redesenhado para que a realização de cada caso de uso pudesse ser concluído.
Baseando-se então nos casos de uso e nos requisitos não-funcionais pode-se chegar a uma
funcionalidades poderá ser realizado tanto através de WebServices quanto por uma interface Web
a ser acessada via navegador, a arquitetura que atende esses objetivos é a chamada arquitetura de
• Camada de acesso aos dados, onde deve ser alocado o sistema gerenciador de banco de dados
e uma camada do sistema para controlar o acesso aos mesmos e fazer mapeamentos quando
necessário;
• Camada de Negócios, onde ficam as partes do sistema responsáveis pelas regras de negócio.
apresentação.
responsável por criar as páginas Web e gerenciar as sessões de acesso. Além disso, nesta
• Camada Cliente, formada tanto por navegadores mostrando as páginas geradas pelo servidor
Web, quanto por outros aplicativos que consomem os serviços disponibilizados via
Webservices.
atende os requisitos do projeto, passa-se a fase de realização dos casos de uso. Mais detalhes na
próxima subseção.
representação é feita realizando-se os casos de uso, ou seja, definindo quais classes são
necessárias para que cada uma das funcionalidades possa ser implementada. No capítulo anterior
foram feitas adaptações para que a arquitetura escolhida possa ser implementada. Para isso,
definem-se quais classes ficarão em cada camada da aplicação, atribuindo a elas estereótipos que
indicam sua função. Foram adicionadas classes no esboço feito durante a captura de requisitos,
classes de dados com o estereótipo Entity, que farão o acesso a dados persistidos. O novo
os cursos básicos e alternativos na utilização de cada caso de uso. Criando esses diagramas é que
diagrama de seqüência do curso básico para o caso de uso “Gerenciar Movimento” na Figura 4.
Note que o usuário faz uso do sistema apenas pelas funcionalidades disponíveis na classe da
camada de apresentação, no caso ControleFinanceiroUI, que por sua vez verifica se o usuário foi
classe mais detalhado, onde os métodos das classes já se encontram declarados, juntamente com
seus parâmetros e tipos de retorno. Foi necessário adicionar um parâmetro chamado “uid” a todos
26
Alguns tipos não são nativos da linguagem UML e tiveram que ser criados, como é o
caso dos tipos primitivos Date para campos com datas e Double para campos com casas
decimais. Além desses, definiu-se um tipo complexo chamado ListaMovimentos para o retorno de
um conjunto de dados de movimentos e saldos, necessários para os casos de uso que herdam de
Figura 4 – Diagrama de seqüência para o fluxo básico do caso de uso “Gerenciar Movimento”.
27
plataforma ou tecnologia. Ele pode ser reutilizado para diversas implementações do sistema. Na
próxima seção, utiliza-se esse modelo para a obtenção de um modelo de implementação, que já
forma que satisfaça os requisitos estabelecidos. Este capítulo apresenta a construção do sistema
No principio desta fase, portanto, é necessário saber qual tecnologia será empregada na
Nas subseções a seguir, explica-se esse processo que culmina na obtenção de modelos PSM para
a tecnologia escolhida.
software de controle financeiro através da internet e o uso de webservices para formar uma
arquitetura orientada a serviços, verificou-se que a melhor arquitetura para atender essas
necessidades seria a utilização de n-camadas. Assim, cada uma das camadas conteria uma parte
do sistema, separadas de acordo com suas funções, como prover acesso a dados, controlar os
Para melhor implementar essa divisão, propõe-se como tecnologia a plataforma Java,
sendo mais especificamente necessária para o projeto em questão a plataforma chamada Java
29
Enterprise Edition (J2EE), que usa programas Java em uma arquitetura Web, ou seja, que
SOA, para que o mesmo sistema possa ser consumido de diferentes formas. Com esse fim, opta-
se pela implementação através da construção de Enterprise Java Beans(EJB), que são como
componentes que agrupados formam uma aplicação J2EE mais robusta, e que fazem uso de
recursos da tecnologia Java para facilmente gerar meios de comunicação entre as camadas
definidas. Essa comunicação pode ser tanto local, quando as camadas internas necessitam
comunicar-se entre si ou com o banco de dados, quanto permitindo a definição dos chamados
“Beans de sessão”, que são importantes na camada de apresentação para a comunicação com
sistema, possibilitam que seus métodos sejam publicados como serviços, recebendo chamadas
A ferramenta RSA tem a capacidade de modelar projetos J2EE diretamente. Como essa é
plataforma escolhida para a implementação, cria-se um novo projeto J2EE na mesma área de
trabalho do projeto com os modelos de caso de uso e análise, mas com o nome de
aplicação para funcionar, que é responsável por prover serviços e controlar os Beans. A
30
ferramenta RSA se integra facilmente com o servidor IBM® WebSphere®, bastando-se indicar
existentes e independentes de plataforma em classes EJB e classes Java, que farão parte do
Para realizar a transformação dos modelos PIM para PSM, a RSA necessita da aplicação
padrões. Existem profiles para diversas tecnologias, incluindo EJB, que faremos uso.
Aplica-se o profile EJB no projeto de controle financeiro com os modelos básicos e então
e aplicamos os mesmos em classe ou atributos com funções especiais. As classes que recebem o
estereótipo “Serviço” darão origem a Beans de Sessão e classes com o estereótipo “Entidade”
serão “Beans Entidade”, responsáveis pela persistência de dados. Pode-se também informar em
classes entidades, qual atributo será usado como chave primária no mapeamento para o banco de
dados, como o estereótipo “ID”. A tarefa de mapeamento dos Beans de entidade dessas classes é
simples, porque a RSA gera os artefatos necessários para a construção e acesso de bases no
desenvolvedor.
31
também através de um assistente. Nele defini-se o projeto origem, o destino e alguns parâmetros
adicionais. Criando-se uma transformação do tipo UML para EJB, tendo como origem o projeto
de modelagem e como destino o projeto EJB criado juntamente com o J2EE, temos uma
estereotipadas e classes auxiliares em Java para as classes sem estereótipo. No projeto exemplo
observa-se a criação de um Bean de sessão para a classe ControleFinUI e três Beans de entidade
para as classes Usuário, Conta e Movimento. As classes com o estereótipo Control, que não é um
estereótipo do profile EJB, geram classes Java simples. Veja na Figura 6 as classes Bean geradas.
32
ferramenta mostra os erros de compilação dos arquivos antes mesmo do projeto ser compilado.
Como tipos primitivos como Date e Double foram gerados com esses mesmos nomes, é
necessário adicionar uma cláusula import em java.util.date em arquivos com classes que usem o
tipo Date. Depois de corrigidos os erros, pode-se ver como ficou a estrutura do EJB, com as
classes já agrupadas nos pacotes “entidades”, “comum” e “beans”. Esses pacotes agrupam as
classes da camada de acesso a dados, as classes Java com as regras de negócio e o Bean de sessão
IBM® RSA®.
Para completar então a proposta deste estudo de caso, o sistema gerado deve ainda prover
serviços com a finalidade de implementarmos uma arquitetura SOA. Para isso, usa-se mais uma
funcionalidade da RSA, agora para tornar métodos do Bean de sessão em serviços acessíveis pelo
protocolo SOAP.
Existem alguns requisitos para que a interface de chamada dos serviços, que é definida em
um arquivo WSDL, possa ser criada partindo-se de um EJB. Primeiramente esse EJB deve estar
inserido em um projeto web J2EE. Como criamos o EJB juntamente com o projeto
WebControlFin, isso já está definido. Depois, deve-se garantir que o Bean de sessão a ser
utilizado, que no nosso caso será a classe ControleFinUI, é independente do estado da aplicação,
SOA, para que ao consumir os serviços, o cliente não precise se preocupar com a seqüência das
requisições.
do assistente de criação do mesmo pode ser observada na Figura 8. Escolhe-se como tipo do
serviço o item “De baixo para cima Serviço da Web” e indica-se a classe EJB com os métodos.
35
Existem outras opções, mas usa-se esta para criar os serviços partindo-se de um EJB. Pode-se
Solicita-se ao assistente que ele crie testes para os serviços e também um cliente, que será
WebService que tem a extensão WSDL. Neste arquivo ficam gravados a estrutura dos serviços,
seus parâmetros e tipos aceitos, bem como os tipos de retorno. Aplicações cliente precisam usar
serviço Web gerado, quando do cliente do serviço, que recebeu no nome automático de
Finalizando, utiliza-se a ferramenta RSA para distribuir a aplicação J2EE que contém o
serviços e mostrando as respostas obtidas. Utiliza a interface Web criada pelo assistente de
38
criação de serviços web, de maneira simples, porém funcional, satisfazendo assim o requisito do
A aplicação J2EE criada para ser cliente do projeto de controle financeiro é um sistema
simples, mas que exemplifica claramente o uso dos serviços à disposição. O cliente foi instalado
no mesmo servidor Websphere® onde está o provedor de serviços do controle financeiro pessoal,
mas nada impede que as requisições sejam feitas via internet, deixando cada aplicação em uma
máquina específica, onde o cliente deve conseguir acessar o serviço em um endereço válido.
parte esquerda tem-se uma lista com os serviços disponíveis, a parte central fica com os
formulários para preenchimento dos valores dos parâmetros do serviço escolhido e no quadro
inferior, as respostas das requisições. Ainda na Figura 11 nota-se que foi invocado o serviço de
inválidos.
O consumo dos serviços pode ser feito por qualquer aplicativo que reconheça os arquivos
de descrição WSDL e que possam enviar mensagens XML através da internet pelo protocolo
http. Apesar de ser comum o uso de clientes em formato de websites, ferramentas para construção
de aplicativos desktop, como Delphi® e Microsoft® Visual Studio®, podem importar arquivos
O estudo de caso apresentado neste capítulo serviu para exemplificar o uso dos conceitos
RSA, que se mostrou um excelente produto para que fábricas de software apliquem as técnicas
MDA em seus projetos, codificando aplicações na plataforma Java ou C++. A integração com
outros produtos da IBM também merece destaque, como a preparação de distribuições para o
aplicativo em uma arquitetura SOA, publicando serviços com o assistente da ferramenta RSA e
40
exemplificou-se o consumo das funcionalidades por meio de uma página Web, de outro projeto
J2EE.
O desenvolvimento orientado a modelos está se tornando cada vez mais uma forma viável
para a construção de aplicativos onde se reduz o tempo gasto com implementações, para que o
foco do projeto possa estar na obtenção de requisitos, documentações e teste do sistema. Assim, o
Menciona-se também o fato de ferramentas MDA possibilitarem que um mesmo modelo seja
fim de tornar os sistemas escaláveis e de fácil manutenção. Sistemas complexos podem ser
arquitetura de serviços (SOA) é aplicável em projetos reais, não importando seu tamanho ou sua
Objects® ArcStyler™, que provêem essa metodologia de forma a obter o máximo de resultado
41
na a aplicação dos conceitos. Apenas algumas incorporam funções de modelagem, mas todas
Como trabalhos futuros, sugerem-se estudos com exemplos feitos em outras ferramentas
Referências
Stakeholders Using Viewpoints and Perspectives. 1ed. Boston: Addison Wesley, 2005. 576p
BROWN, Alan W. et al. SOA Development Using the IBM Rational Software