58
Tratamento de Exceções Sensível a Contexto Karla Nazaré Ferreira Damasceno [email protected] Orientador: Carlos José Pereira de Lucena Co-orientador: Alessandro Fabricio Garcia PUC-Rio, 22 de outubro de 2005

Tratamento de Exceções Sensível a Contexto

  • Upload
    aldan

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

Tratamento de Exceções Sensível a Contexto. Karla Nazaré Ferreira Damasceno [email protected] Orientador: Carlos José Pereira de Lucena Co-orientador: Alessandro Fabricio Garcia. PUC-Rio, 22 de outubro de 2005. Agenda. Principais Conceitos Tratamento de Exceções (TE) - PowerPoint PPT Presentation

Citation preview

Tratamento de ExceçõesSensível a Contexto

Karla Nazaré Ferreira [email protected]

Orientador: Carlos José Pereira de LucenaCo-orientador: Alessandro Fabricio Garcia

PUC-Rio, 22 de outubro de 2005

Laboratório de Engenharia de Software – PUC-Rio 2

Agenda

• Principais Conceitos– Tratamento de Exceções (TE)– Sensibilidade ao contexto

• Descrição do Problema e Proposta de Solução– Mecanismos de TE em Sistemas Multi-Agentes (SMAs)– TE em Middlewares para aplicações sensíveis ao contexto

• Mobile Collaboration Architecture (MoCA)

• Algumas discussões sobre TE utilizando MoCA

• Referências Bibliográficas

Laboratório de Engenharia de Software – PUC-Rio 3

Defeito, Erro e Falha

• Existe defeito (observável externamente) quando:– um componente ele deixa de oferecer as funcionalidades

previstas ou faz em desacordo com sua especificação.

• Existe erro (estático e interno) quando:– existe de um estado interno em um componente, que sob

determinadas entradas é propenso a ocorrência de um defeito.

• Falha é um evento ou seqüência de eventos que propicia o surgimento de um erro.

• Falha provoca um erro no estado do sistema, que se propaga até afetar o seu comportamento, resultando num defeito.

Laboratório de Engenharia de Software – PUC-Rio 4

Exceção

• Em situações de erro, um componente gera exceções.

• Exceções podem ser classificadas em:

– de interface: sinalizada em resposta a uma requisição que não está conforme a interface do componente;

– de defeito: sinalizada se um componente determina que por alguma razão não pode fornecer o serviço especificado;

– internas: levantadas pelo componente para chamar sua própria medida interna de tolerância a falhas.

Laboratório de Engenharia de Software – PUC-Rio 5

Componente Ideal

Laboratório de Engenharia de Software – PUC-Rio 6

O que é Tratamento de Exceção?

• Capacidade de um software para:

– reagir apropriadamente diante da ocorrência de exceções

– continuar ou interromper sua execução, para preservar a máxima integridade de dados possível.

• O código (detecção e tratamento de exceções) em sistemas confiáveis é numeroso e complexo.

• Projeto dos mecanismos de tratamento de exceções deve ser simples, fácil de usar e fornecer separação entre código normal e excepcional.

Laboratório de Engenharia de Software – PUC-Rio 7

Taxonomia de Tratamento de Exceções

A1. Representação da Exceção

A2. Exceções externas em assinaturas

A3. Separação entre exceção externa e interna

A4. Localização de Tratadores

A5. Associação (Binding) de Tratadores

A6. Propagação de Exceção

A7. Continuação do Fluxo de Controle

A8. Ações de Clean-up

A9. Verificações de Confiabilidade

A10. Tratamento de Exceções Concorrente

Laboratório de Engenharia de Software – PUC-Rio 8

Contexto

• Informação que permite que um sistema tenha conhecimento de sua situação atual.

• De acordo com a definição abstrata de Dey et al“Contexto é qualquer informação que pode ser usada para caracterizar a situação de uma entidade. Uma entidade é uma pessoa, lugar ou objeto que é considerado relevante para a interação entre um usuário e uma aplicação, incluindo o próprio usuário e a aplicação.“

• Classificação: Dispositivo, Usuário e Ambiente.

• Exemplos de contextos: – perfil do usuário, localização, altitude, orientação, temperatura,

velocidade, memória, bateria do dispositivo, CPU, etc.

• Contexto (context-aware) x contexto de tratamento de exceções (escopo).

Laboratório de Engenharia de Software – PUC-Rio 9

Sistema Sensível a Contexto

• Sistemas DISTRIBUÍDOS e MÓVEIS são caracterizados por:– Conexão instável e pouca largura de banda– Cenários de execução extremamente dinâmicos– Pouco sentido em esconder completamente informações de

contexto e os detalhes de implementação

• Sistema sensível a contexto possui a habilidade para interpretar e usar contexto situacional para servir de base para um comportamento adaptativo baseado em mudanças neste contexto.

• De acordo com a definição abstrata de Dey et al:“Um sistema é sensível a contexto se ele usa contexto para fornecer informação relevante e /ou serviços para o usuário, onde relevância depende da tarefa do usuário.”

