Prévia do material em texto
Computação Ubíqua: definição, princípios e
tecnologias
Carlos Eduardo Cirilo
Departamento de Computação – Universidade Federal de São Carlos
Rodovia Washington Luis, km 235 – CEP 13.565-905
São Carlos, SP, Brasil
carlos_cirilo@dc.ufscar.br
RESUMO
A computação ubíqua abrange um modelo de computação
no qual usuários móveis, serviços e recursos são capazes de
descobrir outros usuários, serviços e recursos. A idéia básica é
que a computação mova-se para fora das estações de trabalho e
computadores pessoais e torne-se pervasiva em nossa vida
cotidiana. Uma série de princípios e tecnologias que estão por
trás desse paradigma computacional devem ser mantidos em
mente para o desenvolvimento de aplicações e dispositivos
ubíquos.
Palavras-chave
Computação ubíqua, mobilidade, tecnologia embarcada, redes
sem fio, tecnologias de desenvolvimento, IHC, descoberta de
serviços.
1. INTRODUÇÃO
Nos dias atuais, com a convergência das tecnologias de
rádio, dos microprocessadores e dos dispositivos eletrônicos
digitais de uso pessoal, tornou-se possível fazer com que os
dispositivos com certo poder de processamento computacional,
tanto móveis quanto estacionários, cooperem entre si para
fornecer ao usuário acesso instantâneo a novos serviços de
forma transparente. Essa característica levou ao surgimento do
conceito de ubiqüidade na computação [1].
A computação ubíqua abrange um modelo de computação
no qual usuários móveis, serviços e recursos são capazes de
descobrir outros usuários, serviços e recursos. Nesse paradigma
computacional, as responsabilidades pela execução de
determinado serviço necessário para o usuário são distribuídas
entre uma variedade de dispositivos, cada qual com suas tarefas
e funcionalidades específicas.
Este artigo apresenta os principais conceitos que giram em
torno da computação ubíqua, apresentando sua definição,
princípios e tecnologias envolvidos.
2. COMPUTAÇÃO UBÍQUA
2.1. Mobilidade e Tecnologia Embarcada
Por ser uma área de pesquisa emergente, algumas pessoas
utilizam os termos computação pervasiva1 , computação ubíqua,
computação nomádica, computação móvel e tantos outros como
sinônimos. Contudo, existem diferenças conceituais entre eles,
conforme elucidado abaixo [2].
A computação móvel consiste em sistemas computacionais
distribuídos em diferentes dispositivos que comunicam-se entre
si através de uma rede de comunicação sem fio, o que permite a
mobilidade desses aparelhos [3]. O usuário, então, é capaz de
1
O termo “pervasivo” não existe no vocabulário da língua portuguesa.
Entretanto, como tem sido amplamente adotado com termo
emergente na literatura da área em português, “pervasivo” será usado
neste texto como a tradução do inglês “pervasive”, cuja definição é
apresentada no decorrer deste trabalho.
utilizar os serviços que um computador oferece independente de
sua localização física. Assim, tem-se um aumento da
capacidade de mover fisicamente serviços computacionais
juntamente com o usuário em movimento, transformando a
computação numa atividade que pode ser carregada para
qualquer lugar. No entanto, existem certas limitações nessa
abordagem. A principal limitação da computação móvel é que o
dispositivo não possui a capacidade de obter de forma flexível
informações sobre o contexto em que a computação ocorre e
adaptá-la adequadamente. Logo, os usuários têm de alterar
manualmente as configurações da aplicação à medida que se
movem, o que pode ser uma característica não desejável para
boa parte os usuários [1].
Já o conceito de computação pervasiva implica que o
computador está embarcado ao ambiente de forma invisível
para o usuário, tendo a capacidade de obter informações acerca
do ambiente circundante e utilizá-la para controlar, configurar e
ajustar a aplicação para melhor se adequar às características do
ambiente. O ambiente também pode e deve ser capaz de
detectar outros dispositivos que adentrem a ele. Dessa interação
surge a capacidade de computadores agirem de forma
“inteligente” no ambiente em que o usuário se locomove, sendo
esse ambiente saturado por sensores e serviços computacionais
[1]. A computação pervasiva postula quatro paradigmas
fundamentais [4]:
• Descentralização: durante a era mainframe,
computadores superpoderosos forneciam suas capacidade
de processamento para “terminais burros”. Com o advento
dos computadores pessoais (PCs), a arquitetura cliente-
servidor foi introduzida, deslocando o poder
computacional do servidor para as estações de trabalho
clientes. A computação pervasiva deu um passo ainda
maior, distribuindo responsabilidades entre uma variedade
de dispositivos, cada qual com suas tarefas e
funcionalidades específicas. Cada uma dessas entidades
autônomas contribuem para um ambiente computacional
heterogêneo, cooperando-se entre si como uma
comunidade mútua e estabelecendo redes dinâmicas de
relacionamento. Uma nova tarefa que emerge a partir
dessa descentralização é a sincronização das atualizações
de informação entre os variados dispositivos. As bases de
dados presentes nos dispositivos com diferentes
capacidades e recursos limitados devem se manter
consistentes.
• Diversificação: na computação pervasiva existe um clara
tendência em adotar dispositivos que melhor se adéquam
aos requisitos de um determinado grupo de usuários para
desempenhar uma tarefa específica, ao invés de
computador de propósito geral. Um dos maiores desafios
que surgem daí é como gerenciar as mais díspares
capacidades desses mais variados dispositivos. Cada um
fornece uma plataforma com suas próprias características,
o que faz com que se torne difícil prover aplicações
homogêneas entre eles.
• Conectividade: múltiplos dispositivos estão de certa
forma ligados uns aos outros. Não há limites: eles trocam
informações entre si através de infravermelho, podem ser
conectados com plugs, comunicam-se via rede sem fio,
etc. Emails podem ser trocados entre dispositivos
heterogêneos. Documentos podem viajar através de redes
e ser acessíveis de qualquer lugar. Celulares GSM se
beneficiam dos acordos de roaming2 internacionais, o que
permite que se conectem em redes de comunicação
diferentes de suas redes nativas. Um handheld pode se
comunicar com um telefone celular através de
infravermelho para sincronizar dados. Alternativamente, o
mesmo handheld pode se conectar através da porta serial
a uma Local Area Network (LAN). Num primeiro
momento, isso pode parecer contrário à diversificação
descrita anteriormente. Questões de especificidade de
plataforma são os maiores obstáculos para aplicações e
intercâmbio de informações: a capacidade de
armazenamento entre os dispositivos são diferentes;
processadores distintos impõem diferentes restrições de
desempenho e uso de memória; sistemas operacionais são
numerosos e freqüentemente são executados em um
dispositivo em particular; o tamanho e a forma dos
dispositivos requerem diferentes plugs, e assim por
diante. Uma abordagem para alcançar a conectividade e
interoperabilidade é a adoção de padrões. Isso resulta em
uma importante tarefa para a indústria de Tecnologia da
Informação (TI): padrões abertos devem ser estabelecidos
e preparados para enfrentar as demandas dos mais
diversos dispositivos. Padrões de comunicação,
linguagens de marcação e software independente de
plataforma devem ser integrados para formar a base da
interoperabilidade. Novos padrões como WAP, UMTS,
Bluetooth ou IrDA foram criados por amplas iniciativas
da indústria, os quais definem os protocolos de
comunicação necessários, bem como as conexões físicas
subjacentes.
• Simplicidade: como mencionado anteriormente, os
dispositivos pervasivos são ferramentas bastante
especializada que não são elaborados para uso específico.
De um ponto de vista de usabilidade, eles devem
desempenhar bem as tarefas para as quais foram
designados. Issodelineia o quarto paradigma da
computação ubíqua: atingir a simplicidade no uso. As
palavras-chave aqui são: disponibilidade, conveniência e
facilidade de uso. Acesso à informação e gerenciamento
devem ser desempenhados sem gastar tempo significativo
para aprender como usar a tecnologia. Qualquer
computador de qualquer forma deve ser uma ferramenta
simples e facilmente acessível na vida diária, assim como
um telefone é hoje.
A computação ubíqua, por sua vez, integra mobilidade em
larga escala com a funcionalidade da computação pervasiva,
isto é, qualquer dispositivo computacional, sob posse de um
usuário em movimento, pode construir, dinamicamente,
modelos computacionais do ambiente em que está inserido e
configurar seus serviços dependendo da necessidade (Figura 1).
A idéia básica é que a computação move-se para fora das
estações de trabalho e PCs e torna-se pervasiva no cotidiano dos
indivíduos. Marc Weiser, idealizador da computação ubíqua,
2
Termo originado no padrão GSM que designa a habilidade de um
usuário de uma rede em obter conectividade em áreas fora da
localidade geográfica onde está registrado, ou seja, obtendo
conectividade através de uma outra rede onde é visitante. A rede que
está sendo visitada pode ou não pertencer à mesma operadora de
telefonia celular.
visionou há um pouco mais de uma década que, no futuro,
computadores estariam presentes nos mais comuns objetos do
dia-a-dia: etiquetas de roupas, xícaras de café, interruptores de
luz, canetas, etc, de forma invisível para o usuário. Neste
mundo de Weiser, é necessário aprender a conviver com
computadores, e não somente interagir com eles [5].
Figura 1 - Relação entre computação pervasiva, ubíqua e móvel
[1]
A Tabela 1 apresenta as dimensões das computações
pervasiva, móvel e ubíqua. O grau de embarcamento refere-se,
de forma geral, o grau de inteligência dos computadores,
embutidos em um ambiente pervasivo, para detectar, explorar e
construir dinamicamente modelos computacionais de seus
ambientes:
Tabela 1- Dimensões da Computação Ubíqua [2]
Computação
Pervasiva
Computação
Móvel
Computação
Ubíqua
Mobilidade Baixa Alta Alta
Grau de
“embarcamento”
Alto Baixo Alta
Mas, quem seria responsável pela adaptação do modelo
computacional de acordo com o ambiente: a aplicação, o
dispositivo, ou ambos? Existem duas abordagens opostas para
projetar sistemas adaptativos: application-transparent (o
dispositivo é inteiramente responsável pela adaptação) e laissez-
faire (o dispositivo não provê nenhum suporte para adapatação)
[6]. Obviamente, a segunda abordagem não é desejável. No
entanto, a primeira abordagem também não é o suficiente para
prover adaptação adequada. Para tornar claro, considere o
seguinte caso de duas aplicações multimídia distintas: em uma o
usuário está assistindo a uma conferência usando um dispositivo
móvel, e na outra o usuário está assistindo a um vídeo ao vivo
recebido de um servidor remoto também em seu dispositivo
móvel. Agora considere os seguintes cenários: no primeiro, o
usuário se move de uma área com largura de banda suficiente
para sua aplicação para outra área onde a largura de banda
disponível é insuficiente para a aplicação. No segundo cenário,
a bateria do dispositivo do usuário esgota-se rapidamente.
Ambos cenários lidam com mudanças na disponibilidade de
recursos.
Na abordagem application-tranparent, o dispositivo poderia
se comportar da mesma maneira, seja qual for a aplicação que
estiver sendo executada. Entretanto, diferentes reações podem
ser desejáveis de acordo com o tipo de aplicação executada. Por
exemplo, no primeiro cenário, um dispositivo não adaptativo
poderia não fazer nada e deixar a qualidade de áudio e vídeo
prejudicada. No segundo cenário, o dispositivo apenas daria um
alerta de bateria fraca para o usuário sem qualquer assistência
de como contornar a situação. Por outro lado, com um
dispositivo adaptativo, vários comportamentos podem ser
esperados, cada qual sendo desempenhado da melhor forma de
acordo com a situação. Por exemplo, no primeiro cenário, o
dispositivo poderia tentar se adaptar requisitando que o servidor
diminua a qualidade de vídeo em decorrência da menor largura
de banda. No segundo cenário, o dispositivo pode tentar
conservar a bateria reduzindo o brilho da tela (além de alertar o
Computação
Pervasiva
Computação
Ubíqua
Computação
Móvel
usuário quanto ao baixo nível de energia). Diante disso, em uma
abordagem ainda mais adaptativa, é possível que o dispositivo
interaja com a aplicação para que esta decida como se adaptar.
Logo, numa abordagem application-aware, a aplicação
colabora com o sistema de software subjacente, o qual lhe
fornece informações de status sobre os recursos disponíveis. A
aplicação utiliza essas informações para tomar decisões de
como se adaptar às mudanças na disponibilidade dos recursos.
Cada aplicação pode se adaptar de sua própria maneira. A
Figura 2 ilustra o espectro das estratégias de adaptação
disponíveis.
Figura 2 – Espectro das estratégias de adaptação [6]
2.2. Tecnologias de Rede Sem Fio
A conectividade é um dos aspectos chave dentro da
computação ubíqua. Uma rede de comunicação sem fio é
necessária para permitir mobilidade aos dispositivos
comunicantes em um ambiente de computação ubíqua [3].
O conceito da comunicação de qualquer lugar e a qualquer
momento é o conceito das redes que oferecem serviços de
comunicação pessoal, como voz e dados. Os serviços de
Comunicação Pessoal (PCS) referem-se a sistemas celulares
que operam em bandas de alta freqüência. Entretanto, os
serviços a serem oferecidos na computação ubíqua vão além
dos serviços de comunicação pessoal. Outras tecnologias sem
fio de média e curta distância surgiram para prover a interação
entre dispositivos, de forma transparente para o usuário. Esta
interação vai desde a conexão sem fio de um PC a seus
periféricos, eliminando assim o cabeamento excessivo, até a
conexão e comunicação entre dispositivos nos mais diversos
ambientes (residência, escritório, chão de fábrica, sala de aula,
lojas e shoppings, hotéis, aeroportos, automóvel, etc) para a
realização das mais diversas tarefas. Tecnologias de
comunicação sem fio de curta e média distância, tais como o
Bluetooth, Wi-Fi e HomeRF, juntamente com as redes de longa
distância, compõem uma estrutura básica de suporte aos
sistemas de computação ubíqua [1]. Essas tecnologias são
descritas sucintamente a seguir.
2.2.1. Redes Sem Fio de Longa Distância
WiMAX
WiMAX (Worldwide Interoperability for Microwave
Access) é uma tecnologia de acesso de banda larga sem fio de
longa distância, baseado no padrão IEEE 802.16, tipicamente
oferecendo 10 Mbps em até 10 Km, embora velocidades de até
70 Mbps são alcançáveis sobre 10 Km [7]. WiMAX suporta
Qualidade de Serviços (QoS) total, largura de banda sob
demanda e é orientado a conexão. Além disso, suporta controle
centralizado e oferece suporte multimídia [8].
Sistemas Celulares
A tecnologia de rádio celular digital é a mais interessante
tecnologia para conectividade de longa distância para
dispositivos ubíquos [4].
Um único sistema celular interconecta várias pequenas
áreas de cobertura de rádio, denominadas “células”. A idéia
básica do sistema celular é o reuso da freqüência, que permite
que um mesmo conjunto de canais possa ser reutilizado em
áreas geográficas diferentes, distantes o suficiente umas das
outras de forma que interferências estejam dentro de limites
toleráveis [9].
Com a evolução da tecnologia de rádio, novas gerações de
sistemas celulares têm surgido e oferecido serviços multimídia
mais sofisticados de comunicação pessoal. Hoje, por exemplo,
os celulares de terceira geração representam a convergência das
seguintes tecnologias: Internet (navegação web, e-mail,
informações, m-commerce), telefonia (voz, vídeo, fax etc)e
mídia de difusão (TV, rádio, entretenimento e informação,
serviços de localização) para o suporte a seis grande classes de
serviços: voz, mensagens, comutação de dados, multimídia,
multimídia de alto padrão e multimídia interativa de alto nível
[1].
Existem quatro grandes tipos de sistemas celulares [10]:
• PDC/JDC – Personal Digital Cellular ou Japanese Digital
Cellular. (Amplamente implantado no Japão);
• TDMA (D-AMPS/IS-54/IS-136) - Implantado nos EUA e
América do Sul;
• CDMA (IS-95) – amplamente implantado nos EUA;
• GSM – Global System for Mobile Communication.
Padrão desenvolvido na Europa e implantado amplamente
no mundo todo.
Uma comparação entre as gerações de sistemas celulares
está resumida Tabela 2:
Tabela 2 – Comparação entre as gerações de celulares [11]
2.2.2. Redes Sem Fio de Curta e Média
Distância
O objetivo maior das redes de longa distância vistas acima é
o provimento de serviços de comunicação pessoal que permitam
ao usuário acessar, de forma única, serviços sofisticados de
qualquer lugar do mundo e a qualquer momento. Estes serviços
atendem parte dos requisitos de comunicação da computação
ubíqua. Um outro requisito é a provisão da comunicação dentro
de ambientes fechados, como uma sala, de tal forma que
dispositivos de um lado da sala possam se comunicar com
dispositivos do outro lado [1].
DECT
O DECT (Digital Enhanced Cordless Telecommunications)
foi projetado pela ETSI para ser usado como um padrão de
conexão sem fio para telefones e outros equipamentos de
escritório. Nos Estados Unidos, o DECT algumas vezes é
conhecido como Personal Wireless Telecommunications (PWT)
[4].
O padrão DECT é bem completo, abrangendo a interface
com o usuário com funções como transferência de chamada e
teleconferência, assim como a interface de ar. Ele permite
interoperabilidade entre handsets DECT e estações base [4].
Um sistema DECT é composto por uma estação base e pelo
menos um handset. O padrão DECT define capacidade
suficiente para a interface de ar para permitir conversas
simultâneas entre handsets internos e entre partes internas e
Laissez-faire
(nenhum suporte
do dispositivo)
Application-transparent
(dispositivo inteiramente
responsável)
Application-aware
(colaboração entre
dispositivo e a aplicação)
externas. O conceito DECT também suporta outros dispositivos
de escritório, tais como aparelhos de fax e telefones sem fio [4].
Bluetooth
O Bluetooth é uma tecnologia para conexão sem fio de
curta distância entre dispositivos. A conexão sem fio para
comunicações locais surgiu de uma necessidade de eliminar os
fios que ligam dispositivos a acessórios. A Ericsson foi uma das
primeiras empresas a reconhecer essa necessidade e, a partir
daí, a identificar outras aplicações com enorme potencial, tais
como: um telefone móvel se comunicando com uma
impressora, ou um PDA se comunicando com o PC para
realizar alguma tarefa, sem qualquer configuração ou
intervenção manual do usuário [1].
Em 1994 a Ericsson envidou esforços com o objetivo de
criar uma tecnologia de comunicação sem fio de baixo custo
para telefones móveis e seus dispositivos periféricos. No ano de
1998, IBM, Toshiba, Nokia e Intel juntaram-se à Ericsson para
desenvolver a especificação de um padrão global aberto para a
conectividade sem fio entre os dispositivos de telecomunicações
e os de computação. Esta especificação foi denominada
Bluetooth [1][4].
Os mais importantes pontos de projeto do Bluetooth são o
baixo consumo de energia, baixo custo e a habilidade de
suportar redes ad hoc de alta velocidade. Com uma taxa de
dados básica de 1 Mbps, o Bluetooth é adequado para
interconexão de computadores pessoais com impressoras,
scanners, teclados e outros dispositivos. O canal de
comunicação também é adequado para conexões de voz em
tempo real entre um headset e um telefone móvel [4].
IrDA
A Associação de Dados Infravermelho – IrDA (Infrared
Data Association) estabeleceu vários padrões de comunicação
através de luz infravermelha, onde o IrDA-Data e o IrMC são os
mais importantes. A tecnologia infravermelha suporta apenas
conexão ponto-a-ponto. Tem alcance de curta distância, de até
um metro, com ângulo estreito entre o transmissor e o receptor
– o cone de visão é de 30°. Qualquer sinal fora deste angulo não
será recebido – os patrocinadores do IrDA sustentam que o
IrDA deverá suportar um angulo de visão de 60°, o que
possibilitaria suporte a um numero maior de serviços, tais
como: a conexão de mouse, joystick, etc., no PC. O início da
troca de dados requer que os dispositivos estejam em linha
direta de visão, uma vez que os raios infravermelho não
atravessam objetos sólidos. Essas duas últimas características da
tecnologia infravermelha mencionadas representam as suas
maiores desvantagens [1].
O IrDA é uma tecnologia similar o Bluetooth no que diz
respeito a comunicação de curta distância. No entanto, existem
diferenças significativas devido às características da tecnologia
de transporte. Os emissores de luz infravermelha no IrDA são
equipamentos direcionais, o que significa que dois dispositivos
que desejam se comunicar devem estar apontados um para o
outro para que a comunicação seja realizada com êxito. Já os
transmissores de rádio no Bluetooth são dispositivos
onidirecionais (que se propaga em todas as direções), o que
significa que um número de pessoas em dado ambiente que
possuem dispositivos Bluetooth podem interagir com os
dispositivos umas das outras independente se o dispositivo
estiver visível em suas mãos ou guardado no bolso de alguém
[4].
Além da característica direcional, o IrDA oferece altas taxas
de dados de 4 Mbps, além de ser um tecnologia barata (menos
de $5). Tipicamente, os dispositivos que utilizam a conexão
IrDA são os periféricos de computadores (modems,
impressoras, scanners, etc.), além de PDAs, relógios,
equipamentos industriais, etc [1][4].
HomeRF
A tecnologia HomeRF foi projetada tendo em mente redes
pequenas de baixo tráfego, em residências e pequenos
ambientes comerciais. Visa à comunicação entre o PC e seus
periféricos, bem como entre dispositivos inteligentes de uma
residência. Ela não é projetada para a comunicação entre
dispositivos portáteis (outras tecnologias, como o Bluetooth,
são melhores para isso), tampouco para a formação de redes ad
hoc (imediatas) – é do tipo de rede “configure-a e deixe-a” [12].
Algumas versões da HomeRF suportam velocidades de até
10Mbps. As conexões são do tipo ponto-a-ponto com alcance
de 25 a 60 metros. Permite diversas redes no mesmo ambiente
físico, com suporte de até 127 dispositivos por rede. Como tem
alto consumo de energia, não é adequada para utilização em
dispositivos portáteis. Não se integra facilmente a outras redes
sem fio existentes. Entretanto, seu custo é relativamente baixo
(menos de $200 dólares por dispositivo), é fácil de instalar,
além de não exigir ponto de acesso [1].
A HomeRF pode coexistir com o Bluetooth da seguinte
maneira: Bluetooth para substituir o cabeamento doméstico, por
exemplo, entre o PC e seus periféricos e a HomeRF como rede
local de interconexão, por exemplo, entre mais de um PC [1].
WiFi
O Instituto dos Engenheiros Elétricos e Eletrônicos - IEEE
desenvolveu uma especificação de rede local sem fio,
denominada 802.11, ou ainda Wi-Fi.
As redes 802.11 são rápidas, confiáveis e têm alcance de até
100 metros, que pode ser ainda maior em áreas abertas. Do lado
negativo, exigem hardware de ponto de acesso para a
interconexão entre os dispositivos da rede, que tem um custo
relativamente alto (equipamentos mais sofisticados podem
custar acima de $1200). Esses pontos de acesso podem ter
suporte para conexões Ethernet comum, tornando a 802.11
facilmente integrável com outras redes Ethernet com fio em
uma corporação). Além disso, não suporta serviços de telefonia,
sendo um padrão de uso estrito para a comunicação de dados –
serviços de vozpodem ser suportados pela 802.11 quando a voz
é transmitida como dado, como é o caso na tecnologia de voz
sobre IP [1].
ZigBee
ZigBee utiliza pequenos sinais de rádio digital de baixo
consumo de energia baseado no padrão IEEE 802.15.4 para
WPAN (Wireless Personal Area Networks) como uma técnica
de sinalização na qual um nó continuamente transmite pequenos
pacotes para anunciar sua presença a outras unidades móveis
[8].
Os protocolos do ZigBee foram projetados para uso em
aplicações embarcadas que requerem baixas taxas de dados e
baixo consumo de energia e pouca latência. O foco real do
ZibBee é definir uma rede mesh de propósito geral, barata, auto-
organizada que possa ser usada para controle industrial,
sensoriamento embarcado, coleta de dados médicos, alerta de
fumaça e intrusos, automação de construções e automação
doméstica. A rede resultante irá utilizar muito pouca energia,
assim dispositivos individuais deverão permanecer ligados por
um ano ou dois utilizando a bateria original [8].
UWB
UWB (Ultra-Wideband) é uma tecnologia para transmitir
informação a taxas de dados que excedam 100 Mbps,
distribuída sobre uma ampla largura de banda sobre curtas
distâncias. Essa tecnologia é projetada para fornecer um uso
eficiente da escassa largura de banda de rádio enquanto permite
conectividade sem fio com alta taxa de dados [8].
É uma tecnologia de rede sem fio para redes de área
pessoal, conhecidas por PAN (Personal Area Network), ou seja,
usando aparelhos sem fio próximo ao usuário, como por
exemplo, impressoras, mouse, teclado ou MP3 Player com no
máximo 10 metros de distância [13].
2.3. Dispositivos
Os dispositivos ubíquos combinam os quatro paradigmas da
computação pervasiva apresentados anteriormente: eles são
fortemente descentralizados, diversificados, conectados e
simples de usar [4].
Muitos dispositivos são produzidos em massa com o intuito
de abranger um grande escopo de usuários. Eles fornecem
soluções amplamente aplicáveis no domínio de uso pessoal e
profissional, como email, acesso à Internet, jogos, etc. Outros
dispositivos estão focados em um segmento muito específico de
utilização, como dispositivos de controle industrial aplicados
em processos manufatureiros, dentre outros. Sua forma é
altamente customizada e executam aplicações específicas [4].
A existência de múltiplos dispositivos, seja para o acesso a
informação, ao entretenimento, embutidos em utensílios
domésticos, embarcados em ambientes inteligentes, etc,
constitui-se um dos desafios da computação ubíqua. Essa
incrível variedade de dispositivos pode ser estruturada em
categorias, conforme segue [1][4]:
• Dispositivos de acesso à Informação: os dispositivos de
acesso à informação provêm comunicação entre usuários,
anotação, acesso à informação, etc, com o objetivo de
estender as capacidades humanas, especialmente no
trabalho. Dominantes nessa categoria estão os
organizadores de bolso portáteis chamados de Assistentes
Digitais Pessoais – PDAs. Eles são utilizados para
carregar informações relevantes e são aptos a se
conectarem em redes inteligentes. Suas aplicações
compreendem o Gerenciamento de Informações Pessoais
(PIM), o que inclui calendário, agenda de endereços e
funcionalidades de email. Além disso, outros dispositivos
que compreender a categoria de acesso à informação
podem ser citados, tais como: PCs de bolso, telefones
celulares, telefones de tela (convergência do telefone com
terminal de acesso à Internet), smartphones, etc.
• Utensílios inteligentes: essa categoria abrange um amplo
escopo de utensílios familiares, os quais são melhorados
por embutirem mais inteligência e conectividade usando
tecnologias ubíquas. No ambiente ubíquo, os utensílios
inteligentes interagem entre si para aumentar o conforto
dos usuários, seja em casa, no carro, no escritório, no
banco, no hospital, nas ruas, nos shoppings centers, etc.
Exemplos de aplicação de utensílios inteligentes incluem:
otimização do consumo de energia (aquecimento seletivo
– por cômodo da casa; aquecimento diferenciado por
ocupação da casa; aquecimento de água em função do
perfil dos moradores); manutenção de utensílios
(diagnóstico e atualização remota de micro-código em
utensílios da linha branca), comunicação entre etiquetas
de roupa e a máquina de lavar. Esses dispositivos podem
ser acessados e operados remotamente via Web, por
exemplo.
• Controles inteligentes: os controles inteligentes
caracterizam-se por serem muito pequenos podendo ser
integrados a lâmpadas, interruptores, termostatos,
sensores, atuadores, etc, em aplicações que variam desde
controle de segurança residencial (sensores em portas e
janelas para detectar a entrada de intrusos, atuadores para
acender/apagar lâmpadas específicas em horários
específicos etc), a controle de comodidades para o usuário
(sensores de temperatura, atuadores para
ligar/desligar/programar sistemas de
aquecimento/resfriamento de ambiente residencial etc.).
Os controles são conectados a redes domésticas e
gerenciados local ou remotamente, através da Web ou
applets Java, em aplicações locais.
• Sistemas de entretenimento: Os sistemas de
entretenimento envolvem dispositivos cujo uso é voltado
principalmente ao lazer. Exemplos incluem: TV (via cabo,
satélite, microondas), Set-top-boxes (caixa sobre a TV
que promove a interface entre os provedores do serviço de
difusão e a TV do consumidor), Console de jogos
(exemplos: Dreamcast da Sega, Playstation2 da Sony,
Dolphin da Nintendo e X-box da Microsoft), câmeras
digitais, brinquedos inteligentes, reprodutores de música
MP3, etc.
Claro que muitos dispositivos podem oferecer uma
combinação de aplicações e, dessa maneira, se encaixarem em
mais que uma dessas quatro categorias [4].
2.4. Tecnologias de Desenvolvimento
Como mencionado anteriormente, as aplicações ubíquas
devem lidar com uma série de diferentes características de
hardware dos dispositivos e mudanças de ambientes [4]. Devido
a restrições físicas de memória, capacidade de processamento e
bateria dos dispositivos, além da diversidade de tipos, alta
latência das redes de comunicação sem fio, dentre outros, as
aplicações para dispositivos ubíquos devem ser projetadas sem
perder de vista tais limitações. Os Sistemas Operacionais, por
sua vez, devem ser projetados tendo em vista as características
do dispositivo e o objetivo do uso. A computação ubíqua traz
novos requisitos para as infra-estruturas de serviço, ou
middlewares, tais como: descoberta de serviços, adaptação de
conteúdo, além de frameworks que atendam às necessidades
específicas [1].
Muitos sistemas operacionais foram desenvolvidos para
satisfazer às necessidades específicas da computação ubíqua:
Google Android, Windows CE, Windows for Smart Cards,
Palm OS, EPOC, QNX, GEOS, e muitos outros. Todos eles
rodam em dispositivos com pouca memória e a maioria são
projetados para executarem em muitas diferentes plataformas de
processadores [4].
No topo desses sistemas operacionais, os componentes
middlewares fornecem uma abstração das dependências
específicas do sistema operacional, conforme ilustrado na
Figura 3 seguir.
Figura 3 – Camadas de software em um dispositivo [4]
Interfaces comuns entre as aplicações e componentes de
software dedicados alavancam a portabilidade. Além de
bibliotecas e componentes proprietários, as iniciativas da
indústria estão desenvolvendo um crescente número de
frameworks padronizados e Aplication Programming Interfaces
(APIs) direcionados a sistemas ubíquos [4].
Ao desenvolver aplicações para dispositivos ubíquos, os
programadores devem ter em mente as seguintes restrições:
• tamanho limitado da tela, capacidade limitada de entrada
de dados, poder limitado de processamento, memória,
armazenamento persistente e vida da bateria; e
• alta latência, largura de banda limitada e conectividade
intermitente (o que os dispositivos esperam encontrar emtermos de conectividade).
2.4.1. Java para Ambientes Ubíquos
A independência de plataforma que a Java oferece, a grande
quantidade de bibliotecas disponíveis (de suporte a construção
de interfaces gráficas a suporte de rede), e a existência de
maquinas virtuais embutidas em vários dispositivos tornou a
linguagem Java uma tecnologia chave para o desenvolvimento
de software na computação ubíqua [4].
A Figura 4 mostra como funciona a execução de programas
Java em diferentes dispositivos. O código em Java é compilado
num código neutro e padronizado denominado bytecode. O
sistema operacional de cada dispositivo alvo utiliza um
ambiente de execução Java (Java runtime environment – JRE)
para interpretar e executar o bytecode gerado na compilação, em
tempo de execução. Um interpretador de bytecode, também
chamado de máquina virtual – VM, traduz as instruções
genéricas em comandos nativos, específicos da máquina que
está executando a aplicação. Desta forma, qualquer dispositivo
que contenha uma máquina virtual Java pode executar um
programa em Java sem que este tenha que ser recompilado.
Figura 4 – A execução do código Java em diferentes dispositivos
[1]
Como os requisitos das diferentes classes de computadores
são diferentes, uma linguagem Java de propósito geral que
acomodasse todos esses requisitos diferentes estava tornando-se
insustentável. Então, a Sun Microsystems, quem inicialmente
criou a tecnologia Java, decidiu dividir a linguagem em
diferentes especificações. Cada uma das versões de Java possui
um Kit de Desenvolvimento de Software – SDK (Software
Development Kit) que implementa a versão correspondente.
JME – Micro Edition
Tem como objetivo atender os requisitos de dispositivos
ubíquos com as seguintes limitações: pouca memória, energia
limitada, conexão intermitente à rede; capacidades gráficas
restritas, dentre outras. O JME introduz o conceito de Perfis,
que são subconjuntos da linguagem Java para diferentes grupos
de dispositivos, com o intuito de minimizar a quantidade de
memória requerida pelas bibliotecas de classes Java. É
composto de funcionalidade básica mínima obrigatória. Classes
adicionais, necessárias para suportar características típicas de
um grupo especifico de dispositivos, são incluídas em um perfil
correspondente. Caso uma aplicação precise de funcionalidade
adicional, não especificada no perfil do dispositivo, as
bibliotecas correspondentes podem ser trazidas da rede de
forma dinâmica. Inclui MVs, bibliotecas de APIs, ferramentas
para colocar aplicação no dispositivo, e configurá-lo [1][4].
A edição JME é um conjunto de produtos, tecnologias,
ferramentas e padrões necessários para criar aplicações para
dispositivos ubíquos. Inclui suporte para desenvolvimento de
aplicações no dispositivo e fora do dispositivo. O JME é
disponível em duas versões [1][4]:
• CLDC - Configuração de dispositivo limitado,
conectado (Connected, Limited Device Configuration)
para telefones celulares, PDAs e set-top boxes de média
capacidade. Contém a máquina virtual KVM, um
interpretador de linguagem Java para microprocessadores
de 16-bit ou 32-bit RISC/CISC em dispositivos com 128 a
512KB RAM, e conexão de rede intermitente. Oferece
suporte total a linguagem Java (exceto ponto flutuante,
finalização e tratamento de erro). Contém versão
minimizada dos pacotes java.lang, java.io, and java.útil do
J2SE. Implementa API javax.microedition.io, para
conexões de rede (fones móveis e aparelhos de TV).
• CDC - Configuração de Dispositivo Conectado
(Connected Device Configuration) permite desenvolver
aplicações para telefones de tela, set-top boxes, PDAs de
alta capacidade, pontos-de-venda, navegação automotiva
e utensílios domésticos. Contém uma máquina virtual
completa - CVM para microprocessadores de 32-bit
RISC/CISC/DSP em dispositivos com memória ROM
maior que 512KB e memória RAM maior que 256KB, e
conexão de rede sempre ativa. É uma versão “enxuta” do
Java Standar Edition (JSE) mais classes do CLDC. Possui
bibliotecas de UI restritas (telefones de tela, Set-top-
boxes).
O Perfil é uma forma adicional de especificar o subconjunto
de APIs Java, bibliotecas de classe e recursos de máquina
virtual para uma família específica de dispositivos. Os perfis
objetivam atender necessidades de segmentos específicos da
indústria. O MIDP – Perfil do Dispositivo de Informação móvel
(Mobile Information Device Profile) é a especificação para um
perfil JME. O MIDP foi projetado para operar acima do CLDC
com o intuito de capacitar as aplicações Java para executarem
em dispositivos móveis de informação (MIDs). Contém APIs
para o ciclo de vida da aplicação, IU, rede e memória
persistente. Provê um ambiente de tempo de execução padrão
que permite a colocação dinâmica de novos serviços e
aplicações nos dispositivos do usuário. O MIDP é um perfil
padrão comum para dispositivos moveis, independente de
fabricante. É uma estrutura completa e de suporte para o
desenvolvimento de aplicações móveis.
Três outras tecnologias são definidas para potencializar o
uso do Java: Java Card, Java Embarcado e Java para Tempo-
Real [1]:
Java Card
Menor e mais limitada versão da família Java. Não suporta
strings, interface gráfica, e possui formato de bytecode
comprimido. O Fórum Java Card
(http://www.javacardforum.org/) especifica o subconjunto da
linguagem para smart cards. As MVs são construídas por
desenvolvedores de sistemas operacionais e ficam residentes na
ROM do cartão.
Java Embarcado
Objetiva os controladores industriais, switches, e outros
dispositivos com restrições severas de memória, em dispositivos
com visor orientado a caractere ou sem visor. Não existe um
core mínimo obrigatório – classes desnecessárias podem ser
omitidas, o que, naturalmente, limita a interoperabilidade.
RTJS - Java para Tempo-Real
O Java RTJS oferece suporte na criação de aplicações para
dispositivos automotivos, industriais etc, que exigem um
comportamento de execução previsível. Resolve problemas de
coleta de lixo, realiza escalonamento personalizado de
processos e threads por compartilhamento de tempo, oferece
gerenciamento avançado de memória, além de prover acesso
direto à memória de sensores e atuadores, suporta a
sincronização de threads e objetos, trata eventos assíncronos e
etc.
É bom manter em mente que Java não é a única opção para
desenvolver aplicações para dispositivos ubíquos. Linguagens
como C e C++ também podem ser consideradas [1]. A escolha
da linguagem adequada vai depender das características do
projeto.
2.5. Interação Humano-Computador (IHC)
Weiser e Seely Brown [14] usaram o termo “tecnologia
calma” para descrever um importante aspecto de sua visão de
computação ubíqua: o fato de que a computação não deve
continuar a monopolizar a atenção do usuário. Em muitos casos,
a atividade de computação deve silenciosamente ser executada
em segundo plano (sem que o usuário perceba) e tornar seu
resultado acessível à percepção periférica do usuário de forma
ubíqua.
Dessa maneira, os computadores tendem a se tornar mais e
mais “invisíveis” em nossas vidas. Assim como o minúsculo
motor presente dentro de um CD player, o qual ninguém está
interessado em saber com funciona, um sistema computacional
construído dentro de um MP3 player que faz download de
músicas da Internet se tornará a coisa mais natural do mundo.
Não importará se foi feito em Java ou qual o modo que a pilha
TCP/IP foi implementada. Não é a tecnologia viabilizadora que
interessa, mas sim as aplicações e os serviços oferecidos terão a
maior influência visível em nossa cultura high-tech [4].
Logo, é precisos que as aplicações sejam simples e fáceis de
utilizar a partir da perspectiva e do contexto do usuário. Esse é
um dos quatro paradigmas pregados dentro da computação
pervasiva/ubíqua: a simplicidade. A flexibilidade de um
computador pessoal de propósito geral é certamente uma
façanha técnica. Porém,isso tem seu preço: esses computadores
estão se tornando incrivelmente complicados. Por exemplo,
muito das funcionalidades dos processadores de texto atuais
confundem a maioria dos usuários e reduz a facilidade de uso.
Apesar da capacidade de plug-and-play, instalar um novo
software geralmente é um desafio para usuários não
especialistas [4].
Como já mencionado anteriormente, dispositivos ubíquos
são ferramentas extremamente especializadas que são utilizadas
para um propósito específico e não geral. De um ponto de vista
de usabilidade, eles desempenham bem as tarefas para os quais
foram projetados. Nesses dispositivos, disponibilidade,
conveniência e facilidade de uso são pré-requisitos
fundamentais. O acesso e o gerenciamento da informação
devem ser realizados sem se gastar tempo significativo em
aprender como usar a tecnologia. A aceitação do usuário da
interface fornecida pelo dispositivo terá grande impacto na
aceitação dos produtos e serviços oferecidos dentro da próxima
geração da TI. Um computador, independente da forma em que
foi fabricado, deve ser uma ferramenta facilmente acessível na
vida diária, assim como um telefone é hoje. Enquanto seleção e
educação apropriados dos grupos de usuários era requerida para
gerenciar a complexidade dos sistemas computacionais
tradicionais, computadores ubíquos são intuitivos de usar e não
deveriam sequer requerer a leitura de um manual. Processos que
hoje requerem procedimentos de instalação e levam vários
comandos em um PC irão apenas necessitar de um simples
aperto de uma tecla ou mesmo aceitar requisições de voz ou
possuir reconhecimento de escrita [4].
Em seu influente e fascinante livro “O design do dia a dia”
[16], Donald Norman, psicólogo cognitivo e pioneiro em
usabilidade, descreveu o conceito de affordance, que se refere
às propriedades percebidas e reais de um objeto, principalmente
as propriedades fundamentais que determinam de que maneira o
objeto poderia ser usado. As affordances fornecem fortes
indicações para a operação dos objetos. Cadeiras são para
sentar. Maçanetas são para girar. Interruptores são para
pressionar. Bolas são para atirar ou quicar, etc. Quando se tira
proveito das affordances, o usuário sabe o que fazer apenas ao
olhar: não são necessárias imagens ilustrativas, rótulos ou
instruções. Objetos complexos podem exigir explicações, mas
objetos simples não devem precisar deles. Quando objetos
simples precisam de imagens, rótulos ou instruções, o design
fracassou.
Segundo Norman, o usuário precisa de ajuda, sendo que
apenas as coisas certas têm de ser visíveis a ele para indicar que
peças devem ser operados e de que maneira, de forma a indicar
como o usuário deve interagir com o aparelho. A visibilidade
indica o mapeamento entre as ações pretendidas e as operações
concretas. A visibilidade indica distinções cruciais, de modo
que se possa, por exemplo, diferenciar um recipiente de sal e
um de pimenta. A visibilidade dos efeitos das ações também é
importante. É ela que indica se as luzes foram devidamente
acendidas, se a tela de projeção foi baixada até a altura correta,
se a temperatura da geladeira está ajustada corretamente, e
assim por diante. É a falta de visibilidade que torna tantos
aparelhos controlados por computador tão difíceis de operar. E
é um excesso de visibilidade que torna o equipamento de som
ou o aparelho de DVD entupido de dispositivos e
sobrecarregado de aplicativos tão intimidantes para o usuário.
Todas essas características descritas por Norman são podem
ser aplicadas para atender à simplicidade esperada dos
dispositivos ubíquos. No entanto, simples não deve ser
confundido com primitivo. A computação ubíqua provê uma
visão holística: hardware e software devem estar integrados sem
emendas e direcionados para necessidades bem específicas do
usuário final. A complexidade da tecnologia deve estar
escondida por trás de uma interface com o usuário amigável.
Alcançar a facilidade de uso intencionada requer esforços
substanciais no projeto e desenvolvimento das aplicações. Para
obter acesso rápido a funções e aplicativos, hierarquias
complicadas de menus e caixas de diálogo não são aceitáveis.
Reconhecimento de fala, uso intuitivo, operações que requerem
o uso de apenas uma das mãos, inicialização rápida ou telas
sensíveis ao toque são apenas algumas das características de
interfaces com o usuários maduras. Fornecer todas elas em um
pequeno e barato dispositivo é definitivamente uma tarefa
desafiadora pra os desenvolvedores [4].
2.6. Descoberta de Serviços
No contexto de computação ubíqua, quando um cliente
móvel se move de um ambiente para outro, ele deseja conhecer
quais são os serviços que estão disponíveis no novo contexto
em que se inseriu [3].
Existe, então, uma grande necessidade por um mecanismo
que permita que os dispositivos em um determinado ambiente
interajam dinamicamente uns com os outros e ofereça serviços
para outros dispositivos, bem como torne viável que outros
dispositivos busquem por um tipo de serviço específico que
possa ser requisitado em determinado momento. Esta
característica é chamada de descoberta de serviços [4].
Diversas arquiteturas de software surgiram para tentar
solucionar este problema. Essas arquiteturas são essencialmente
������� �
��
�
�
��
�����
1. Registro dos
Serviços
2. Pesquisa por
Serviços
3. Descoberta
�������
�
��
��
�
�
��
�����
2. Pesquisa Por
Requisições
1. Registro da
Requisição
34
frameworks de coordenação que sugerem certos modos e meios
de interação entre dispositivos. Três das mais importantes
arquiteturas são: Jini, Universal Plug and Play (UPnP) e
Satutation – todas iniciativas de indústrias. A descoberta de
serviços, em termos gerais, significa que um subconjunto das
capacidade seguintes são suportadas por um dispositivo [1][4]:
• Habilidade de anunciar sua presença à rede;
• Descoberta automática de dispositivos na vizinhança e
também daqueles localizados remotamente;
• Habilidade de descrever seus serviços e reconhecer os
serviços (capacidades) dos outros dispositivos;
• Capacidade de se auto-configurar sem a intervenção de
um administrador;
• Interação com outros dispositivos na rede parar
desempenhar uma função.
Um framework de coordenação pode fazer com que
dispositivos tornem-se cientes uns dos outros. Para que isto
ocorra, algum padrão deve ser seguido pelos dispositivos. Um
dos desafios na descoberta de serviços é manter o equilíbrio
entre as necessidades de padronização e a autonomia de
dispositivos [17].
O fornecimento de serviços de aplicações para dispositivos
inteligentes implica no gerenciamento de serviços distribuídos
ao longo de um ciclo de vida completo, conforme ilustrado na
Figura 5 abaixo, e não apenas etapas específicas, como a
descoberta de serviços. O projeto de fornecimento de serviços
deve lidar com acessos a serviços intermitentes e trocas entre
diferentes instâncias de serviços, por exemplo, a saída de uma
rede sem fio para entrar em outra rede sem fio. Existem dois
aspectos distintos para isso: primeiro, definir um modelo de
ciclo de vida genérico para o fornecimento do serviços; e,
segundo, gerenciar esse ciclo de vida [8].
Figura 5 – Ciclo de vida do serviço [8]
Na fase de criação, os processos de serviço registram-se em
diretórios de serviços. Solicitantes dos serviços buscam por
serviços. Os serviços são selecionados, configurados e serviços
múltiplos necessitam ser compostos. Na fase de execução, os
serviços são invocados e múltiplos serviços interligados
necessitam de coordenação. Na fase de manutenção, os
processos de serviço, configurações de acesso e composições de
serviços devem ser atualizados. Na fase de dissolução, os
serviços são desativados ou encerrados temporariamente pelos
próprios processos ou por solicitantes. Os serviços também
podem ser terminados permanentemente e removidos [8].
2.6.1. Anúncio, Descoberta3, Seleçãoe
Configuração de Serviços
3
A descoberta de serviços também pode ser subclassificada em
pesquisa em página branca (nome, endereço, etc), pesquisa em página
amarela (busca por tipos e atributos) e pesquisa em página verde
(informações sobre como invocar o serviço).
Se os fornecedores e solicitantes dos serviços são estáticos,
então existe pouca necessidade para descoberta dinâmica de
serviços. A descoberta dinâmica de serviços4 é necessária para
permitir que solicitantes dos serviços mudem de fornecedores
quando tanto um como outro são móveis, quando o acesso à
rede é intermitente e quando os fornecedores ou requisitantes
falham. A descoberta dinâmica de serviços envolve a
dissociação do fornecimento de serviços a partir de uma
requisição e suporte a anúncios e descoberta dinâmicos de
fornecedores e solicitantes de serviços [8].
Existem duas abordagens para anúncios e descoberta
dinâmicos de serviços: push e pull. Push utiliza broadcast ou
multicast para anunciar as requisições de serviços disponíveis
ou capacidades de serviços para uma certa quantidade de partes
desconhecidas. Requisições de serviços e descrições de serviços
são subtipos de mensagens enviadas para receptores de
mensagens desconhecidos pelo remetente. O solicitante ou o
fornecedor fazem o matching5. Pull utiliza pesquisas para
localizar ou procurar listas de requisições ou capacidades
previamente anunciadas para um diretório mantido por alguma
terceira parte conhecida, por exemplo, Jini, UPnP, UDDI, etc. A
terceira parte faz o matching. A vantagem dos diretórios sobre
broadcasts é que eles minimizam o tráfego de rede relacionado
ao serviço de descoberta. A desvantagem dos diretórios é que
eles requerem a administração de uma terceira parte, o diretório
deve estar sempre disponível e ter uma localização bem
conhecida para solicitantes e fornecedores de serviços o
localizarem [8].
Existem várias dimensões de projeto para especificar a
seleção de serviços: baseado em requisição versus baseado em
capacidades versus baseado em objetivos; exata versus inexata e
sintática versus semântica. É mais comum fazer o matching das
requisições de um único usuário comparando-se as descrições
de serviços de múltiplos fornecedores em diretórios. O oposto
disso é usar um blackboard, um serviço em uma terceira parte,
no qual requisições de serviços ao invés de descrições de
serviços fornecidos são anunciados e fornecedores de serviços
procuram por solicitantes de serviços com os quais eles estão
dispostos a fornecer o serviço (ver Figura 6).
Figura 6 – Descoberta de Serviços guiada por fornecedores
publicando descrições de serviços. Adaptado de [8]
Seleção de serviços baseada em requisição geralmente
implica que os serviços que satisfaçam à requisição devem
existir no ambiente circundante, ao invés de estarem
internamente no dispositivo. Isso levanta a questão de como o
solicitante de um serviço sabe se o serviço pode ou não pode
4
O escopo do termo descoberta de serviços varia dependendo da
especificidade do projeto. Pode envolver a solicitação de uma lista de
fornecedores de serviços disponíveis que se encaixam com a
requisição. Pode ou não pode incluir seleção de serviço, configuração
de serviço, resolução de nome de serviço e até mesmo invocação de
serviço.
5
Matching neste texto refere-se à ação de comparar se determinado
serviço atende aos requisitos estabelecidos pela requisição.
����
�
����
�
����
�
����
�
�����
�
�����
�
�����
�
�����
�
�������
�
�������
�
�������
�
�������
�
����
��
�
����
��
�
����
��
�
����
��
�
Anúncio, Descoberta,
Seleção, Configuração,
Composição
Invocação,
Composição
Término, Remoção de
Registros
Reinvocação, Atualização das
Descrições, Reconfiguração,
Atualização da Composição
desempenhá-lo (devido ao fato de o serviço ter ou não ter os
recursos necessários, habilidade, etc) [8].
3. TRABALHOS RELACIONADOS
Muitas companhias e institutos de pesquisa tem
empreendido iniciativas na área da computação ubíqua. Alguns
dos primeiros projetos de pesquisa em computação ubíqua são
apresentados a seguir.
Classroom 2000
Uma funcionalidade bastante útil dos ambientes
computacionais futuros será a habilidade de capturar as
experiências reais vividas por seus habitantes e fornecer
registros aos usuários para posterior acesso e visualização. Em
1995, um grupo do Georgia Institute of Technology
empreendeu um projeto de três anos denominado Classroom
2000 na tentativa de dar suporte ao ensino e aprendizagem em
uma universidade através da introdução de um suporte
automatizado para a captura da aula [18]. Enquanto muitos
trabalhos de desenvolvimento nessa área focavam no
desenvolvimento de materiais multimídia melhorados, o projeto
Classroom 2000 tentou melhorar a geração de conteúdo através
da instrumentação6 de um cômodo com as capacidades de
registrar uma aula ao invés dos próprios estudantes terem que
fazer anotações manualmente e talvez transcrevê-las mais tarde.
O projeto tinha dois objetivos: (1) entender as questões de
projeto de uma aplicação de computação ubíqua para fornecer
captura eficiente e capacidades de acesso para experiências
reais ricas; e (2) entender o que é necessário para produzir uma
aplicação de computação ubíqua robusta cujo impacto em seu
domínio-alvo pode ser avaliado sobre um longo período de
tempo [8].
O protótipo inicial foi um grande sistema de quadro branco
eletrônico que permitia ao professor mostrar e anotar slides. Os
estudantes poderiam usar um tablet PC para fazer anotações em
suas próprias cópias dos slides. Inicialmente não havia
comunicação via rede. Em janeiro de 1997, uma segunda sala
de aula foi especialmente instrumentada para o uso de um
protótipo do Classroom 2000. Microfones e câmeras de vídeo
foram embutidos no teto e os sinais capturados por eles eram
armazenados. O quadro branco eletrônico foi usado novamente,
mas desta vez conectado na rede. Dois projetores anexados ao
texto foram ligados a computadores conectados na rede também
para visualização [8].
Smart Space e Meeting Room
Os projetos NIST Smart Space e Meeting Room (1998-
2003) focavam no uso de dispositivos pervasivos, sensores e
redes de comunicação para fornecer uma infra-estrutura para
salas de encontro inteligentes sensíveis ao contexto que
detectam as atividades humanas em curso e geram uma resposta
a essas atividades [19]. Os projetos foram divididos em duas
fases. Na primeira, espaços inteligentes experimentais foram
prototipados focando em: formas avançadas em interação
humano-computador, integração de redes sem fio pico-celulares
com descoberta de serviços dinâmica, configuração automática
de dispositivos e infra-estruturas de software necessárias para
programar aplicações de computação pervasiva. Na fase 2, o
foco eram as métrica de desenvolvimento, métodos de teste e
referências padrões para fornecer implementações de referência
para servir como modelos para possíveis produtos comerciais
[8].
6
Instrumentação neste contexto refere-se ao processo de adicionar
sensores que atuam como fonte de informação no mundo físico. Essas
fontes podem então ser configuradas e registradas para análise online
e offline.
O Meeting Room digitalizava os sinais a partir de 200
microfones, cinco câmeras de vídeo e possuía um quadro
branco inteligente. Dois conjuntos de ferramentas eram usados
para gerenciar os dados dos sensoriados. Os fluxos dos sensores
eram gerenciados usando o sistema NIST SmartFlow, uma
camada middleware de fluxo de dados que fornecia abstração
do transporte de dados e oferecia formatos consistentes para os
fluxos de dados. Metadados ou anotações dos fluxos de dados
eram atribuídos com descrições semânticas usando Architecture
and Tools for Linguistic AnalysisSystems (ATLAS). Quando as
pessoas numa sala de encontros estavam conversando entre si, o
sistema era capaz de capturar a conversa, armazenar e
transcrever o encontro gravando conversas individualmente por
falante, e disparar serviços associados a partir da Internet de
acordo com o assunto da conversa [8].
Cooltown
O projeto Cooltown da HP (2000-2003), desenvolveu uma
visão da computação ubíqua para dar suporte a usuários móveis,
fornecendo-lhes acesso a informações por meio de dispositivos
handhelds baseados na tecnologia Web e ligações entre o
mundo virtual com o mundo físico real [20]. Um ponto chave
da abordagem do Cooltown é que recursos do mundo físico
podem ter uma presença na Web. Recursos físicos estão
associados com um identificador de recursos simples padrão
(Universal Resource Locator – URL). URLs de recursos físicos
e virtuais podem ser descobertas e trocadas de forma bem
simples. Assim, quando se entra em um novo cômodo, um PDA
pode receber uma mensagem contendo a URL daquela sala via
transmissão infravermelha a partir de um transmissor presente
no cômodo, ou ler um código de barras contido no côpmodo,
etc. O PDA estará então apto para acessar o website para o
cômodo para ver as facilidades e funcionalidades disponíveis.
4. CONSIDERAÇÕES FINAIS
A computação ubíqua envolve uma diversidade de
conceitos e tecnologias. Por ser um paradigma computacional
relativamente novo, ter um entendimento claro dos aspectos
chave que o compõem é crucial para desenvolvedores que
almejam construir aplicações ou mesmo projetar dispositivos
ubíquos. Este artigo apresentou os principais conceitos por trás
da computação ubíqua, mostrando suas definições, princípios e
tecnologias envolvidas.
5. REFERÊNCIAS
[1] Araújo, Regina Borges. (2003) “Computação Ubíqua:
Princípios, Tecnologias e Desafios”, In: Simpósio Brasileiro de
Redes de Computadores, XXI, Natal. Minicurso: Livro Texto.
Natal, RN: UFRN/DIMAp: UnP, 2003. 363 p. p. 45-115.
[2] Lyytinen, K. e Yoo, Y. (2002) “Issues and Challenges in
Ubiquitous Computing”, Communications of the ACM, vol.45,
no. 12, Dezembro. Apud {1}.
[3] Adelstein , F. et al. (2005), “Fundamentals of Mobile
and Pervasive Computing”, McGraw-Hill.
[4] Hansmann, U. et al. (2003), “Pervasive Computing
Handbook”, Springer-Verlag.
[5] Weiser, M. (1991), “The Computer for the 21st
Century”, Scientific American, vol.265,no.3,Setembro., pp.94-
104. Apud {1}.
[6] Satyanarayanan, M. (1996), “Fundamentals Challenges
in Mobile Computing”, Proceedings of the Fifteenth Annual
ACM Symposium on Principles of Distributed Computing
(PODC), Philadelphia, PA. Apud {3}.
[7] Nuaymi, L. (2007), “WiMAX: Technology for
Broadband Wireless Access”. John Wiley & Sons, Ltd. Apud
{8}.
[8] Poslad, Stefan (2009). “Ubiquitous Computing Smart
Devices, Smart Environments and Smart Interaction”. Wiley.
[9] Waldman, H. e Yacoub, M. D. (1997)
“Telecomunicações - Princípios e Tendências”, Série
Universidade, Editora Érica, 287 págs. Apud {1}.
[10] Harte, L., Levine, R. e Kikta, R. (2002) “3G Wireless
Demystified”. McGraw-Hill, 496 pags. Apud {1}.
[11] Foroohar, R. (2001) “The Other Bubble”. Newsweek.
pp.13-16. May. Apud {1}.
[12] Miller, M. (2001) “Descobrindo o Bluetooth”, Editora
Campus, 289 pags. Apud {1}.
[13] Wikipédia – A Enciclopédia Livre. Disponível em
http://pt.wikipedia.org/wiki/UWB. Acesso em 13/09/2009.
[14] Weiser, M. e Seely Brown, J (1997), “The Coming
Age of Calm Technology”, In Peter J. Denning e Robert M.
Metcalfe (eds.), “Beyond Calculation: The Next Fifty Years of
Computing”, pp. 75-85. Springer-Verlag. Apud {15}.
[15] Stajano, F. (2002), “Security for Ubiquitous
Computing”. John Wiley and Sons.
[16] Norman, Donald A (2006), “O Design do Dia-a-dia”.
Rocco.
[17] Rekesh, J. (1999), “UPnP, Jini and Salutation - A look
at some popular coordination frameworks for future networked
devices”. Publication from California Software Labs. Apud {1}.
[18] Abowd, G.D. (1999), “Classroom 2000: an experiment
with the instrumentation of a living educational environment”.
IBM Systems Journal, 38(4): 508–530. Apud {8}.
[19] Stanford, V., Garofolo, J. Galibert, O., Michel,Mand
Laprun, C. (2003), “The NIST Smart Space and Meeting Room
Projects: signals, acquisition, annotation, and metrics”. Apud
{8}.
[20] Kindberg, T. and Fox, A. (2002), “System software for
ubiquitous computing”. IEEE Pervasive Computing, 1(1): 70–
81. Apud {8}.