Este trabalho da disciplina de Sistemas de Informação Distribuídos visava criar um sistema de recomendação de páginas web sobre saúde de acordo com o perfil do usuário. O sistema seria resultado da integração de módulos desenvolvidos por diferentes grupos da turma. Infelizmente não foi completamente implementado, ficando funcional apenas a integração com web services de terceiros.
1. Trabalho Final da Disciplina de
Sistemas de Informação Distribuídos
Mauricio Astiazara
Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS)
Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brasil
1. Introdução
O trabalho de pesquisa e implementação a ser realizado pelo grupo de alunos da disciplina de
Sistemas de Informação Distribuídos pretende definir um modelo de sistema de recomendação de
páginas sobre saúde de acordo com o perfil do usuário.
Neste sistema, o usuário tem acesso um mecanismo de busca que leva em consideração além dos
termos de pesquisa digitados pelo usuário, critérios mínimos de qualidade e reputação da página
web, evitando assim a apresentação de resultados sem embasamento científico, o que na área da
saúde pode levar a enganos fatais.
Outro diferencial em relação a sistemas de buscas tradicionais, seria o resultado da busca baseado
também no perfil do usuário, visando oferecer material adequado ao usuário, de acordo com as suas
capacidades, objetivos e até mesmo localização.
2. Organização
Para alcançar este modelo de sistema, o grupo identificou três áreas de pesquisa distintas. As áreas
são Perfil de Usuário, Reputação de Páginas e Recomendação de Páginas. Na área de Perfil de
Usuário seria pesquisado técnicas de como perfilar usuários do sistema e quais as informações
necessárias para isso, bem como qual a abordagem para obtenção destas informações. Em
Reputação de Páginas, foram vistas maneiras de identificar páginas com qualidade de conteúdo e
autoria na área da saúde. Já em Recomendação de Páginas, seria definia a lógica para oferecer
determinadas páginas para usuários com determinados perfis, visando a melhor adequação entre
eles.
Foi estipulado que cada uma destas áreas seria encapsulada em módulos independentes expondo
cada uma as suas funcionalidades através de web services. O sistema como um todo seria a
integração destes diversos web services. Com isso, foram definidas mais duas áreas com o objetivo
mais de apoio sendo elas Arquitetura de Sistema e Orquestração. A área de Arquitetura de Sistema
consiste na definição da infra-estrutura do projeto. A Orquestração realiza a integração dos diversos
web services como um serviço único oferecido ao usuário, por isso possui também a
responsabilidade da interface com o usuário. O grupo foi então dividido em duplas sendo cada uma
responsável pela pesquisa e desenvolvimento de uma área.
3. Orquestração e Interface com Usuário
Sendo os módulos de Perfil de Usuário, Reputação e Recomendação web services independentes, o
papel da Orquestração é utilizar estes serviços para fornecer ao usuário um serviço integrado de
busca e recomendação baseada no seu perfil. O usuário terá a percepção de estar utilizando um
único serviço, sem realmente ter conhecimento de que se trata da integração de diversos serviços.
2. Como definido pelo W3C (2010), web services fornecem um meio padrão de interoperação entre
diferentes aplicações de software rodando em uma variedade de plataformas e frameworks. Os web
services são caracterizados por sua grande interoperabilidade e extensibilidade, bem como por suas
descrições processáveis por máquina graças ao uso de XML. Eles podem ser combinados
livremente para obter operações complexas. Programas fornecendo serviços simples podem
interagir um com outros para fornecer sofisticados serviços de valor agregado.
Este módulo, além de se comunicar com os web services dos demais módulos, deve possuir uma
interface com o usuário. Esta interface com o usuário será um web site. A integração entre estes
elementos é ilustrada na figura 1.
Figura 1. Integração entre os elementos.
A tela será dividida basicamente em três áreas como explicado a seguir.
3. Figura 2. Layout da tela de pesquisa.
Perfil do Usuário: Conterá um formulário com os campos de dados necessários para o
perfilamento do usuário. O usuário deverá preencher esses campos para usufruir da recomendação.
Alternativamente, o usuário previamente registrado pode realizar login, não sendo necessário
preencher o formulário novamente.
Pesquisa: Uma simples caixa de texto onde o usuário pode digitar livremente os termos da sua
pesquisa como, por exemplo, "alzheimer sintomas".
Resultados: Lista de sites recomendados com base nos termos de pesquisa e no perfil do usuário. A
lista está ordenada pela adequação do site ao usuário, logo, o primeiro site é o mais recomendado
para o usuário.
Dentre as diversas linguagens de programação disponíveis atualmente para programação web, PHP
foi escolhida por ser Open Source e também por permitir o uso da infraestrutura de servidor web já
disponível aos alunos de pós-graduação do Instituto de Informática da UFRGS (Instituto de
Informática da UFRGS 2010). A única restrição desta infraestrutura é não disponibilizar acesso a
banco de dados (Wiki do Instituto de Informática da UFRGS 2010). A linguagem de programação
PHP possui uma extensão que pode ser usada para escrever servidores e clientes de SOAP. Ela
suporta os subconjuntos SOAP 1.1, SOAP 1.2 e as especificações do WSDL 1.1 (PHP Group 2010).
A classe SoapClient permite facilmente consumir web services através da indicação do endereço do
arquivo WSDL que descreve o serviço.
O grupo de Perfil de Usuário indicou que uma das informações necessárias seria a localização
geográfica do usuário. Foram então incluídos campos de país, Estado e cidade. Estes campos são
listas e seu conteúdo é fornecido pelo site Geonames.org. O Geonames.org é um banco de dados
geográfico disponível para download gratuitamente sob a licença Creative Commons (Creative
Commons 2010). Ele contém mais de 7 milhões de características únicas. Os dados são nomes de
lugares em vários idiomas, elevação, população e outros de várias fontes. Os dados são também
gratuitamente via Web Services REST. O site atende mais de 11 milhões de requisições de Web
Services por dia (Geonames.org 2010).
4. Web Services REST são Web Services que não utilizam o protocolo Soap. Em vez disso, a chamada
é uma requisição HTTP e a resposta é XML ou outra forma simples, como texto no formato CSV
(valores separados por vírgula) por exemplo (Wikipedia 2010). O objetivo é tornar a implementação
mais simples e a execução mais leve e escalável, com menos overhead.
Visando facilitar para o usuário o preenchimento dos campos de localização geográfica, foram
estudados serviços de determinação geográfica através do endereço IP. O site IPInfoDB oferece
vários serviços gratuitos baseados na geolocalização por endereço IP (IPInfoDB 2010). O
documentação da API é bem rica, possuindo inclusive exemplos em PHP. Este serviço foi utilizado
para automaticamente preencher os campos de dados geográficos para o usuário quando possível. O
endereço IP do visitante é passado como parâmetro e são retornadas informações geográficas até o
nível de cidade para a maioria dos casos.
O protótipo desenvolvido está disponível no endereço http://inf.ufrgs.br/~mvastiazara/sidist. O
código-fonte do protótipo está hospedado no site GitHub no endereço
http://github.com/astiazara/sidist e pode ser baixado livremente.
Conclusão
A não implementação dos web services dos demais grupos impossibilitou a integração destes
serviços no protótipo, ficando apenas a integração com os web services de terceiros relacionados à
Geolocalização. Mesmo assim foi valoroso pela experiência da integração de mais de um serviço
distribuído na web para compor um serviço maior oferecido ao usuário. O trabalho foi importante
também para o entendimento de que é factível um modelo de avaliação de qualidade de páginas
web sobre saúde segundo determinados critérios e técnicas, que posteriormente pode ser
implementado por sistema.
Referências
Creative Commons. (2010) "Creative Commons: Attribution 3.0 Unported",
http://creativecommons.org/licenses/by/3.0, Junho.
Geonames.org. (2010) "About Geonames", http://www.geonames.org/about.html, Junho.
IPInfoDB. (2010) "IP Info DB: Free IP address geolocation tools", http://ipinfodb.com, Junho.
Instituto de Informática da UFRGS. (2010) "Uso e Funcionamento da Rede",
http://www.inf.ufrgs.br/admrede/index.php?item=rede&subitem=paginasweb, Maio.
PHP Group. (2010) "PHP Manual: Introdução ao SOAP",
http://br2.php.net/manual/pt_BR/intro.soap.php, Junho.
W3C. (2010) "Web Services Activity Statement", http://www.w3.org/2002/ws/Activity, Maio.
5. Wiki do Instituto de Informática da UFRGS. (2010) "ConfigRede:Serviço de web",
https://wiki.inf.ufrgs.br/mediawiki/index.php/ConfigRede:Serviço_de_web, Maio.
Wikipedia. (2010) "REST", http://pt.wikipedia.org/wiki/REST, Junho.