Laboratório de Engenharia de Software – PUC-Rio 10

Middleware Sensível ao Contexto

• Sensores: – capturam informações do ambiente e transformam em um formato

digital para ser processado pelo ambiente computacional.

• Provedores de informação de contexto: – populam o sistema com as informações de contexto, geradas a partir

dos dados recebidos pelos sensores ou outras informações de contexto.

• Brokers ou serviços de contexto: – registram os interesses de consumidores e disseminam as informações

de contexto.

• Consumidores: – solicitam as informações de contexto. – são notificados pelo broker sobre a condição de interesse.– podem ser aplicações, serviços ou outros componentes do middleware.

Laboratório de Engenharia de Software – PUC-Rio 11

Pro

vedo

r de

info

rmaç

ãoSensor A

Sensor B

Sensor C

Bro

ker

de C

onte

xto

Contexto

Consumidor

Consumidor

Consumidor

Laboratório de Engenharia de Software – PUC-Rio 12

Agenda

• Principais Conceitos– Tratamento de Exceções (TE)– Sensibilidade ao contexto

• Descrição do Problema e Proposta de Solução– Mecanismos de TE em Sistemas Multi-Agentes (SMAs)– TE em Middlewares para aplicações sensíveis ao contexto

• Mobile Collaboration Architecture (MoCA)

• Algumas discussões sobre TE utilizando MoCA

• Referências Bibliográficas

Laboratório de Engenharia de Software – PUC-Rio 13

Tratamento de Exceções em SMAs

• Tratamento de exceções é essencial para incorporação e estruturação das atividades de tolerância à falhas em um sistema de software confiável.

• Falta de suporte para tratamento de exceções em SMAs, duvidoso que possuam a robustez esperada.

• SMAs confiáveis requerem mecanismos apropriados considerando suas características particulares.

Laboratório de Engenharia de Software – PUC-Rio 14

Mecanismos de TE em SMAs

• Maior parte dos sistemas utiliza o mecanismo fornecido pela linguagens, o que não é apropriado para TE em SMAs.

• Existe a necessidade de integrar o TE com abstrações do paradigma de agentes.

• Tratamento de Exceções em SMAs:– deve envolver problemas de tratamento de exceções da

programação seqüencial, concorrente e distribuída, além de novas questões como mobilidade e sensitividade a contexto.

Laboratório de Engenharia de Software – PUC-Rio 15

Tripathi e Miller

Características Gerais

• Agente especial “guardião” atua como tratador de exceções para um conjunto de agentes.

• Exceções são classificadas em internas e externas ao agente, as externas são propagadas para o guardião.

• Principal característica: separação e encapsulamento do TE através do agente guardião.

Problemas Encontrados

• Não existe suporte para TE nas colaborações entre os agentes.

• Desvantagens do guardião:– possibilidade de gerar somente

reações gerais para as exceções, devido à impossibilidade de tratadores escritos no contexto da entidade que chamou o serviço;

– gargalo criado para o sistema inteiro, pela centralização do tratamento de exceções em uma entidade especializada;

• Não considera as necessidades de aplicações móveis sensíveis a contexto.

Laboratório de Engenharia de Software – PUC-Rio 16

Souchon, Dony, Urtado e Vauttier

Características Gerais

• Considera que mecanismos de TE para SMAs devem:– preservar o paradigma de

agentes;– considerar a concorrência e a

comunicação assíncrona;– considerar a organização

social de agentes (grupos e papéis).

Problemas Encontrados

• Preocupação quase que exclusiva com localização de tratadores.

• Não possibilita a associação dinâmica entre tratadores e ocorrências de exceção.

• Não considera as necessidades de aplicações móveis sensíveis a contexto.

Laboratório de Engenharia de Software – PUC-Rio 17

Iliasov e Romanovsky

Características Gerais

• Permite recuperação de erros específicos da aplicação, em SMAs baseados em coordenação.

• Comunicação anônima entre os agentes que lêem tuplas do espaço de tuplas.

• Separação lógica forte das tuplas normais e excepcionais, usando um espaço de tuplas para exceções.

Problemas Encontrados

• Específico para SMAs com interação baseada em espaços de tuplas.

• Não considera as necessidades de aplicações móveis sensíveis a contexto.

Laboratório de Engenharia de Software – PUC-Rio 18

Mecanismos de TE em SMAs

• Não tratam requisitos de aplicações sensíveis a contexto:1. especificar explicitamente “contextos excepcionais”;2. determinar a estratégia de tratamento, considerando contextos

do agente e do dispositivo móvel;3. realizar tratamento de “contextos excepcionais” concorrentes

que ocorrem nos agentes e dispositivos móveis;4. realizar tratamento cooperativo de um “contexto excepcional”

que ocorre durante a execução da aplicação móvel.

Laboratório de Engenharia de Software – PUC-Rio 19

TE em Middlewares Sensíveis ao Contexto

