desenvolvimento de componentes web services

Propaganda
Anais do 14O Encontro de Iniciação Científica e Pós-Graduação do ITA – XIV ENCITA / 2008
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 20 a 23, 2008.
DESENVOLVIMENTO DE COMPONENTES WEB SERVICES
DISPONIBILIZADOS POR MEIO DE WEB SERVERS
Cícero David Leite Oliveira
Instituto Tecnológico de Aeronáutica
Bolsista PIBIC-CNPq
Correio eletrônico: [email protected]
Prof. Dr. Adilson Marques da Cunha
Instituto Tecnológico de Aeronáutica
Correio eletrônico: [email protected]
Breno Lisi Romano
Instituto Tecnológico de Aeronáutica
Correio eletrônico: [email protected]
Diogo Branquinho Ramos
Instituto Tecnológico de Aeronáutica
Correio eletrônico: [email protected]
Resumo
A presente Pesquisa tem como objetivo dotar o Projeto Integrado de Cooperação Amazônica para a Modernização do
Monitoramento Hidrológico - ICA-MMH de componentes Web Services da Agencia Nacional de Água – ANA, com o intuito de
aumentar sua qualidade e reduzir os desperdícios de recursos envolvidos na disseminação e concentração do conhecimento
hidrológico.
O Projeto foi desenvolvido em duas etapas. Na Primeira foram estudados: o Processo Unificado da IBM-Rational (Rational
Unified Process – RUP), a Linguagem de Modelagem Unificada (Unified Modeling Language – UML), a eXtensible Markup
Language – XML, a aplicabilidade e desenvolvimento de componentes Web Services e suítes de desenvolvimento baseada nos
frameworks Java juntamente com seus Ambiente Integrados de Engenharia de Software Ajudada por Computador (Integrated
Computer Aided Software Engineering Environment – I-CASE-E). Na Segunda Etapa, realizou-se a Modelagem de Web Services,
contextualizado com o projeto ICA-MMH, utilizando as principais ferramentas pesquisadas na etapa anterior.
Ao final desta pesquisa e com base nos resultados obtidos, foi realizado com sucesso o treinamento e a capacitação nos
principais conceitos que envolvem componentes Web Services, bem como foi realizada com sucesso a implementação de um
sistema distribuído possuindo como componente central um Web Services rodando num cenário similar ao sistema de Componentes
Computacionais distribuídos do Projeto ICA-MMH.
Palavras chave: Web Services, SOAP, XML, SOA, WSDL
1.
Introdução
O tema da presente pesquisa teve origem na problemática existente na atual técnica de obtenção,
processamento e transmissão de dados a distância por parte da Agência Nacional de Águas - ANA para monitoramento
de variáveis hidrológicas em estações de interesse estratégico para a gestão de recursos hídricos.
O referido monitoramento é realizado utilizando-se a técnica conhecida como Telemetria, que se baseia no uso
de equipamentos automáticos para monitoramento de chuvas, níveis de rios e parâmetros sobre a qualidade das águas
para, em seguida, transmitir remotamente os dados coletados nas estações, por meio de canais de comunicação via
satélite disponibilizados pelo Instituto Nacional de Pesquisas Espaciais – INPE.
Ao longo das últimas duas décadas, este sistema tem se mostrado ineficiente, visto que comporta um pequeno
número de transmissões de dados efetivas. Além disso, a arquitetura dessa forma de comunicação (via estações
telemétricas, satélites e estações receptoras) não permite que as estações telemétricas sejam interrogadas por uma
central de operações para buscar dados em um determinado instante de interesse.
A falta de confiabilidade na transmissão horária dos dados pode prejudicar diretamente o uso de ferramentas
computacionais de controle de sua qualidade e dos respectivos sistemas que os disponibilizarão, como também dos
aplicativos de previsão de eventos hidrológicos críticos que necessitam de dados horários ou em períodos mais curtos.
Com o intuito de resolver a problemática existente, a ANA, propôs o desenvolvimento de um sistema
denominado Projeto Integrado de Cooperação Amazônica para Modernização do Monitoramento Hidrológico (ICAMMH). O objetivo geral deste Projeto é o desenvolvimento, para uma região hidrográfica de referência, de um sistemapiloto que contemple a modernização e integração de Pontos de Coleta Telemétrica de dados hidrológicos, como base
para a gestão de recursos hídricos. Assim, possibilita-se a disponibilização dos dados e informações, em tempo real,
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
para diferentes entidades governamentais e para a sociedade, como insumos para o desenvolvimento de estudos e a
tomada de decisões, principalmente, no campo econômico.
Desta forma, para completar com êxito o objetivo do Projeto ICA-MMH, far-se-á necessário lidar com
diversos componentes e aplicativos computacionais distribuídos em diversas estações situadas no Brasil e nos países
limítrofes.
Devido ao grau de complexidade no qual o Projeto encontra-se inserido, torna-se necessário a adoção de um
conjunto de metodologias bem definidas, por meio das quais todas as etapas do projeto possam ser concluídas da forma
esperada.
Destarte, decidiu-se por utilizar o RUP como processo regente dos trabalhos. Este processo oferece uma
abordagem baseada em Disciplinas, atribuindo tarefas e responsabilidades, dentro de uma organização de
desenvolvimento de software. A sua meta é garantir a produção de Softwares de alta qualidade, que atendam às
necessidades dos usuários, dentro de Cronogramas e Orçamentos previsíveis.
Uma vez definidos o processo e a notação para o desenvolvimento do Projeto, a investigação das tecnologias
supra citadas resultou na escolha das Ferramentas Sun Java para desenvolvimento de Web Services e IBM Rational Rose
Professional Data Modeler Edition, como parte integrante da Suíte IBM Rational.
O foco da presente pesquisa consistiu em realizar um estudo teórico e prático da tecnologia de Web Services,
analisando-se as ferramentas necessárias e de auxílio ao desenvolvimento de sistemas compostos por elementos dessa
tecnologia. Assim, focou-se no estudo de ambientes de desenvolvimento, servidores web, linguagem de programação,
frameworks, sistemas gerenciadores de banco de dados, entre outros.
2.
Resultados Obtidos
A presente pesquisa teve seus estudos divididos em duas etapas. A primeira etapa consistiu na capacitação do
bolsista, realizando-se uma revisão bibliográfica dos temas relacionada ao desenvolvimento de componentes Web
Services. A segunda etapa consistiu na realização de um estudo de caso, no qual foi desenvolvido um sistema
distribuído tendo como um web service o componente central.
2.1. Etapa de Capacitação
Na etapa inicial do projeto, realizou-se um estudo dos processos e das tecnologias empregadas no
desenvolvimento de software composto por web services. A capacitação foi iniciada com o estudo e a pesquisa do
Processo Unificado da Rational - RUP, assim como a sua aplicabilidade no contexto do Projeto ICA-MMH e dos
padrões UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) e XML (Extensible Markup
Language ou Linguagem de Marcação Extensível). Em seguida, foram estudados os temas diretamente relacionados
com web services:
• Protocolo de Acesso a Objetos Simples (Simple Object Access Protocol -SOAP);
• Linguagem de Descrição de Web Services (Web Services Description Language - WSDL);
• Tecnologias empregadas em sistemas compostos por Web Services (Apache e MySQL); e
• Ferramentas de auxílio ao desenvolvimento de Web Services (NetBeans IDE e Hibernate).
Antes de iniciar o estudo sobre o RUP, foi necessário rever o conceito de processo de desenvolvimento de
software. Este processo consiste de um conjunto de atividades previamente definidas com o intuito de obter um
software com qualidade e o cumprimento dos prazos garantido.
O RUP é um processo de desenvolvimento de software criado pela Rational Software Corporation. Empregado
em projetos que possuam uma abordagem de orientação a objetos, utilizando a UML para documentar e projetar as
ações envolvidas no processo [1].
Apesar de ser considerado um processo preferencialmente aplicável em grandes projetos, o RUP pode ser
facilmente adaptado e empregado em projetos menores. A Figura 1, a seguir ilustra as fases definidas no RUP
Figura 1. Arquitetura Geral do RUP [1].
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
Esta Figura mostra o volume de trabalho exigido para uma das Disciplinas do RUP: Modelagem de negócio;
Requisitos; Análise e Design; Implementação e Teste; Implantação; Gerenciamento de Configuração e Mudança;
Gerenciamento de Projeto; e Ambiente, distribuídas de forma iterativa e incremental pelas quatro Fases do RUP,
conforme descrito em seguida [1].
Após o estudo do RUP, foi realizada a pesquisa sobre UML, que consiste em uma linguagem visual utilizada
para modelar sistemas de software desenvolvidos com orientação a objetos, auxiliando os engenheiros de software a
definir características do sistema tais como seus requisitos, seu comportamento e sua estrutura lógica.
A UML compõe-se de diversos Diagramas que têm por objetivo fornecer múltiplas visões do sistema. Cada
Diagrama propicia enriquecer uma análise sob uma determinada ótica. Alguns enfocam o sistema de uma forma mais
geral, apresentando sua visão externa. Outros fornecem uma visão mais profunda, considerando-se que um software
pode ser desenvolvido em camadas, apresentando um enfoque mais técnico [2].
Os Diagramas da UML 2.0 dividem-se em: Diagramas Estruturais e Comportamentais, conforme
apresentado na Figura 2 a seguir.
Figura 2. Diagramas da UML [3]
Nesta pesquisa, fez-se necessária a utilização de somente três tipos de Diagramas: de Casos de Uso, de
Classes e de Seqüência. Em virtude do objeto central da pesquisa não ser a modelagem, mas sim o desenvolvimento de
Web Services, a UML será utilizada nesta pesquisa apenas como uma ferramenta auxiliar, o que dispensa o estudo dos
demais diagramas. Os diagramas utilizados serão apresentados numa seqüência lógica e construídos com a utilização de
ferramentas de Engenharia de Software Auxiliada por Computador (Computer Aided Software Engineering - CASE).
O Diagrama de Caso de Uso possibilita a compreensão do comportamento externo ao sistema, apresentando-o
por meio de uma perspectiva do usuário. Ele é utilizado logo no início do desenvolvimento do projeto, nas fases de
Levantamento e Análise de Requisitos, onde são definidos as funções e os serviços que o sistema deverá oferecer aos
usuários. O Diagrama de Caso de Uso identifica os tipos de usuários que irão interagir com o sistema, seus papéis e
funções requisitadas.
O Diagrama de Classes exibe a estrutura estática das classes de um sistema, sendo responsável pela definição
dos relacionamentos entre as classes do sistema, permitindo também apresentar a forma como são implementados os
paradigmas da orientação a objetos, como por exemplo, herança.
Para mostrar a colaboração dinâmica entre os vários objetos de um sistema é utilizado o Diagrama de
Seqüência, que exibe de forma sistemática a seqüência de mensagens trocadas entre os objetos em cada ponto
específico da execução do sistema.
Finalizado o estudo sobre UML, iniciou-se a pesquisa da tecnologia XML, que é um formato padrão de texto
criado pelo Word Wide Web Consortium – W3C, em meados de 1998, e utilizado para intercâmbio de uma variedade de
dados na Web. Esse padrão surgiu com o intuito de facilitar a troca de informações entre sistemas de vários ambientes,
em virtude da sua universalidade. Os programadores podem usar diferentes sistemas operacionais e linguagens de
programação e possuir seus softwares comunicando-se entre si, de maneira ininterrupta. Assim, esta tecnologia vem se
tornando a principal linguagem para troca de informação financeira entre empresas na Internet. Muitas aplicações
interessantes de Business to Business – B2B vêm sendo desenvolvidas baseando-se na XML [6].
Após realizar o estudo sobre os padrões e processos aplicados no desenvolvimento de sistemas distribuídos, foi
iniciado o estudo sobre os temas relacionados diretamente à componentes web services.
A tecnologia de Web Services tem por objetivo permitir que aplicações de diferentes plataformas se
comuniquem, podendo oferecer recursos para utilização, via Internet, de classes e métodos remotos. O conteúdo
transmitido pode ser processado e exibido em uma página web, aplicação desktop ou até mesmo em dispositivos
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
móveis. A interoperabilidade desta tecnologia torna-se viável devido à utilização de XML, como formato de dados
utilizado para o transporte das informações trocadas.
Para tornar possível a utilização de Web Services, cliente e servidor devem conhecer o serviço disponibilizado
e o procedimento para sua obtenção. Para isso, criam-se documentos em XML, o WSDL, que padronizam uma estrutura
de apresentação do Web Service, para que suas características possam ser identificadas pelos diversos atores do sistema
[5].
A WSDL é uma linguagem utilizada para descrever Web Services, definida pelo W3C, fornecendo
especificações da interface do Web Service, o que cada serviço faz e como invocá-los. Sendo assim, a máquina que irá
solicitar o serviço oferecido poderá obter conhecimento do formato das mensagens a serem enviadas e recebidas pelo
servidor, através de documentos WSDL que, assim como os protocolos SOAP, também são escritos em XML.
Outra característica positiva desta tecnologia de web services está na troca de dados que se baseia no
protocolo SOAP, que também utiliza a XML. A utilização do SOAP contribui para a interoperabilidade dos Web
Services devido ao fato de ser aberto, possibilitando que diversas plataformas o interprete.
O protocolo SOAP consiste de um padrão desenvolvido em 1999, como uma recomendação do W3C, com o
intuito de facilitar o desenvolvimento de aplicações distribuídas que necessitem de interação com diversas plataformas.
Em sistemas que utilizam Web Services, faz-se necessária a troca de dados, via web, para que o cliente possa ter acesso
ao serviço disponibilizado. O SOAP é um protocolo leve que viabiliza a troca de dados em XML, entre o cliente e o
Web Service, funcionando como um envelopamento de um documento em XML para que este possa ser transmitido
pela Web.
Antes de iniciar o desenvolvimento de sistemas que utilizam Web Services, faz-se necessário analisar as
ferramentas essenciais ao suporte, que facilitam o desenvolvimento e a utilização desta tecnologia, como APIs,
Frameworks, Ambientes, Servidores, entre outros [8].
Quando se trata de aplicações Web, as tecnologias Java to Enterprise Edition – J2EE da Sun Microsystems e a
plataforma .NET da Microsoft surgem como as melhores opções para o desenvolvedor. Ambas compatíveis com os
principais padrões relacionados à Web Services, entre eles SOAP e WSDL.
A tecnologia Java, desde sua criação, segue o ideal de se trabalhar com soluções e sistemas abertos,
enriquecidos por comunidades de desenvolvedores. Aliada a arquitetura de máquinas virtuais (Java Virtual Machine JVM), essa tecnologia permite compilar os programas, sem alterações a serem executados em diversos equipamentos,
plataformas ou sistemas operacionais. Já a plataforma.NET não possuía essa característica até pouco tempo atrás,
quando essencialmente era direcionada ao sistema operacional Windows e ao mundo dos computadores.
Outra vantagem do J2EE é a existência de mais conteúdo de aprendizado (livros, artigos e tutoriais)
disponíveis e mais desenvolvedores capacitados nela, em comparação com a da plataforma .NET.
Assim, nesta pesquisa decidiu-se pela utilização da tecnologia J2EE em virtude das vantagens anteriormente
mencionadas, além do fato de, ao contrário da .NET, ela se encontrar gratuitamente disponibilizada no portal da Sun
Microsystems.
Depois de escolhida a tecnologia de desenvolvimento, faz-se necessário decidir sobre quais servidores web e
contêineres de Web Services serão utilizados. A seguir, encontra-se uma descrição das duas ferramentas mais difundidas
para Web Services:
• Jakarta Tomcat + AXIS - O Jakarta Tomcat é um servidor web com suporte para HTML, JSP e Servlets.
Como ele não possui suporte nativo para web services faz-se necessário o uso do AXIS. O AXIS é uma
implementação do protocolo SOAP e de um Framework para a construção de SOAP processors (clientes,
serviços, gateways, etc) que permite ao Jakarta Tomcat disponibilizar web services. O AXIS permite a
execução e o deployment de web services, bem como a criação de clientes que os consumam;
• Sun Java System Application Server - consiste de um servidor robusto de aplicativos J2EE, derivado de um
projeto open source chamado GlassFish, com a adição de características que permitem aos desenvolvedores
um deployment rápido e seguro de web services e aplicativos Web [4].
Em se tratando de desenvolvimento de software, é importante utilizar um Ambiente Integrado de
Desenvolvimento (Integrated Development Environment – IDE), que consiste num software que reúne características e
ferramentas de apoio ao desenvolvimento de sistemas de computados com o objetivo de agilizar este processo.
Os IDEs mais recomendados para o desenvolvimento em Java são: o Eclipse; e o NetBeans. Ambos possuem
suporte para Frameworks de testes, servidores web, monitoramento de aplicações, entre outras ferramentas. O IDE
NetBeans 6.1 foi definido como ambiente de desenvolvimento dos aplicativos na presente pesquisa, em virtude de
possuir um suporte mais avançado ao desenvolvimento de web services, bem como uma melhor documentação.
Para iniciar a criação de um Web Service e um cliente utilizando J2EE é necessário conhecer e efetuar a
instalação de alguns componentes. O principal deles é o Pacote de Desenvolvimento de Web Service em Java
denominado Java Web Service Developer Pack – JWSDP.
Ele é um pacote desenvolvido pela SUN Microsystems e constituído por um conjunto de aplicações que
permitem construir, testar e distribuir aplicativos em XML, Web Services e aplicações Web. Este pacote é constituído
por diversas APIs, entre elas: JAXR, JAX-RPC e SAAJ, APIs relacionadas ao desenvolvimento de Web Services. Este
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
pacote reúne as tecnologias necessárias para desenvolvimento e a distribuição de Web Services em todo o ciclo de
desenvolvimento e encontra-se disponibilizado gratuitamente no portal oficial da Sun Microsystems.
A API JAX-RPC é responsável por auxiliar a construção de Web Service, baseando-se no modelo de
comunicação RPC, permitindo a geração de infra-estrutura de comunicação entre as aplicações cliente e servidor. Esta
API possui um alto nível de abstração sobre o envelope SOAP, ou seja, o documento é gerado automaticamente pela
API, não precisando ser manipulado.
O SAAJ, um SOAP with attachments API for JAVA, consiste de um módulo ou conjunto de APIs para
manipulação de envelopes SOAP, permitindo a comunicação baseada em eventos e em RPC.
A API JAXR, uma Java API for XML Registries, oferece uma forma de acesso a registros de negócios na
Internet que podem ser baseados em padrões abertos do tipo ebXML ou especificações de consórcios de empresas como
a UDDI, possibilitando o acesso uniforme a diferentes sistemas de registro de serviços baseados em XML.
Para esta pesquisa também se fez necessária à instalação do Java Development Kit (JDK) e do Sun Application
Server. Todas essas três ferramentas (JWSDK, JDK e Sun Application Server) encontram-se disponíveis, gratuitamente,
no portal oficial da Sun Microsystems.
Depois de instalados e configurados os pacotes anteriormente citados, pôde-se iniciar a capacitação para a
criação de Web Services e clientes, utilizando-se o NetBeans IDE 5.5.1. Para tanto, foram estudados artigos
disponibilizados no portal oficial do NetBeans que possibilitaram uma capacitação inicial ao desenvolvedor que não
possuía prática no desenvolvimento de Web Services.
Uma característica inerente dos sistemas distribuídos e aplicativos web em geral é a utilização de um Banco de
Dados como componente fundamental. O MySQL consiste de um Sistema Gerenciador de Banco de Dados Relacional
(SGBD Relacional), que possibilita o processamento, armazenamento e consulta às informações contidas no banco de
dados. A característica relacional inerente a esse SGBD decorre do fato de que o sistema armazena os dados sob a
forma de tabelas que possuem relacionamentos entre si, e não utilizam uma abordagem orientada a objetos [7].
O MySQL constitui o SGBD mais utilizado no mundo, principalmente por ser open source, rápido, confiável e
de fácil utilização. Essa tecnologia, originalmente desenvolvida para lidar com grandes bancos de dados de forma mais
rápida que as soluções existentes, também é usada em ambientes de produção com alta demanda, por diversos anos, de
maneira bem sucedida.
O SGBD MySQL utiliza a SQL (Structured Query Language ou Linguagem de Consulta Estruturada) como
uma linguagem de pesquisa declarativa. A SQL constitui-se de uma linguagem simples e de fácil uso. Por este motivo,
considerada como padrão mais utilizado nos banco de dados existentes. Esta linguagem possui, como principal
característica, a forma como se constrói uma declaração, que ao invés de especificar o caminho para se chegar a
determinada informação, especifica a forma do resultado.
A escolha do MySQL como SGBD para o sistema desenvolvido na presente pesquisa realizou-se tomando-se
por base as características mostradas anteriormente e a interoperabilidade inerente a esta tecnologia. O MySQL possui
compatibilidade com diversas plataformas tais como Windows, Linux, OS2, entre outras, com acesso por aplicativos
desenvolvidos em diferentes linguagens de programação, proporcionando ao sistema desenvolvido maior flexibilidade e
controle. Assim, o MySQL adapta-se perfeitamente ao contexto de sistemas distribuídos, com arquitetura SOA, por
meio da utilização de web services.
O sistema desenvolvido na presente pesquisa apresenta em seu escopo a manipulação de um conjunto de dados
persistentes. O termo “persistência”, no universo do desenvolvimento de software, consiste na capacidade de manter
dados entre diversas execuções do aplicativo. Isso é realizado através do armazenamento dos dados não-voláteis por
meio da utilização de um Banco de Dados Relacional e de um SGBD.
A maior parte dos aplicativos desenvolvidos atualmente utiliza linguagem orientada a objetos, entretanto, a
tecnologia de Banco de Dados Orientado a Objetos não se encontra tão desenvolvida e possui pouca difusão. Este fato
gera uma incompatibilidade entre a lógica programacional do aplicativo e a forma de manipulação das informações do
banco de dados relacional. Para resolver esta problemática, desenvolveu-se a técnica do Mapeamento Objeto Relacional
(Object Relational Mapping - ORM), que permite tratar as tabelas do banco de dados como classes da orientação objeto.
O Hibernate surgiu como um poderoso framework para a implementação do Mapeamento Objeto Relacional,
representando hoje uma das ferramentas de persistência mais utilizadas por programadores da linguagem Java. A
utilização dela torna o sistema portável para qualquer Sistema de Banco de Dados, porém, resulta no aumento do tempo
de execução do aplicativo [8].
A manipulação de dados no banco de dados por meio do Hibernate utiliza-se de comandos SQL ou de uma
linguagem semelhante, porém, própria do framework: a Linguagem de Consulta Hibernate (Hibernate Query Language
- HQL) [9]. Ao contrário da SQL, esta linguagem possui uma abordagem totalmente orientada a objeto, permitindo a
implementação dos conceitos de herança, polimorfismo e encapsulamento. Em virtude disto, foi utilizado, neste
trabalho, a HQL como método para realizar consultas ao Banco de Dados.
2.2. Etapa de Realização do Estudo de Caso
2.2.1. Introdução
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
Após efetuarmos toda a revisão bibliográfica inicialmente definida na proposta de pesquisa, bem como o estudo das
tecnologias MySQL e Hibernate, chegou-se ao final da fase de capacitação, possibilitando iniciar-se a etapa do estudo
de caso.
O objetivo desta fase da pesquisa é desenvolver um sistema computacional contextualizado com o Projeto
ICA-MMH da ANA que utilize a implementação de web services em seu escopo, possibilitando uma análise funcional
prática do objeto central da presente pesquisa.
O escopo do projeto desenvolvido, a partir de uma análise básica da arquitetura do projeto ICA-MMH,
apresenta o fluxo dos dados mostrado na Figura 3.
Figura 3. Estrutura do Projeto ICA-MMH
As plataformas de coleta de dados – PCD adquirem dados hidrometeorológicos e os enviam vias satélites,
celulares ou radio-freqüência para o Sistema de Aquisição de Dados – SAD, o qual se responsabiliza por receber os
dados de órgãos externos. Cada órgão envia seus dados em seu formato proprietário.
Depois de coletados, os dados passam pelo Sistema de Tratamento de Dados - STD, que define seus domínios,
utilizando filtros para procurar e localizar exceções, para poder persisti-los no Banco de Dados Hidrometeorológico BDH, presente no SBD.
O SBD, por sua vez, possui toda modelagem e regras de negócio definidas para permitir a persistência dos
dados no Banco de Dados.
Com os dados já tratados e persistidos, pode-se realizar o monitoramento e o controle de condições
hidrometeorológicas por meio do Sistema de Monitoramento, Controle e Apoio à Decisão – SMCAD, a fim de apoiar a
decisão das entidades nacionais e internacionais, com a difusão destas informações por meio do Sistema de Difusão de
Dados – SDD.
Para o estudo de caso da presente pesquisa, ter-se-á o SAD recebendo dados de órgãos externos por meio de
um web service, que disponibiliza alguns métodos predefinidos para que esses órgãos possam enviar os seus dados ao
sistema. O SAD recebe os dados e os persiste no Banco de Dados Hidrometeorológico.
No SDD, haverá um web service que disponibiliza serviços de acesso aos dados do Banco de Dados
Hidrometeorológico para usuários externos. Faz-se necessário ressaltar que o SDD não fornece apenas aplicações web,
mas também aplicações desktop. Entretanto, na presente pesquisa, desenvolveu-se somente um aplicativo desktop com
interface por meio de console, visto que o foco do estudo foi o componente Web Service.
Os dois subsistemas propostos para o estudo de caso foram divididos entre duas pesquisas de Iniciação
Científica. Na presente pesquisa desenvolveu-se somente o Sistema de Difusão de Dados – SDD, e em seguida
realizou-se a integração com o SAD, desenvolvido em outra pesquisa.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
2.2.2. Escopo
Após uma análise do Projeto ICA-MMH e definida a proposta para o desenvolvimento do estudo de caso,
idealizou-se uma estrutura para o sistema desenvolvido, ilustrado na figura 4.
Figura 4. Estrutura do projeto desenvolvido no estudo de caso.
Nesta estrutura, tem-se, como componente central, um banco de dados que se comunica com dois web
services: um que disponibiliza serviços de inserção de dados no sistema (Web Service de Coleta), e outro que
disponibiliza serviços de consulta aos dados (Web Service de Consulta). O primeiro comunica-se com um aplicativo
instalado nos Órgãos Externos e tem por função ler arquivos com os dados medidos e chamar os serviços do Web
Service de Coleta. Já o Web Service de Consulta disponibiliza seus métodos para um aplicativo cliente, que tem por
objetivo disponibilizar os dados coletados e armazenados no Banco de Dados.
Como citado anteriormente, na presente pesquisa implementou-se somente o SDD, que inclui o Servidor de
Banco de Dados, o Web Service de Consulta e o Aplicativo Cliente.
A etapa seguinte de definição do escopo do projeto consistiu em definirem-se os tipos de usuários que
interagem com o Aplicativo Cliente. Assim como o Projeto ICA-MMH, o sistema desenvolvido possui diferentes tipos
de usuários. Cada tipo possui um diferente nível de acesso aos dados hidrometereológicos. Definiram-se três tipos de
usuários:
1. Sociedade - usuários de menor nível de acesso, podendo somente acessar a tabela das medições realizadas em
uma data definida pelo usuário, contendo os campos data e hora, parâmetro medido, unidade, valor da medida
e a massa d´água;
2. Governamental - representa usuários de órgãos governamentais, não ligados diretamente à ANA. Este tipo de
usuário possui acesso à mesma classe de consulta que o usuário do tipo Sociedade, entretanto, ele pode
visualizar também os campos jurisdição e sub-bacia; e...
3. Agente da ANA - representa os usuários diretamente ligados à ANA e ao SAD. Ele possui acesso a consultas
de medições (com os mesmos campos do usuário governamental), de histórico das inserções dos pacotes de
medições (com os campos data e hora, formato do arquivo, órgão, jurisdição), e das estações de coleta.
Desta forma, tornou-se possível definir o diagrama de casos de uso mostrado na Figura 5.
Figura 5. Diagrama de casos de uso do estudo de caso.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
Após a definição dos casos de uso, ocorreu a modelagem do banco de dados do sistema. Visto que nesta etapa
o Projeto ICA-MMH já possuía o modelo lógico do banco de dados, utilizou-se este modelo como base para
desenvolver o modelo lógico do estudo de caso.
Considerando a extensão do Projeto ICA-MMH e o seu elevado número de entidades para o seu
desenvolvimento com completeza em um projeto de Iniciação Científica, escolheram-se apenas as principais entidades
e gerou-se uma modelagem reduzida do banco de dados para o estudo de caso, conforme ilustrado na Figura 6.
Figura 6. Modelagem do Banco de Dados.
A partir da modelagem lógica, pode-se observar que o banco de dados compõe-se de seis tabelas:
“OrgaoExterno”, “Historico”, “Medicao", “Equipamento”, “Unidade” e “Estacao”. A tabela “Medicao” contém os
dados centrais do sistema de consulta sendo consultada na maior parte dos casos de uso do sistema. Dependendo do tipo
de usuário do Aplicativo Cliente, ocorrerá acesso às informações das demais tabelas.
Dos relacionamentos contidos no modelo, pode-se também inferir a lógica de dados do sistema. Um órgão
externo responsabiliza-se pela inserção de dados na tabela “Medicao”. Cada vez que o órgão externo insere um
conjunto de dados no sistema, cria-se um histórico que mantém o elo entre o órgão e as medições, e também se
registram o formato do arquivo de entrada dos dados e a hora em que ocorreu a referida inserção. Assim, um órgão
externo pode possuir vários históricos, que por sua vez representa diferentes conjuntos de medições.
A tabela “Equipamento” contém as informações sobre todos os equipamentos que realizam as medições nas
estações. Assim, cada equipamento encontra-se relacionado com um conjunto de medições. A tabela “Unidade”
complementa os dados dos equipamentos, contendo informações sobre as unidades das grandezas medidas. Por último,
a tabela “Estacao” contém informações sobre todas as estações de coleta de dados, que podem possuir um ou mais
equipamentos de medição.
Após a modelagem do banco de dados, realizou-se o estudo das classes que representam as entidades
persistentes, gerando-se assim, o diagrama de classes exibido na Figura 7.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
Figura 7. Diagrama de Classes do estude de caso.
O diagrama de classes modelado possui semelhança com modelo do banco de dados. As relações entre as
classes apresentam-se semelhantes às relações entre as tabelas, e os atributos de cada classe referenciam as colunas da
tabela que os representam.
Os métodos contidos nas classes consistem basicamente em getter’s e setter’s (métodos que permitem acessar
e modificar os atributos do objeto, respectivamente) e os métodos “addClasse(parametro)”, utilizados na persistência
das relações entre as classes. Este último tipo de método faz parte do desenvolvimento do SAD, não implementado e
utilizado no SDD. Desta forma, não ocorrerá referência de tais métodos na presente pesquisa.
2.2.2. Desenvolvimento
Após a definição dos requisitos do sistema, da modelagem do banco de dados e das classes persistentes, pôdese dar início ao processo de desenvolvimento do sistema, gerando-se como resultado o código-fonte do projeto. Nesta
fase da pesquisa, utilizou-se, como principal ferramenta, o ambiente de desenvolvimento NetBeans IDE 6.1. Na sessão
4.6 do presente trabalho, relatou-se a utilização desta ferramenta, entretanto, na época de realização de seus estudos
iniciais, utilizou-se a versão 5.5. Com o lançamento do NetBean 6.1, resolveu-se utilizar esta versão mais recente em
virtude dela possuir uma interface mais amigável para o desenvolvimento de web services.
Antes de iniciar a criação do código-fonte, necessitou-se definir a arquitetura das camadas de classes utilizadas
no estudo de caso, dividindo-se em pacotes tanto as classes do projeto do Web Service de Consulta como do projeto do
cliente. Assim, definiu-se a arquitetura ilustrada na Figura 8.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
Figura 8. Arquitetura das camadas de classes.
O pacote “cbd” possui todas as classes persistentes, que representam as entidades do sistema. As classes deste
pacote encontram-se instanciadas por objetos das classes: Objeto de Acesso a Dados (Data Access Objetct - DAO) e
Objeto de Negócios (Business Object - BO). Os códigos-fonte destas classes são simples, contendo basicamente as
declarações de seus atributos e os métodos setter’s e getter’s. Depois de criadas essas classe, necessitou-se criar
também os arquivos de mapeamento, para possibilitar a utilização do Hibernate e a realização do mapeamento objeto
relacional.
As classes do pacote “DAO” interagem diretamente com o framework Hibernate, realizando buscas ao banco
de dados através de comandos HQL. Os métodos dos objetos dessas classes retornam uma lista dos objetos buscados no
banco de dados.
A estrutura da classe compõe-se basicamente de comandos de configuração e conexão com o MySQL,
necessários ao funcionamento do Hibernate. Estes comandos encontram-se localizados no constructor, onde se cria o
factory (objeto que configura e abre a conexão com o SGBD), e nos métodos, onde se realiza a abertura e o fechamento
da conexão com o MySQL.
O método “BuscaEstacaoXMassa”, além de executar os comandos necessário ao Hibernate, realiza uma
consulta ao banco de dados através de uma consulta (query HQL) e retorna uma lista (list) com os objetos resultantes da
busca que, neste caso específico, consiste de todas as estações que monitoram a massa d´água com valor igual ao do
parâmetro “massa”. A mesma estrutura utiliza-se para as demais classes do pacote “DAO”.
As classes do pacote “BO” responsabilizam-se por receber a lista de objetos resultantes da consulta ao banco
de dados, realizada pelo objeto “DAO”, e por criar uma cadeia de caracteres (String) sob a forma de tabela, com todos
os campos do resultado da busca.
O único método existente na classe realiza uma chamada ao método de busca da classe “DAO” correspondente,
guarda as informações da consulta em um objeto do tipo Iterator e percorre cada objeto da lista, adicionando, a cada
passo, as informações dos objetos a uma string sob a forma de tabela. O método tem como objeto de retorno esta string
utilizada pela classe do pacote “ws”.
O pacote “ws” contém somente uma classe denominada “WSConsulta”, cujos métodos retornam as chamadas
dos métodos das classes “BO”. Neste ponto do desenvolvimento do projeto, observou-se a utilidade do ambiente de
desenvolvimento NetBeans IDE 6.1, porque ele apresenta uma interface para a criação de métodos de web services. O
desenvolvedor adiciona operações à classe do web service, definindo o tipo de retorno e os parâmetros dos métodos, por
meio de uma interface gráfica do IDE, gerando automaticamente o código. O desenvolvedor necessita somente
adicionar o corpo do método que, no caso do projeto desenvolvido, consiste somente em chamada de métodos das
classes “BO”.
Depois de construídas todas as classes do aplicativo servidor e mapeadas todas as classes persistentes,
realizou-se a construção do projeto e efetuou-se o deployment. Assim, o web service foi disponibilizado, restando
apenas desenvolver-se o Aplicativo Cliente.
O Aplicativo Cliente foi desenvolvido de forma mais simples, visto que o foco da presente pesquisa
concentrou-se no desenvolvimento do web service. Assim, este componente constituiu-se por somente duas classes:
“AcessoWS”, do pacote Acesso ao Serviço Web (Web Service Access - WSA); e “Inicio” do pacote “IO”.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
A classe “AcessoWS” comunica-se com o web service, contendo assim comandos em seus métodos para se
conectar com os serviços. Neste ponto, utilizou-se também a ferramenta NetBeans IDE 6.1 para gerar automaticamente
parte do código. Para criar um cliente de um web service necessitou-se adicionar uma referência ao serviço. Quando
isto ocorreu, o NetBeans, automaticamente, analisou o WSDL do web service e identificou todos os serviços
disponíveis, listando-os na pasta “Referências a serviços web” da aba de navegação do projeto. Assim, quando se
desejou adicionar a uma classe uma chamada de serviço, bastou clicar-se no método desejado e arrastá-lo para o código
da classe. O NetBeans criou, automaticamente, os comandos de conexão e chamadas de serviço.
A classe “Início” realiza a interface com o usuário, implementando basicamente um controle de fluxo em
virtude dos diferentes tipos de usuários. Não se encontra detalhada, no presente artigo, uma explicação desta classe,
pois ela não possui peculiaridades associadas à utilização do web service, não representando assim parte do tema central
da pesquisa.
2.2.3. Testes
Antes de realizar os testes, definiu-se como distribuir os componentes do sistema, servidores e clientes, em
máquinas diferentes. Decidiu-se, então, deixar todos os componentes (Banco de Dados, Web Service Consulta, Web
Service Coleta e os dois aplicativos clientes) em diferentes máquinas, assim seria garantido que os testes validariam
todo o potencial do sistema desenvolvido.
Instalados os componentes nas diversas máquinas, iniciaram-se os testes com a execução do subsistema de
coleta de dados. Com o banco de dados populado, realizou-se os testes do subsistema de consulta. Vale ressaltar que o
aplicativo cliente não possui interface gráfica, utilizando o console do MS-DOS (Microsoft Disk Operating System)
como meio de entrada e saída de dados. Entretanto, nos testes, utilizou-se o console do próprio NetBeans, pois este
apresenta um maior número de caracteres por linha, facilitando a visualização dos resultados.
A escolha dos testes realizados foi feita de tal forma que fosse possível validar o funcionamento correto do
sistema para os três tipos de usuários e todos os casos de uso. Um dos testes tem resultado mostrado na figura 9.
Figura 9. Resultado do teste de usuário de nível de acesso baixo.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
No teste ilustrado, o usuário realizou o login no sistema, o qual detectou que este era do tipo “Sociedade”,
possuindo assim um nível de acesso baixo. Em seguida o sistema solicita que o usuário entre com a faixa de data que
deseja buscar os dados das medições. Inseriu-se então a faixa de tempo de 2008/08/04 08:22:00; até 2008/08/04
13:34:00. O sistema exibe como resultado todas as medições dentro da faixa estabelecida. Conferiu-se o resultado
obtido com os dados populados no banco de dados, verificando-se total coerência.
3.
Conclusões
Ao final deste trabalho, tendo-se em vista os resultados obtidos, observou-se o cumprimento fiel do
cronograma definido na sua proposta, o que possibilitou ao pesquisador efetuar sua capacitação nas tecnologias
envolvidas, bem como aplicá-las em um estudo de caso.
Através dos levantamentos bibliográficos e do projeto desenvolvido, tornou-se possível analisar e validar o
potencial da tecnologia Web Services, objeto central desta pesquisa, confirmando as suas características de
interoperabilidade e aplicabilidade como componentes essenciais de sistemas distribuídos.
Outro ponto importante que se pôde inferir a partir do estudo de caso foi a importância do uso de ambientes de
desenvolvimento e de frameworks, como o NetBeans IDE e o Hibernate, para o desenvolvimento de software. O uso
das ferramentas destes ambientes facilitou o desenvolvimento do projeto, tanto na fase de criação de código-fonte como
na de testes, reduzindo o tempo gasto para realizar o estudo de caso. No desenvolvimento de sistemas distribuídos
composto especificamente por web services, o ambiente de desenvolvimento NetBeans IDE mostrou-se eficiente para a
criação de tais componentes.
Para realização eficiente do projeto de estudo de caso desenvolveu-se: um Diagrama de Casos de Uso, um
Diagrama de Classes, um Diagrama de Arquitetura do Sistema, um Diagrama de Arquitetura de Camadas de Classes,
um Modelo de Banco de Dados, e produziu-se 1783 linhas de códigos-fonte, utilizando dos ambientes de ferramentas
IBM Rational Rose Professional Data Modeler Edition, NetBeans 6.1, Hibernate 3.2, Erwin Data Modeler e MySQL
Server 5.0.
Durante a realização desta pesquisa, constatou-se que o tema estudado possui ampla aplicabilidade, com
diversos pontos ainda a aprofundar. O que não foi possível realizar durante um ano de pesquisa, em virtude da
necessidade de um período de capacitação. Assim, recomenda-se que um estudo mais avançado da tecnologia de Web
Services constitua-se em objeto de pesquisa de outros trabalhos.
4.
Agradecimentos
O autor desta pesquisa agradece às pessoas envolvidas no Projeto e diretamente ligadas a ele, ao Prof. Dr.
Adilson Marques da Cunha e aos Alunos de Mestrado do ITA: Diogo Branquinho Ramos e Breno Lisi Romano. Até
este momento, essas pessoas deram-lhe a oportunidade de adquirir muitos conhecimentos na área de Engenharia de
Software, Sistemas Distribuídos, bem como Web Services e demais tecnologias relacionadas.
Agradece também ao CNPq, que vinculado ao Ministério da Ciência e Tecnologia (MCT), apóia a pesquisa
brasileira e contribui diretamente para a formação de jovens pesquisadores, investindo e promovendo no aumento da
produção de conhecimento e gerando novas oportunidades para universitários desejosos em iniciar uma vida de
pesquisa e desenvolvimento nas diversas áreas do conhecimento.
5.
Referências
[1] Portal Oficial do RUP: www136.ibm.com/developerworks/rational/products/rup. Acessado em 26/09/2007.
[2] GUEDES, Gilleanes T. A.: UML Uma Abordagem Prática; Editora Novatec, 3ª Ed., 2007.
[3] Site oficial da UML : www.uml.org. Acessado em 15/12/2007.
[4] Portal Oficial da Sun Microsystems: www.sun.com, acessado em 26/01/2008.
[5] SAMPAIO, Cleuton; SOA e Web Services em Java: Editora Braspot, 1º Ed., 2006.
[6] Extensible Markup Language (XML). World Wide Web Consortium. Disponível em <http: //www.w3.org/XML/>.
Acesso em 10/12/2007.
[7] MySQL 5.0 Refrerence Manual, endereço eletrônico: http://dev.mysql.com/doc/refman/5.0/en/index.html , acessado
em 20/02/2008.
[8] Site oficial do Hibernate: http://www.hibernate.org. Acessado em 15/04/2008.
[9] Hibernate em Ação: Christian Bahuer e Gavin King, 2005.
Download