VII ESCOLA REGIONAL DE INFORMÁTICA SÃO PAULO/OESTE DESENVOLVIMENTO DE SISTEMAS SENSÍVEIS AO CONTEXTO USANDO WEB SERVICES Carlos Eduardo Cirilo Alexandre Bellini Antonio Francisco do Prado Luciana Aparecida Martinez Zaina PPGCC/DC - UFSCar Grupo de Engenharia de Software 08/06/2010 AGENDA Introdução Sistemas Sensíveis ao Contexto (SSCs) Contexto Computacional Arquitetura de um SSC Exemplos de SSCs Arquitetura Orientada a Serviços (SOA) SOA: Definição SOA e os Web Services Classificação de Serviços Principais padrões utilizados pelos Web Services Composição de Web Services Estudo de Caso Considerações Finais ERI-SPO 2010 2 08/06/2010 3 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços INTRODUÇÃO Estudo de Caso Considerações Finais ERI-SPO 2010 08/06/2010 INTRODUÇÃO Marcos na evolução da Computação Mainframes Ambientes Distribuídos PCs Computação Ubíqua / Pervasiva Tempo ERI-SPO 2010 4 08/06/2010 INTRODUÇÃO Era da Computação Ubíqua ERI-SPO 2010 5 08/06/2010 6 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços SISTEMAS SENSÍVEIS AO CONTEXTO Estudo de Caso Considerações Finais ERI-SPO 2010 08/06/2010 SISTEMAS SENSÍVEIS AO CONTEXTO Sensibilidade ao contexto: Adaptação da aplicação conforme sua localização de uso, as pessoas ou objetos circundantes SSCs: Adaptam suas operações informações/serviços relevantes fornecendo Consideram informações extraídas do contexto da interação ERI-SPO 2010 7 08/06/2010 SISTEMAS SENSÍVEIS AO CONTEXTO O contexto permite: Refinar as informações informações relevantes disponíveis em Escolher ações apropriadas a partir de uma lista de possibilidades Determinar a melhor forma de disponibilizar a informação ERI-SPO 2010 8 08/06/2010 SISTEMAS SENSÍVEIS AO CONTEXTO Desenvolvimento de SSCs: Que tipo de informação pode ser considerado como contexto? Como representar essa informação? Como adquirir e processar essa informação uma vez que pode ser oriunda de fontes heterogêneas? Como integrar o uso do contexto no sistema? ERI-SPO 2010 9 08/06/2010 CONTEXTO COMPUTACIONAL Mais de 150 definições (Bazire e Brézillon, 2005) Contexto: “condições inter-relacionadas nas quais alguma coisa existe ou ocorre” (Merriam-Webster Dictionary) “qualquer informação que pode ser usada para caracterizar a situação de uma entidade” (Dey, 2001) “conjunto de condições relevantes e influências que possibilitam a compreensão de uma situação” (Brézillon, 1999) ERI-SPO 2010 10 08/06/2010 CONTEXTO COMPUTACIONAL Classificação do contexto de acordo com um foco de atenção (Brézillon e Pomerol, 1999) Foco: tarefa ou passo na resolução de um problema ou em uma tomada de decisão. Focos de Atenção Conhecimento Contextual Contexto Proceduralizado Conhecimento Externo ERI-SPO 2010 11 08/06/2010 CONTEXTO COMPUTACIONAL Distinção entre contexto e elemento contextual (Vieira; Tedesco; Salgado, 2009) Um elemento contextual (EC) é qualquer dado ou informação que permite caracterizar uma entidade em um domínio. O contexto de uma interação entre um agente (humano ou software) e uma aplicação, com foco em alguma tarefa, é o conjunto de ECs instanciados que são necessários para apoiar a tarefa a ser executada. ERI-SPO 2010 12 08/06/2010 ARQUITETURA DE UM SSC Influência do método de aquisição dos elementos contextuais Acesso Direto Aplicação Fontes de Contexto Infraestrutura Intermediária Aplicação Servidor de Contexto Servidor Aplicação 2 . . . Aplicação n Gerenciador de Contexto Fontes de Contexto Aplicação 1 Gerenciador de Contexto Fontes de Contexto ERI-SPO 2010 13 08/06/2010 ARQUITETURA DE UM SSC Arquitetura em Camadas (Santos, 2008) Gerenciador de Contexto Consumidores de Contexto Organiza os ECs e os disponibiliza através de uma interface pública Raciocina e interpreta os Ecs, colocando-os em um formato adequado para utilização Gerencia as fontes de contexto e recupera os ECs através de APIs Disseminação Processamento Aquisição Fontes de Contexto ERI-SPO 2010 14 08/06/2010 EXEMPLOS DE SSCS Questões associadas ao comportamento de SSCs: A informação é acessada através de múltiplos dispositivos heterogêneos; A aplicação segue o usuário em movimento; Os dispositivos interagem entre si; Algumas tarefas são executadas de forma autônoma; Dispositivos diferentes apresentam visões diferentes da mesma aplicação; O ambiente troca informações com os dispositivos e viceversa; e A aplicação responde a mudanças no ambiente. ERI-SPO 2010 15 08/06/2010 EXEMPLOS DE SSCS Guias Turísticos Móveis (Grün et al., 2008) Fornece informações e serviços baseados na localização e preferências do usuário ERI-SPO 2010 16 08/06/2010 EXEMPLOS DE SSCS Enhanced 911 ou E-911 (E9-1-1 Institute, 2010) Associa automaticamente o endereço físico do usuário ao número telefônico de uma chamada de emergência, direcionando-a para uma central de atendimento mais apropriada àquele endereço. As informações sobre o chamador e seu endereço são mostradas ao atendente imediatamente após a chegada da chamada ERI-SPO 2010 17 08/06/2010 EXEMPLOS DE SSCS Conference Assistant (Dey et al., 1999) Examina a agenda da conferência, os tópicos das apresentações, a localização dos participantes e seus interesses de pesquisa para sugerir as apresentações mais apropriadas. ERI-SPO 2010 18 08/06/2010 19 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços ARQUITETURA ORIENTADA A SERVIÇOS Estudo de Caso Considerações Finais ERI-SPO 2010 08/06/2010 ARQUITETURA ORIENTADA A SERVIÇOS ERI-SPO 2010 20 08/06/2010 ARQUITETURA ORIENTADA A SERVIÇOS Segundo Erl (2007), “A Arquitetura Orientada a Serviços é uma infraestrutura de aplicação na qual toda funcionalidade de negócio é construída com base em funções e processos individualizados, denominados serviços” Tecnologia da Informação Mundo do Negócios Fluxo de Trabalho Serviços Processos de Negócio ERI-SPO 2010 21 08/06/2010 ARQUITETURA ORIENTADA A SERVIÇOS Objetivos: Foco na melhoria e agilidade de negócios; Reutilização de componentes em forma de serviços; Alinhar a Tecnologia da Informação e as estratégias de negócio; e Integração das aplicações. ERI-SPO 2010 22 08/06/2010 ARQUITETURA ORIENTADA A SERVIÇOS Quando não utilizar SOA ? Desenvolver um sistema só com SOA; e A empresa só tem um sistema crítico. ERI-SPO 2010 23 08/06/2010 ARQUITETURA ORIENTADA A SERVIÇOS Vantagens no processo de desenvolvimento: Fraco Acoplamento Interoperabilidade Composição Reusabilidade Alto Grau de Granularidade Ubiquidade ERI-SPO 2010 24 08/06/2010 SERVIÇOS ERI-SPO 2010 25 08/06/2010 SERVIÇO Serviços Web são aplicações de negócio modulares; Nele é exposta a lógica de negócio em forma serviços sobre a Internet através de interfaces programáveis; e Utiliza de protocolos de Internet com o propósito de fornecer meios para buscar, assinar e acessar esses serviços. ERI-SPO 2010 26 08/06/2010 COMPUTAÇÃO ORIENTADA A SERVIÇOS Expedidor Motorista Contador “Faço entregas” “Atendo chamadas e organizo entregas” “Cuido da contabilidade” Entrega Rápida ERI-SPO 2010 27 08/06/2010 COMPUTAÇÃO ORIENTADA A SERVIÇOS Motorista ERI-SPO 2010 “Eu posso: Dirigir Preencher uma lista de mercadorias Receber pagamentos Etc...” 28 Entrega o Dirigir o SetLista o GetPagamento Etc.. 08/06/2010 COMPUTAÇÃO ORIENTADA A SERVIÇOS Serviços são: É uma função do sistema computacional construído de tal forma que possa ser facilmente vinculado a outros componentes de software; Encapsula uma função do negócio reutilizável; Independentes da implementação; ERI-SPO 2010 29 08/06/2010 COMPUTAÇÃO ORIENTADA A SERVIÇOS Serviços são: Fracamente interligados; Não existe herança ou dependência entre os serviços; Podem ser compostos e orquestrados em processos de negócio; e Expressa a visão de negócio da aplicação. ERI-SPO 2010 30 08/06/2010 SERVIÇO Exemplos: Processamento de um pagamento; Gerenciamento de clientes; Efetuar consultas de crédito; Verificar a disponibilidade de um produto em estoque; Etc... ERI-SPO 2010 31 08/06/2010 CLASSIFICAÇÃO DOS SERVIÇOS ERI-SPO 2010 32 08/06/2010 CLASSIFICAÇÃO DE SERVIÇOS Serviços de Utilidade; Serviços de Entidade; e Serviços de Tarefa. ERI-SPO 2010 33 08/06/2010 SERVIÇOS DE UTILIDADE Serviços que contém lógica independente de negócio, onde cada um deles provê uma funcionalidade de negócio; e Possui o papél de encapsular um “backend” ou um domínio do problema. Funcionalidades: Tratamento de exceções; Autenticação de usuários; e Etc... ERI-SPO 2010 34 08/06/2010 SERVIÇOS DE ENTIDADE Serviços relacionados às entidades envolvidas no negócio. Funcionalidades: Criar um cliente/produto/venda; Retornar o endereço de um cliente; Alterar o preço de um produto; e Etc... ERI-SPO 2010 35 08/06/2010 SERVIÇOS DE TAREFA Serviços responsáveis pelos processos específicos de cada negócio; Realiza tarefas de atividades mais genéricas; e Composição dos serviços entidade e utilidade. Funcionalidades: Análise de Vendas; Compra de produtos; e Etc... ERI-SPO 2010 36 08/06/2010 CLASSIFICAÇÃO DE SERVIÇOS Camada de abstração dos Serviços (adaptada de Erl, 2007) ERI-SPO 2010 37 08/06/2010 ABORDAGENS TOP-DOWN E BOTTOM-UP ERI-SPO 2010 38 08/06/2010 TOP-DOWN Processo de Negócio Serviços A Componentes ERI-SPO 2010 B 39 C Bibliotecas 08/06/2010 BOTTOM-UP Serviços A Aplicativos B Componentes C Bibliotecas mainframe ERI-SPO 2010 40 Sistemas legados 08/06/2010 COMPUTAÇÃO DISTRIBUÍDA Java RMI CORBA DCOM Uso do Serviço Servidor Cliente XML Publicação Consulta ao registro Registro Web Services ERI-SPO 2010 41 08/06/2010 PADRÕES UTILIZADOS PELOS WEB SERVICES ERI-SPO 2010 42 08/06/2010 SOAP Simple Object Access Protocol SOAP Provê um meio de comunicação entre aplicações com diferentes tecnologias; Protocolo básico de Web Services; Formato baseado em XML; Leve e simples para troca de informações estruturadas; Projetado para comunicação na internet; e Define o formato de cabeçalho e corpo de uma mensagem deWeb Services. ERI-SPO 2010 43 08/06/2010 SOAP <?xml version="1.0"Envelope encoding="UTF-8"?> Informações de header <soap:Envelope autenticação, block xmlns:soap="http://www.w3c.org/2003/05/soap=envelope roteamento "soap:encodingStyle="http://www.w3c.org/2003/05/soapblock encoding"> <soap:Header> </soap:Header> body O conteúdo da mensagem message <soap:Body> </soap:Body> </soap:Envelope> ERI-SPO 2010 44 08/06/2010 SOAP- HEADER <?xml version="1.0" encoding="UTF-8"?> Informações de controle da mensagem XML; e <soap:Envelope xmlns:soap="http://www.w3c.org/2003/05/soap=envelope" Segurança. soap:encodingStyle="http://www.w3c.org/2003/05/soap-encoding"> <soap:Header> <x:idAgente xmlns:m="http://xpto.org/teste" soap:mustUnderstand="true"> <x:codigo> 10 </x:codigo> </x:idAgente> </soap:Header> <soap:Body> </soap:Body> </soap:Envelope> ERI-SPO 2010 45 08/06/2010 SOAP BODY- Request <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3c.org/2003/05/soap=envelope" soap:encodingStyle="http://www.w3c.org/2003/05/soap-encoding"> <soap:Header> ... </soap:Header> <soap:Body> <c:transferir xmlns:c="http://www.oss.com.br"> <c:contaOrigem>123</c:contaOrigem> <c:contaDestino>456</c:contaDestino> <c:valor>250,00</c:valor> </c:transferir> </soap:Body> </soap:Envelope> ERI-SPO 2010 46 08/06/2010 SOAP BODY- Response <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3c.org/2003/05/soap=envelope" soap:encodingStyle="http://www.w3c.org/2003/05/soap-encoding"> <soap:Header> ... </soap:Header> <soap:Body> <c:transferirResponse xmlns:c="http://www.oss.com.br"> <c:sucesso>true</c:sucesso> <c:dataDisponibilidade>2007-08-08</c:dataDisponibilidade> <c:contaOrigem>123</c:contaOrigem> <c:contaDestino>456</c:contaDestino> <c:valor>250,00</c:valor> </c:transferirResponse> </soap:Body> </soap:Envelope> ERI-SPO 2010 47 08/06/2010 SOAP BODY - Fault <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3c.org/2003/05/soap=envelope" soap:encodingStyle="http://www.w3c.org/2003/05/soap-encoding"> <soap:Header>... </soap:Header> <soap:Body> <soap:Fault> <soap:Code> <soap:Value>soap:Sender</soap:Value> <soap:Subcode> <soap:Value>rpc:BadArguments</soap:Value> </soap:Subcode> </soap:Code> <soap:Reason> <soap:Text xml:lang="pt-BR">Sem saldo</soap:Text> </soap:Reason> <soap:Detail> <bc:erro xmlns:bc="http://oss.com.br/falha"> <bc:mensagem>Sem saldo na conta origem</bc:mensagem> </bc:erro> </soap:Detail> </soap:Fault> </soap:Body> </soap:Envelope> 48 08/06/2010 ERI-SPO 2010 WSDL Web Description interface Service Description Operation name Descreve a name documentação pattern Language input output e os detalhes técnicos dos Web Services; e infault outfault fault Formato baseado emname XML. binding name type Operation ref input output infault outfault fault ref service name interface ERI-SPO 2010 endpoint name binding 49 08/06/2010 WSDL <?xml version="1.0" encoding="utf-8"?> <description name="Emergency” ...> <types> ... </types> <interface name="Localization"> <fault name="faultLocalization" element="ghns:faultLocalization" /> <operation name="opNewLocalization" ....> <input messageLabel="In" element="ghns:inLocalization"> <output messageLabel="Out" element="ghns:returnLocalization"> <outfault ref="faultLocalization" messageLabel="statusOpNewLocalization"> </operation> <binding name="bindingLocalization“ interface="tns:Localization“ ... > <fault ref="faultLocalization" wsoap:code="soap:Sender" /> <operation ref="tns:opNewLocalization“ ... /> </binding> <fault ref="faultLocalization" wsoap:code="soap:Sender" /> <operation ref="tns:opNewLocalization“ .../> <service name="servLocalization" interface="tns:Localization"> <endpoint name=“teste” binding="tns:bindingLocalization“ address="http://200.19.98.1:8091/Hospital" /> </service> </description> ERI-SPO 2010 50 08/06/2010 UDDI Fornecer ao provedor os protocolos necessários para que os Web Services sejam registrados, descobertos e publicados na rede; Agência de registro de Web Services; Banco de Dados Web Services; e Utiliza SOAP para codificação das mensagens. ERI-SPO 2010 51 08/06/2010 COMPOSIÇÃO WEB SERVICES Coreografia Orquestração Orquestrador ERI-SPO 2010 52 08/06/2010 53 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços ESTUDO DE CASO Estudo de Caso Considerações Finais ERI-SPO 2010 08/06/2010 ESTUDO DE CASO Ambulance Space (Marcondes et al., 2010) ERI-SPO 2010 Positioning 54 System (ASPS) 08/06/2010 ESTUDO DE CASO Web Context Framework (WCF) ERI-SPO 2010 55 08/06/2010 ESTUDO DE CASO Adaptador de Conteúdo ERI-SPO 2010 56 08/06/2010 ESTUDO DE CASO Estratégias de Adaptação Adaptação Estática Adaptação Dinâmica Abordagem Híbrida + Contexto ERI-SPO 2010 57 08/06/2010 ESTUDO DE CASO Funcionamento do ContentAdapter ERI-SPO 2010 58 08/06/2010 ESTUDO DE CASO Demo ERI-SPO 2010 59 08/06/2010 DEMO JAX-WS Java API for XML Web Services Utiliza anotações para gerar a WSDL Faz parte do JDK 6.0 Anotações (JRS 181) @WebService: Indica que a classe é um Web Service; @WebMethod: Indica que o método anotado é uma função; e @WebParam: Permite o cliente referenciar os parametros do Web Service. ERI-SPO 2010 60 08/06/2010 61 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços CONSIDERAÇÕES FINAIS Estudo de Caso Considerações Finais ERI-SPO 2010 08/06/2010 CONSIDERAÇÕES FINAIS Agilidade no processo de desenvolvimento de SSCs: Reúso de serviços prontos Interoperabilidade: Diferentes dispositivos podem usufruir dos serviços providos Mapeamento de Processo de Negócio em TI ERI-SPO 2010 62 08/06/2010 Obrigado! Carlos E. Cirilo [email protected] @ducirilo Alexandre Bellini [email protected] @alexandredc Antonio F. Prado Luciana A. M. Zaina [email protected] [email protected] www.ges.dc.ufscar.br Grupo de Engenharia de Software 63 08/06/2010