• Arquiteturas existentes para sistemas sensíveis a contexto não se preocupam com a concepção de mecanismos de tratamento de exceções.

• Utilização apenas do mecanismo de tratamento de exceções fornecido por linguagens de programação.

Laboratório de Engenharia de Software – PUC-Rio 20

Exemplos de Middlewares

Middleware Modelo Informação de Contexto Principais componentes

Moca Baseado em eventos ouPublish/Subscribe

Dispositivo (como CPU, memória,energia, conexão, etc.)

Localização do dispositivo

Possibilidade de registro deinteresse em eventos da

aplicação

Conjunto de API’s: cliente, servidor,comunicação síncrona e assíncrona.

Conjunto de serviços: Monitor, Configuration Service (CS),Discovery Service (DS),Context Information Service (CIS), Location Inference Service (LIS), Symbolic Region Manager (SRM).

Lime Espaço de Tuplas Não se aplica Não se aplica

CARISMA Reflexivo Recursos do Dispositivo (comoenergia, poder de processamento,tamanho da tela, memória, etc.)

Recursos fora do dispositivo(como largura de banda, conexãoda rede, hosts próximos,localização, etc.)

Recursos definidos pela aplicação(como atividade e humor do usuário, etc.)

Core, trata questões como osuporte p/ comunicação assíncronae a descoberta de serviços;

Context Management, interage com sensores físicos e monitora mudanças de contexto;

Application Model, define framework padrão para criar e executar aplicações context-aware.

Core Services, responsáveispor responder às requisições dequalidade de serviços definidas no nível de aplicação;

Laboratório de Engenharia de Software – PUC-Rio 21

Resumo dos problemas

• Agentes devem considerar os contextos onde estão atuando e os usuários do sistema onde estão inseridos.

• Tratamento de exceções deve considerar a variação de tais contextos.

• Modelos tradicionais de tratamento de exceções negligenciam tais problemas e não fornecem soluções apropriadas.

Laboratório de Engenharia de Software – PUC-Rio 22

Objetivos

• Levantar as propostas para tratamento de exceções para SMAs existentes na literatura;

• Definir um modelo geral de tratamento de exceções sensível ao contexto;

• Implementar o modelo utilizando a arquitetura MoCA;

• Implementar aplicações como estudo de caso.

Laboratório de Engenharia de Software – PUC-Rio 23

Agenda

• Principais Conceitos– Tratamento de Exceções (TE)– Sensibilidade ao contexto

• Descrição do Problema e Proposta de Solução– Mecanismos de TE em Sistemas Multi-Agentes (SMAs)– TE em Middlewares para aplicações sensíveis ao contexto

• Mobile Collaboration Architecture (MoCA)

• Algumas discussões sobre TE utilizando MoCA

• Referências Bibliográficas

Laboratório de Engenharia de Software – PUC-Rio 24

MoCA: Mobile Collaboration Architecture

• Middleware para desenvolvimento e execução de aplicações colaborativas sensíveis ao contexto: – Estruturado em uma rede wireless (802.11).– Usuários com laptops e palmtops.– Para aplicações intra-domínio (ex. campus de universidade).

• Provê meios para coletar, armazenar e processar dados de contexto dos dispositivos móveis.

• Consiste essencialmente em:– serviços centrais que permitem a execução de aplicações

sensíveis ao contexto.– APIs que facilitam o desenvolvimento das aplicações e o acesso

aos serviços fornecidos.– framework OO para instanciar os proxies para aplicação.

Laboratório de Engenharia de Software – PUC-Rio 25

Pro

vedo

r de

info

rmaç

ão d

e co

ntex

to

Sensor A

Sensor B

Sensor C

Bro

ker

de C

onte

xto

Pro

vedo

r

Bro

ker

Pro

vedo

r

Bro

ker

CIS: Context Information Service

VirtualLines

LIS: Location Inference Service

Server

Laboratório de Engenharia de Software – PUC-Rio 26

Serviços

DS CIS CS

M

LIS

Server

FW Proxy

LegendaDS - Discovery ServiceCIS - Context Information Service (Provedor de contexto e Broker)LIS - Location Inference Service (Consumidor, Provedor de contexto e Broker)CS - Configuration ServiceM - Monitor (Sensor)

Client

Core Services

Application

API API

Laboratório de Engenharia de Software – PUC-Rio 27

DS CIS CS

M

Requisição do Monitor:Qual endereço do CIS e sua periodicidade?Qual endereço do DS?

requisição

Qual Proxy?

requisição

resposta respostamodificada

Evento de Inte

resse

registrar registrar

LIS

IP e Porta do Proxy

Sub

scriç

ão

Conteúdo da Subscrição: Subject: mac address, Expression: EnergyLevel < 10% and FreeMemory < 15000K

GetDSAddress? Dev

ice’

s lo

catio

n

Sub/Ev

Server Proxy

Context

Client

MonitorMonitor

FWAPI API

