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
Download

Serviços