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
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
3 Introdução Sistemas Sensíveis ao Contexto Arquitetura Orientada a Serviços INTRODUÇÃO Estudo de Caso Considerações Finais ERI-SPO 2010
INTRODUÇÃO Marcos na evolução da Computação Mainframes PCs Ambientes Distribuídos Computação Ubíqua / Pervasiva Tempo ERI-SPO 2010 4
INTRODUÇÃO Era da Computação Ubíqua ERI-SPO 2010 5
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
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 fornecendo informações/serviços relevantes Consideram informações extraídas do contexto da interação ERI-SPO 2010 7
SISTEMAS SENSÍVEIS AO CONTEXTO O contexto permite: Refinar as informações disponíveis em informações relevantes Escolher ações apropriadas a partir de uma lista de possibilidades Determinar a melhor forma de disponibilizar a informação ERI-SPO 2010 8
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
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
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 Contexto Proceduralizado Conhecimento Contextual Conhecimento Externo ERI-SPO 2010 11
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
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 Gerenciador de Contexto Fontes de Contexto Servidor Servidor de Contexto Gerenciador de Contexto Aplicação 1 Aplicação 2. Aplicação n Fontes de Contexto ERI-SPO 2010 13
Gerenciador de Contexto ARQUITETURA DE UM SSC Arquitetura em Camadas (Santos, 2008) Consumidores de Contexto Disseminação Processamento Aquisição 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 Fontes de Contexto ERI-SPO 2010 14
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
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
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
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
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
ARQUITETURA ORIENTADA A SERVIÇOS ERI-SPO 2010 20
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 Mundo do Negócios Tecnologia da Informação Fluxo de Trabalho Processos de Negócio Serviços ERI-SPO 2010 21
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
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
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
SERVIÇOS ERI-SPO 2010 25
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
COMPUTAÇÃO ORIENTADA A SERVIÇOS Expedidor Motorista Contador Atendo chamadas e organizo entregas Faço entregas Cuido da contabilidade Entrega Rápida ERI-SPO 2010 27
COMPUTAÇÃO ORIENTADA A SERVIÇOS Motorista Eu posso: Dirigir Preencher uma lista de mercadorias Receber pagamentos Etc... Entrega o Dirigir o SetLista o GetPagamento Etc.. ERI-SPO 2010 28
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
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
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
CLASSIFICAÇÃO DOS SERVIÇOS ERI-SPO 2010 32
CLASSIFICAÇÃO DE SERVIÇOS Serviços de Utilidade; Serviços de Entidade; e Serviços de Tarefa. ERI-SPO 2010 33
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
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
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
CLASSIFICAÇÃO DE SERVIÇOS Camada de abstração dos Serviços (adaptada de Erl, 2007) ERI-SPO 2010 37
ABORDAGENS TOP-DOWN E BOTTOM-UP ERI-SPO 2010 38
TOP-DOWN Processo de Negócio Serviços A B C Componentes Bibliotecas ERI-SPO 2010 39
BOTTOM-UP Serviços A B C Aplicativos Componentes Bibliotecas mainframe Sistemas legados ERI-SPO 2010 40
COMPUTAÇÃO DISTRIBUÍDA Java RMI CORBA Cliente Uso do Serviço Servidor DCOM Web Services Consulta ao registro X M L Registro Publicação ERI-SPO 2010 41
PADRÕES UTILIZADOS PELOS WEB SERVICES ERI-SPO 2010 42
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
<?xml version="1.0" Envelope encoding="utf-8"?> Informações de <soap:envelope header autenticação, xmlns:soap="http://www.w3c.org/2003/05/soap=envelope roteamento block "soap:encodingstyle="http://www.w3c.org/2003/05/soapblock encoding"> <soap:header> </soap:header> <soap:body> </soap:body> </soap:envelope> body message SOAP O conteúdo da mensagem ERI-SPO 2010 44
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" soap:encodingstyle="http://www.w3c.org/2003/05/soap-encoding"> Segurança. <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
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
<?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> SOAP BODY- Response ERI-SPO 2010 47
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> ERI-SPO 2010 48
WSDL Web Service interface Description Language Descreve a documentação e os output pattern detalhes técnicos dos Web Services; e Description name Formato baseado em XML. binding name type Operation name fault name Operation ref input infault outfault input output infault outfault service name interface fault ref endpoint name binding ERI-SPO 2010 49
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
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
COMPOSIÇÃO WEB SERVICES Coreografia Orquestração Orquestrador ERI-SPO 2010 52
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
ESTUDO DE CASO Ambulance Space Positioning System (ASPS) (Marcondes et al., 2010) ERI-SPO 2010 54
ESTUDO DE CASO Web Context Framework (WCF) ERI-SPO 2010 55
Adaptador de Conteúdo ESTUDO DE CASO ERI-SPO 2010 56
Estratégias de Adaptação ESTUDO DE CASO Adaptação Estática Adaptação Dinâmica Abordagem Híbrida + Contexto ERI-SPO 2010 57
ESTUDO DE CASO Funcionamento do ContentAdapter ERI-SPO 2010 58
ESTUDO DE CASO Demo ERI-SPO 2010 59
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
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
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
Obrigado! Carlos E. Cirilo carlos_cirilo@dc.ufscar.br @ducirilo Antonio F. Prado prado@dc.ufscar.br Alexandre Bellini alexandre_bellini@dc.ufscar.br @alexandredc Luciana A. M. Zaina lzaina@ufscar.br www.ges.dc.ufscar.br Grupo de Engenharia de Software 63