LegendaDS - Discovery ServiceCIS - Context Information Service (Provedor de contexto e Broker)LIS - Location Inference Service (Consumidor, Provedor de contexto e Broker)CS - Configuration ServiceM - Monitor (Sensor)

Padrão Típico de Interações

Laboratório de Engenharia de Software – PUC-Rio 28

Cliente e Servidor

API Descrição

ClientAPI Facilita programação da aplicação escondendo alguns detalhes referentes a programação de rede e uso da arquitetura MoCA.

Inicia automaticamente o monitor, se desejado.

ServerAPI Pode ser usada para criar uma aplicação servidor, tal como um novo serviço.

Se registra automaticamente no DS.

Laboratório de Engenharia de Software – PUC-Rio 29

Infra-estrutura de Comunicação

API Descrição

Communication Protocols (Cm)

Implementa protocolos para troca de mensagens síncronas e assíncronas entre objetos Java usando TCP ou UDP.

Event Communication Interface (ECI)

Implementa comunicação baseada em eventos (Publish/Subscribe).

API de propósito geral, usada por alguns serviços MoCA, como LIS.

Laboratório de Engenharia de Software – PUC-Rio 30

Serviços

API Descrição

Context Information Service (CIS Client)

Implementa interface com CIS para fazer subscrições de expressões de interesse (SQL-like), e receber notificações quando as variáveis de contexto do dispositivo satisfazem uma expressão interesse.

Location Inference Service (LIS)

Oferece suporte a notificações (assíncronas) e consultas sobre uma localização ou um dispositivo específicos.

Symbolic Region Manager (SRM)

Armazena informações sobre hierarquias de regiões simbólicas, baseadas no conjunto de regiões atômicas definidas pelo LIS.

DiscoveryService (DS)

Implementa uma interface com DS para armazenas informações, ou fazer consultas sobre qualquer serviço registrado no middleware.

Laboratório de Engenharia de Software – PUC-Rio 31

Dependências entre APIs

Laboratório de Engenharia de Software – PUC-Rio 32

Agenda

• Principais Conceitos– Tratamento de Exceções (TE)– Sensibilidade ao contexto

• Descrição do Problema e Proposta de Solução– Mecanismos de TE em Sistemas Multi-Agentes (SMAs)– TE em Middlewares para aplicações sensíveis ao contexto

• Mobile Collaboration Architecture (MoCA)

• Algumas discussões sobre TE utilizando MoCA

• Referências Bibliográficas

Laboratório de Engenharia de Software – PUC-Rio 33

• Aplicação sensível ao contexto desenvolvida utilizando a arquitetura MoCA que realiza o controle de filas virtuais em parques de diversão;

• Objetivo: impedir que pessoas passem muito tempo esperando nas filas dos brinquedos e aproveitem melhor as atrações existentes no parque.

• Ao passar próximo de uma atração um usuário móvel pode coletar um ticket virtual que corresponde a um lugar na fila.

• O sistema avisa ao usuário sobre a proximidade de sua vez, para que ele retorne a tempo de participar.

• Quando o usuário não retorna a tempo, o sistema emite um alerta para ele avisando que perdeu sua vez na atração.

Aplicação Virtual Lines

Laboratório de Engenharia de Software – PUC-Rio 34

Contexto Excepcional

• É necessário especificar situações excepcionais para que sejam devidamente consideradas e tratadas.

• Programador é responsável por especificar tais situações errôneas.

• São contextos indesejados ou perigosos, associados aos usuários, agentes da aplicação, ou dispositivo móvel.

• Têm significado especial e requerem ativação de ações de recuperação.

• Requerem tratamento imediato por parte aplicação na forma de invocação de tratadores.

Laboratório de Engenharia de Software – PUC-Rio 35

Exemplos de contextos excepcionais

• <Tempo de espera muito longo> ou <muitas pessoas na fila> aconselhar que novas pessoas não entrem na fila, oferecer outras atrações próximas.

• Quando dispositivo entra em uma fila pode informar o horário que irá deixar o parque (escalonamento preferencial) e se eu não fizer de acordo com indicado pode receber uma exceção.

• <Chuva>, algumas pessoas vão desejar sair da fila.

Laboratório de Engenharia de Software – PUC-Rio 36

Tratamento Proativo

• A colaboração é fundamental para que exista proatividade no tratamento de exceções.

• Utiliza a infra-estrutura de colaboração entre os dispositivos móveis na presença de contextos excepcionais.

• Parceiros constroem um corpo de conhecimento sobre as exceções conhecidas.

• Exceções são dinamicamente “descobertas” com base nos interesses registrados pelos parceiros da colaboração.

• Proativo: uma exceção desconhecida por um agente pode ser detectada com base nos parceiros na colaboração.

Laboratório de Engenharia de Software – PUC-Rio 37

Localização de Tratadores

• Agente ou dispositivo móvel:– <Cliente perdeu a vez na fila>,– <PDA de um cliente está desligado ou bateria está baixa>

• Serviço de colaboração:– <Chuva>, <Alarme de fogo em uma atração>.

