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.