• Todos os usuários e serviços de um servidor MoCA:– <Alarme de fogo no parque>, <Servidor MoCA fora>.

• Localização (tratador referente uma região)?– <Nova atração aberta> ou <alarme de fogo em uma atração>.

Laboratório de Engenharia de Software – PUC-Rio 38

Associação (Binding) de Tratadores

• Reconfiguração dinâmica de tratadores de acordo com as informações de contexto.

• <Cliente perdeu a vez>, possíveis tratamentos:– oferecer troca com alguém da fila que deseje,– permitir que volte mais tarde se as pessoas na fila

concordarem,– (Se perdeu porque estava em outra atração) informar ao

próximo da fila e deixar que ele use a atração em seguida. • Além disso, poderia considerar informações como:

– “em quantas filas ele já está aguardando sua vez”;– “há quanto tempo ele não participa de nenhuma atração”, etc.

• <Atração temporariamente fora>, possíveis tratamentos:– notificar a situação, alocar em fila de outra atração, ou manter

na fila.

Laboratório de Engenharia de Software – PUC-Rio 39

Propagação de Exceção

• Diferentes estratégias:– classificar exceções de acordo com sua gravidade a fim de

entender para qual nível ela deve ser propagada.

• Quando <dispositivo não cumpriu com as restrições ou acordos realizados>, pode receber exceções.

• <PDA de um cliente com bateria baixa> notificado para os serviços em que ele está colaborando.

• <Alarme de fogo em uma atração> pode ser propagado para todos os usuários colaborando no serviço.

• <Alarme de fogo no parque> propagado para todos os usuários e serviços do servidor MoCA do parque.

Laboratório de Engenharia de Software – PUC-Rio 40

Contextos Excepcionais Concorrentes

• Suporte a contextos excepcionais concorrentes é um requisito fundamental para aplicações sensíveis ao contexto.

• É importante que exista:– mecanismo de ação atômica entre os participantes de uma

colaboração, para recuperação colaborativa do sistema;– conceito de resolução de exceções concorrentes.

• Ocorrência de vários contextos excepcionais: decisão sobre qual é mais relevante para ser tratado.

Laboratório de Engenharia de Software – PUC-Rio 41

Representação de Contextos no MoCA

• A representação de contextos excepcionais pode ser similar a representação de contextos normais.

• Como é representado um contexto no MoCA?– CIS– Novos serviços definidos para aplicações MoCA– LIS

• Existem algumas diferenças na representação destas informações de contexto para estes serviços!

Laboratório de Engenharia de Software – PUC-Rio 42

Representação de Contexto no CIS

• Formato da subscrição de interesse para o CIS: – ID do dispositivo (endereço mac) + expressão lógica

(representa o contexto de interesse sobre do dispositivo).

• Exemplos de expressões: – "(CPU > 90)“– "((OnLine = False) and (DeltaT > 10000))

Laboratório de Engenharia de Software – PUC-Rio 43

Comunicação no CIS

• CIS oferece suporte para: comunicação baseada em eventos (ECI) e comunicação síncrona (communication protocol).

• Na comunicação síncrona, – responde todas as requisições com a última informação de

contexto conhecida sobre o dispositivo. – não fornece suporte para processamento de expressões.

• Na comunicação assíncrona, – registra os interesses para um dispositivo específico e, sempre

que o matching entre a notificação recebida do monitor e a expressão de interesse do cliente é verdadeiro, publica um evento para este cliente.

Laboratório de Engenharia de Software – PUC-Rio 44

Exemplo: Cliente Síncrono CIS

request = new Request(“00:02:2D:A5:06:46”);

tcpClient = new TCPConnection(); tcpClient.open(serverAddr); tcpClient.send(request);

reply = (Reply) tcpClient.nonBlockingReceive(TIMEOUT);

if (reply == null) return;

if (reply instanceof ContextInformation) { ctx = (ContextInformation) reply; printOutDeviceContext(ctx);

} else // if(reply instanceof ErrorMessage) { errorMsg = (ErrorMessage) reply; printOutErrorMessage(errorMsg);

}

Laboratório de Engenharia de Software – PUC-Rio 45

Exemplo: Cliente Assíncrono CIS

cis = new CisSubscriber(protocol,CISAddr,localAddr); ... //Subscribe to subject with a specific expression topic1 = cis.subscribe("00:02:2D:A5:06:47","(CPU > 90)");

//Adding listener for the topiclistener1 = new MyEventListener();cis.addListener(listener1,topic1); ...

class MyEventListener implements EventListener {public void onReceiveData(Event event) {

DeviceContext dvcContext = (DeviceContext) event.getData();

DeviceCtxManagement.printOutDeviceContext(dvcContext); }

}

Laboratório de Engenharia de Software – PUC-Rio 46

Representação de Contextos Excepcionais

• Utilização de uma Tag Especial “Exception”:sql = “Exception(EnergyLevel < 30 and FreeMemory < 7500)";topic = cis.subscribe("00:02:2D:A5:06:45", sql);

• Aspecto deve interceptar subscrições:– Verificar se é uma expressão de contexto excepcional, caso afirmativo,

armazenar esta informação internamente;– Alterar expressão para retirar a tag “Exception”;– Realizar normalmente a subscrição no MoCA com a nova expressão;

• Aspecto deve interceptar os eventos recebidos:– Verificar se o evento é referente a expressão de contexto excepcional;– Se for contexto excepcional, chamar o tratador apropriado.

• Pode-se pensar em uma expressão de contexto excepcional que está associada a um grupo de dispositivos;

Laboratório de Engenharia de Software – PUC-Rio 47

Representação de Contexto no LIS

• Formato da subscrição de interesse para o LIS: – ID do dispositivo + DeviceListener– Nome da região + RegionListener

• Não existe expressão de interesse.

• Existem listeners para recebimento de eventos específicos;

Laboratório de Engenharia de Software – PUC-Rio 48

Exemplo: Cliente LIS

// connect to lislis = new LocationInferenceService(server, 55021, 55020);

//subscribe to device listenDeviceListen deviceListen = new DeviceListen();lis.subscribe(device, deviceListen);

//subscribe to region listenRegion[] regions = lis.getAtomicRegions();RegionListen regionListen = new RegionListen();for (int i = 0; i < regions.length; i++) {

// subscribe for each region to receive an event when a device come in or out of it.

lis.subscribe(regions[i].getName(), regionListen);}

Laboratório de Engenharia de Software – PUC-Rio 49

Exemplo: Cliente LIS

private class DeviceListen implements DeviceListener {public void onRegionChanged(String deviceId, String areaId) {

System.out.println(deviceId + "->" + areaId);}

}

private class RegionListen implements RegionListener {

public void onDeviceEntered(String regionId, String deviceId) {System.out.println("Device entered: " + regionId + " -> " + deviceId);}

public void onDeviceExited(String regionId, String deviceId) {System.out.println("Device exited: " + regionId + " -> "

+ deviceId);}

}

Laboratório de Engenharia de Software – PUC-Rio 50

Referências Bibliográficas

• BROWN, P. J. The Stick-e Document: A Framework For Creating Context-aware Applications. In the Proceedings of the Electronic Publishing, pp. 259-272, Laxenburg, Austria, IFIP. September 1996.

• CAPRA, L. Reflective Mobile Middleware for Context-Aware Applications. October 2003. (Ph.D. Thesis), Department of Computer Science, University College London, London.

• CAPRA, L.; EMMERICH, W. and MASCOLO, C. Exploiting Reflection and Metadata to build Mobile Computing Middleware. In Proc. of Workshop on Middleware for Mobile Computing. Co-located with Middleware 2001. Heidelberg, Germany. November 2001.

• CAPRA, L; EMMERICH, W. and MASCOLO, C. CARISMA: Context-Aware Reflexive mIddleware System for Mobile Applications. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, Vol. 29, Issue 10, October 2003. pp. 929-945.

• CHAN, A. and CHUANG, S. MobiPADS: a reflective middleware for context-aware mobile computing. IEEE Transactions on Software Engineering, 29(12):1072{1085, Dec 2003.

• CHO, S. Y. Framework for the Composition and Interoperation of the Home Appliances based on Heterogeneous Middleware in Residential Networks. IEEE Trans. Consumer Electronics. Vol. 48 – Issue 3, 2002. pp. 484-489.

Laboratório de Engenharia de Software – PUC-Rio 51

Referências Bibliográficas

• COUTAZ, J. et al. Context is Key. Communications of the ACM, Special Issue on the Disappearing Computer. March 2005, Vol. 48, Issue 3. pp. 49-53.

• CUGOLA, G.; NITTO, E. and FUGGETTA, A. The JEDI Event-Based Infrastructure and its Applications to the Development of the OPSS WFMS. IEEE Transactions on Software Engineering, 27(9): 827–850, Sept. 2001.

• DAVIES, N.; MITCHELL, K.; CHEVERST, K. and BLAIR, G. S. Developing a Context Sensitive Tourist Guide. Proc First Workshop on Human Computer Interaction for Mobile Devices, Glasgow. March 1998.

• DEY, A.K., and ABOWD, G.D. Towards A Better Understanding of Context and Context-Awareness. In the Workshop on the What, Who, Where, When and How of Context-Awareness. ACM Conference on Human Factors in Computer Systems (CHI 2000), The Hague, Netherlands. April 1-6, 2000.

• DIX, A., RODDEN, T., DAVIES, N., TREVOR, J., FRIDAY A. and PALFREYMAN, P. Exploiting Space and Location as a Design Framework for Interactive Mobile Systems. ACM Transactions on Computer-Human Interaction (TOCHI). 1999.

• FAHY, P.; CLARKE, S. CASS: Middleware for Mobile Context-Aware Applications. MobiSys 2004 Workshop on Context Awareness, Boston, Massachusetts, USA, June 2004.

Laboratório de Engenharia de Software – PUC-Rio 52

Referências Bibliográficas

• FERBER, J. Multi-Agent Systems: An Introduction to Distributed Artificial Intelligence. Addison Wesley Longman, 1999.

• GADDAH, A. and KUNZ, T. A Survey of Middleware Paradigms for Mobile Computing. July 2003. Carleton University Systems and Computing Engineering Technical Report. Ottawa, Ontario, Canada.

• GARCIA, A. F. et al. A Comparative Study of Exception Handling Mechanisms for Building Dependable Object-Oriented Software. Journal of Systems and Software, Elsevier, Vol. 59, Issue 2, November 2001, pp. 197-222.

• GARCIA, A. F.; BEDER, D. M.; RUBIRA, C. An Exception Handling Software Architecture for Developing Fault-Tolerant Software. 5th IEEE High Assurance Systems Engineering Symposium (HASE'2000), Albuquerque, New Mexico, USA, November 2000.

• GARCIA, A. F.; RUBIRA, C. Exception Handling in Concurrent Object-Oriented Systems. 14th Brazilian Contest on Dissertations and Thesis, CTD'2001, SBC, August 2001- Best Dissertation Award (In Portuguese)

• GARCIA, A. From Objects to Agents: An Aspect-Oriented Approach. Rio de Janeiro, 2004. 298p. Thesis (Doctoral Thesis) - Computer Science Department, Pontifical Catholic University of Rio de Janeiro.

Laboratório de Engenharia de Software – PUC-Rio 53

Referências Bibliográficas

• GARCIA, A., CHOREN, R., LUCENA, C., ROMANOVSKY, A., WEYNS, D., GIESE, H. Software Engineering for Large-Scale Multi-Agent Systems. SELMAS 2005. (Post-Workshop Report) ACM Software Engineering Notes, Vol. 30, (To Appear).

• GARCIA, A; RUBIRA C. Um Mecanismo Orientado a Objetos para Tratamento de Exceções em Software Concorrente Tolerante a Falha. Proceedings of the 8th Brazilian Symposion on Fault-Tolerant Computing, SBC, Campinas, SP, Brazil, June 1999.

• HOHPE, G. Your Coffee Shop Doesn’t Use Two-Phase Commit. IEEE SOFTWARE, March - April 2005, vol. 22, n. 2, pp. 64-66.

• HULL, R.; NEAVES, P. and BEDFORD-ROBERTS, J. Towards Situated Computing. In the Proceedings of the 1st International Symposium on Wearable Computers (ISWC'97), pp. 146-153, Cambridge, MA, IEEE. October 13-14, 1997.

• ILIASOV, A. & ROMANOVSKY, A. Exception Handling in Coordination-based Mobile Environments. In Proceedings 29th Annual International Computer Software and Applications Conference (COMPSAC), Edinburgh, Scotland, July 2005. IEEE CS Press.

• K¨ONIG-RIES, B. et al. On building an infrastructure for mobile and wireless systems: report on the nsf workshop on an infrastructure for mobile and wireless systems, oct. 15, 2001. SIGMOD Rec., 31(2):73–79, 2002.

Laboratório de Engenharia de Software – PUC-Rio 54

Referências Bibliográficas

• KON, F. et al. Monitoring, Security, and Dynamic Configuration with the dynamicTAO Reflective ORB. In Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms and Open Distributed Processing, pages 121–143, New York, April 2000. Springer-Verlag.

• LAC (Laboratory for Advanced Collaboration). MoCA: Mobile Collaboration Arquiteture. URL: www.lac.inf.puc-rio.br/moca

• LAMMING, M. and FLYNN, M. Forget-me-not: Intimate computing in support of human memory. In the Proceedings of the FRIEND 21: International Symposium on Next Generation Human Interfaces, pp. 125-128, Meguro Gajoen, Japan. 1994.

• LEDOUX, T. OpenCorba: a Reective Open Broker. In Reflection’99, Volume 1616 of LNCS (Saint-Malo, France, July 1999), pp. 197-214. Springer-LEE, P.; ANDERSON, T. Fault Tolerance: Principles and Practice. Springer-Verlag, 2nd edition, Wien, Austria, January 1990.

• LEMOS, R.; ROMANOVSKY, A. Exception handling in the software lifecycle. International Journal of Computer Systems Science & Engineering, CRL Publishing, Vol. 16, Issue 2, March 2001, p. 167-181.

• LIPPERT, M.; LOPES, C. V. A Study on Exception Detection and Handling Using Aspect-Oriented Programming. In Proceedings of the 22nd International Conference of Software Engineering (ICSE’2000), Limmerick, Ireland, June 2000, pp. 418-427.

Laboratório de Engenharia de Software – PUC-Rio 55

Referências Bibliográficas

• LYU, M. R.; CHEN, X.; WONG, T. -Y. Design and Evaluation of a Fault-Tolerant Mobile-Agent System. Intelligent Systems, Special Issue on Dependable Agent Systems, Vol. 19, Issue 5, September - October 2004, pp. 32-38. 

• MEIER, R. and CAHILL, V. STEAM: Event-Based Middleware for Wireless Ad Hoc Networks. In Proceedings of the International Workshop on Distributed Event-Based Systems (ICDCS/DEBS'02). Vienna, Austria, 2002.

• MITCHELL, K. A Survey of Context-Aware Computing. Internal Technical Report, March 2002.

• MITCHELL, K. Supporting the Development of Mobile Context-Aware Computing. January 2002. (Ph.D. Thesis), Computing Department, Lancaster University, England, U.K.

• MURPHY, A. L.; PICCO, G. P.; ROMAN, G. -C. LIME: A Coordination Middleware Supporting Mobility of Hosts and Agents. Technical Report 2004, Washington University, Department of Computer Science, St. Louis, Missouri.

• PASCOE, J. Adding Generic Contextual Capabilities to Wearable Computers. In the Proceedings of the 2nd IEEE International Symposium on Wearable Computers (ISWC'98), pp. 92-99, Pittsburgh, PA, IEEE. October 19-20, 1998.

Laboratório de Engenharia de Software – PUC-Rio 56

Referências Bibliográficas

• PIETZUCH, P. and BACON, J. Hermes: A Distributed Event-Based Middleware Architecture. Submitted to the Workshop on Distributed Event-Based Systems (DEBS), 2002.

• PROJETO ASPECTJ, Programming Guide. Disponível em: <http://eclipse.org/aspectj/>. Acesso em: 15 ago. 2004.

• ROMANOVSKY, A.; KIENZLE, J. Action-Oriented Exception Handling in Cooperative and Competitive Concurrent Object-Oriented Systems. ECOOP Workshop 2000: Advances in Exception Handling Techniques. pp. 147–164.

• RUBINSZTEJN, H. K. et al. Support for Context-Aware Collaboration. In Proceedings of the First International Workshop on Mobility Aware Technologies and Applications (MATA 2004), Florianópolis, Brasil, September 2004.

• SACRAMENTO, V. et al. MoCA: A Middleware for Developing Collaborative Aplications for Mobile Users. IEEE Distributed Systems Online, Vol.5, Issue 10, October 2004.

• SANTANGELO, G. et al. AJEFW: Um framework orientado a aspectos para tratamento de exceções. Primeiro Workshop Brasileiro de Desenvolvimento de Software Orientado a Aspectos (WASP'04), Brasília, Brasil, Outubro 2004.

• SCHILIT, B. N. and THEIMER, M. Disseminating Active Map Information to Mobile Hosts. IEEE Networks, pages 22-32, October 1994.

Laboratório de Engenharia de Software – PUC-Rio 57

Referências Bibliográficas

• SCHILIT, B. N., Adams, N. I. and Want, R., Context-aware Computing Applications. In the Proceedings of the 1st International Workshop on Mobile Computing Systems and Applications, pp. 85-90, Santa Cruz, CA, IEEE. December 8-9, 1994.

• SCHMIDT, A., Beigl, M. and Gellersen, H. W. There is More to Context than Location. In Interactive Applications of Mobile Computing, Rostock, Germany, pp. 24-25, November 1998.

• SERUGENDO, G. Di Marzo; ROMANOVSKY, A. Using Exception Handling for Fault-Tolerance in Mobile Coordination Based Environments in EHOOS’03: Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object-Oriented Systems. TR 03-028. Department of Computer Science, University of Minnesota, Minneapolis, MN 55455.

• SOUCHON, F. et al. A proposition for exception handling in multi-agent systems. In Proceedings of SELMAS'03: 2nd International Workshop on Software Engineering for Large-Scale Multi-Agent Systems at ICSE’03, Portland, Oregon, May 2003, pp.136-143.

• SOUCHON, F. et al. Improving exception handling in multi-agent systems. In Software engineering for multi-agent systems II, Research issues and practical applications, C. Lucena, A. Garcia, A. Romanovsky, J. Castro and P. Alencar Editors, Springer-Verlag, LNCS 2940, February 2004.

Laboratório de Engenharia de Software – PUC-Rio 58

Referências Bibliográficas

• SOUCHON, F.; DONY, C.; URTADO, C; VAUTTIER, S. Handling exceptions in multi-agent systems: an application to the MADKit plataform.

• TRIPATHI, A.; MILLER, R. Exception Handling in Agent-Oriented Systems. In Romanovsky, A., Dony, C.,Knudsen, J.L., Tripathi, A., eds.: Advances in Exception Handling Techniques. LNCS (Lecture Notes in Computer Science) 2022, Springer-Verlag (2000).

• VARSHNEY, U. and VETTER, R. Emerging mobile and wireless networks. Commun. ACM, Vol. 43, Issue 6. pp.73–81, 2000.

• WEISS, G. (Editor). Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence. The MIT Press, 1999.

• WOOLDRIDGE, M. An Introduction to Multiagent Systems, John Wiley & Sons, New York 2002.