Fernando Alberto de Sousa nusp: 3286224



Baixar 153.81 Kb.
Página1/4
Encontro29.07.2016
Tamanho153.81 Kb.
  1   2   3   4


Frameworks e Middleware para Computação Ubíqua

Fernando Alberto de Sousa - NUSP:3286224

MAC 5743 – Introdução à Computação Móvel


Frameworks e Middleware para Computação Ubíqua

MAC 5743 – Introdução à Computação Móvel



Fernando Alberto de Sousa NUSP:3286224

Prof. Alfredo Goldman – 2º. Semestre 2004



  1. Índice


Road Map 3

Introdução 3

O que é Framework? 3

O que é middleware? 5

O que é Computação Ubíqua? 5

Era da UC 6

Explorando a computação Ubíqua 7

O Visionário: Mark Weiser 8

A Infra-estrutura da computação ubíqua 8



Questões da Computação Ubíqua 9

O custo dos dispositivos computacionais 9

Baixo Consumo de Energia 9

Mobile IP 10



Projetos de Computação Ubíqua 10

Projeto Gaia 11

GaiaOS 12

Unified Object Bus 12

Os serviços do kernel 12

O Modelo de Aplicações Gaia 13

MVC Tradicional 13

MVC para Espaços Ativos 13

Coordenação do Espaço Ativo 15

Lua e LuaOrb 15

Integrando LuaOrb com Gaia 16

Considerações Finais sobre o Gaia 16



Projeto One.world 17

Critério de Avaliação 19

Serviços e aplicações sobre o one.world 20

Serviço de replicação 20

Gerenciamento de aplicação e usuários 20

Resultados Experimentais 21

Completude 21

Complexidade 21

Performance 21

Utilidade 21



Projeto Aura 21

Capturando a intenção do usuário 24



Conclusões 26

Referências 26

Frameworks e Middleware para Computação Ubíqua

MAC 5743 – Introdução à Computação Móvel

Fernando Alberto de Sousa NUSP:3286224

Prof. Alfredo Goldman – 2º. Semestre 2004
1. Road Map

Além do índice cuja semântica é meramente geográfica, esta seção foi criada para tentar explicar a seqüência física e lógica deste texto.

Inicialmente, para criar um contexto necessário à abordagem do tema, alguns conceitos básicos são elucidados.

As definições aqui mostradas podem não contemplar toda a abrangência de cada tópico, mas a intenção é abordar cada tópico de maneira a enquadrá-lo de maneira suficientemente coerente para criar o cenário de exposição do tema “Frameworks e Middleware para Computação Ubíqua”.

Após tais definições é necessário situar o tema dentro da área de interesse da disciplina “Computação Móvel” ilustrando os projetos realizados na área e discutindo a respeito de cada um deles. Tal discussão explorará alguns detalhes de cada projeto, desde sua idéia de concepção até a sua aplicabilidade, visando criar uma abordagem condizente com o escopo da disciplina.
2. Introdução

Para começar a explorar o tema alguns conceitos básicos devem ser explorados para possibilitar a compreensão do assunto como um todo, assim como serão apresentadas as definições:



  • Framework

  • Middleware

  • Computação Ubíqua


2.1 O que é um Framework?

É praticamente impossível falar sobre frameworks sem esbarrar no conceito de reutilização de software.

Para entender reutilização de software é necessário diferenciar em primeiro lugar, o que siginifica reutilizar um dado artefato em contraste com o que significa utilizar este artefato. De maneira geral, quando se fala em utilização, está implícito o fato que o artefato é utilizado sem realizar nenhuma alteração tanto na estrutura como na forma e contexto no qual ele é utilizado. Quando um artefato é utilizado depois de se fazer alguma mudança, ou é utilizado em uma tarefa ou função diferente daquela para a qual foi originalmente projetado, então este artefato está sendo efetivamente reutilizado. Esta definição coloca em evidência a característica intrínseca de reutilização de software que é a necessidade de adaptação dos artefatos para adequá-los aos requisitos da nova aplicação sendo desenvolvida. Para a reutilização de software existem diversas tecnologias disponíveis e algumas dessas mais populares são as bibliotecas de componentes, orientação a objetos e geradores de aplicações.

Com relação a reutilização de projetos, é importante mencionar que o projeto de um sistema é uma das tarefas mais importantes e complexas dentro do ciclo de desenvolvimento de software. O projeto de um sistema define, essencialmente, a sua divisão em partes, as interfaces entre elas e como estas partes cooperam para implementar a funcionalidade requisitada. O projeto envolve aspectos de organização de um sistema, como também os aspectos cognitivos das interfaces com o usuário, características específicas de plataformas de hardware que suportarão a implementação, bem como o conhecimento específico sobre o domínio da aplicação. Considerando esta diversidade de fatores, é razoável afirmar que desenvolver um projeto que forneça um equilíbrio adequado entre todos estes aspectos, não é uma tarefa que possa ser facilmente realizada por projetistas inexperientes. Portanto, a reutilização de projetos existentes se torna muito importante.

Com o advento da orientação a objetos no começo da década passada, surgiu um novo paradigma de desenvolvimento no qual a reutilização é parte integral. Os mecanismos de herança, polimorfismo e acoplamento dinâmico, habilitaram esta tecnologia para a construção de software por especialização, com base na extensão de funcionalidades de componentes existentes. Através destes mecanismos, é possível definir componentes abstratos, ou semi-acabados, cujo comportamento específico pode ser complementado por subclasses. Deste modo, na criação de componentes específicos, é possível reutilizar tanto o projeto definido pelos componentes quanto o código que implementa este comportamento.

A capacidade de definição de comportamentos abstratos, pode ser generalizada para codificar o comportamento genérico de uma família de aplicações. Cada aplicação da família, pode ser construída através da implementação de porções de comportamentos específicos para ela. Assim, é possível reutilizar, além das classes separadas, classes projetadas em conjunto para resolver a funcionalidade genérica de um domínio de aplicações. Isto significa reutilizar projeto de aplicações.

Um conjunto de classes que fornecem uma solução genérica para um determinado domínio de aplicação é chamado de framework orientado a objetos. Um framework é composto de um conjunto de classes que definem um projeto abstrato para soluções de problemas de uma família de aplicações dentro de um domínio. Um framework implementa, em termos de classes, o comportamento genérico de um domínio de aplicação, deixando a implementação dos aspectos específicos de cada aplicação para serem complementados com subclasses (especializações). Deste modo, um framework funciona como um molde para a construção de aplicações ou subsistemas, dentro de um domínio de aplicação.

Na reutilização de componentes de biblioteca (funções, procedimentos ou classes) um programador deve desenvolver a estrutura de controle que invoca estes componentes; utilizando um framework, ao contrário, o programador deve desenvolver código que será invocado pelo framework. A estrutura de controle da aplicação (ou da parte que representa a funcionalidade para a qual o framework destina-se) é codificada pelas classes do framework, as quais invocam métodos que devem ser implementados para cada aplicação em particular (aqui a palavra aplicação pode ser interpretada com o sentido de utilização). Assim, aplicações específicas são construídas especializando-se as classes do framework para fornecer a implementação de alguns métodos, embora a maior parte da funcionalidade da aplicação seja herdada.

Portanto, podemos concluir que a utilização de um framework envolve a reutilização abstrata – da idéia do projeto de aplicação que resolve um problema; e a reutilização concreta – do código do framework que implementa a arquitetura baseada na idéia da solução do problema. Assim, é possível diferenciar a utilização de frameworks da utilização de padrões de projeto e da utilização de componentes. A primeira baiseia-se na reutilização da idéia para resolver um problema específico em um contexto genérico e a segunda baseia-se na reutilização de “caixa-preta”, plugando um pacote de funcionalidade sem se importar em como ela é estruturada para resolver o problema, só se importando com o fato de que ele resolve o problema (utilizando-se a interface definida pelo mesmo).

Olhando para todas as idéias anteriormente expostas, podemos ver que não é uma tarefa simples conceber ou mesmo definir um framework, em geral a concepção de um framework pode demorar mais que a de um projeto inteiro e, ainda assim, não ser bem sucedida.



2.2 O que é Middleware?

Ainda explorando a idéia de reutilização, nos deparamos com outro conceito importante para o assunto aqui abordado. Middleware é um tema muito recorrente nos dias atuais. A idéia de criar aplicações inseridas dentro de um ambiente que provê serviços diversos faz com que este conceito fique em evidência.



Middleware é amplamente usado como um termo para denotar um conjunto de serviços genéricos sobre o sistema operacional.

A palavra Middleware é um neologismo criado para designar camadas de software que não constituem diretamente aplicações, mas que facilitam o uso de ambientes ricos em tecnologia da informação. Desta forma, a camada de middleware é uma intermediária entre a camada da aplicação e o ambiente de execução (sistema operacional ou um ambiente de execução da aplicação). A camada de middleware concentra serviços como identificação, autenticação, autorização, diretórios, certificados digitais, persistência em alguns casos, etc.

Aplicações tradicionais implementam vários destes serviços, tratados de forma independente por cada uma delas. As aplicações modernas, no entanto, delegam e centralizam estes serviços na camada de middleware. Ou seja, o middleware serve como elemento que aglutina e dá coerência a um conjunto de aplicações e ambientes.

O objetivo do middleware é facilitar o desenvolvimento de aplicações, tipicamente aplicações distribuídas, assim como facilitar a integração de sistemas legados ou desenvolvidos de forma não integrada.

Podemos facilmente distinguir os conceitos de framework e middleware: enquanto o primeiro visa prover a estrutura e o fluxo de controle para a solução de um problema que é inerente ao desenvolvimento da aplicação que o utiliza, o segundo representa uma camada provedora de serviços (geralmente baseada na reutilização de componentes, ou de “caixa-preta” comentada anteriormente) a fim de prover uma infraestrutura básica que as aplicações precisam para executar.

Assim podemos analisar cada projeto descrito posteriormente nesta monografia partindo do embasamento proveniente da análise destes conceitos.



2.3 O que é Computação Ubíqua?

Ao longo dos últimos 30 anos a velocidade de operação e a densidade de componentes eletrônicos digitais teve um crescimento significativo, enquanto o preço dos mesmos também teve uma queda significativa. Hoje, os desenvolvedores de bens de consumo estão incorporando, cada vez mais, eletrônicos digitais nos produtos finais. Se essa tendência continuar, como nós esperamos que vá, vários itens do dia-a-dia irão em breve incluir alguma espécie de computador.

Embora os computadores estejam se tornando cada vez mais frequentes em utensílios tais como: VCRs, fornos de microondas, e em assintentes digitais pessoais (PDAs), eles vão continuar muito isolados uns dos outros e de máquinas mais robustas como por exemplo, “laptops” ou computadores de mesa. No futuro, muitos computadores em conjunto, irão prover serviços mais valiosos do que isoladamente, como já acontece em alguns casos. O cenário ideal é aquele onde se tem o aproveitamento total de várias máquinas especializadas trabalhando em conjunto na rede permitindo que os usuários acessem e controlem as informações, a computação bem como, seus ambientes físico e eletrônico.

A computação ubíqua tem por objetivo tornar o uso do computador mais agradável fazendo que muitos computadores estejam disponíveis em todo ambiente físico, mas de forma invisível para o usuário.

A computação ubíqua não é realidade virtual, não é um assistente digital pessoal (PDA), não é uma computação pessoal ou íntima com agentes fazendo suas ofertas. A computação ubíqua prevê um mundo com vários tipos de dispositivos conectados entre si, com redes sem fio em todo lugar e com um custo bem baixo. Ao contrário do PDA, a computação ubíqua afirma que o usuário não precisa carregar muitas coisas consigo, uma vez que a informação pode ser acessada em qualquer lugar, e a qualquer momento.

Pervasive Computing, Computação Pervasiva ou Computação Ubíqua é o termo utilizado para referenciar a integração da computação móvel e onipresente com o espaço físico. É um tipo de computação distribuída realizada por dispositivos de computação que atuam de forma discreta nos ambientes onde estão implantados. A essência da visão, por Mark Weiser, é a criação de ambientes impregnados com dispositivos de computação e comunicação, interagindo diretamente com o homem.

Esses ambientes de computação são espaços físicos quaisquer (salas de aula, escritórios, edifícios, etc) e os dispositivos eletro-eletrônicos podem ser sensores, computadores e outros, capazes de realizar alguma computação útil aos freqüentadores do ambiente.

Os dispositivos devem estar altamente adaptados ao cotidiano dos indivíduos (pessoas, animais e/ou outros seres vivos) e em harmonia com outros objetos presentes.

Tais ambientes são comumente nomeados de “Espaços Ativos” ou “Super Spaces”. Segundo Weiser, considerado por muitos o pai da Computação Ubíqua, uma das principais características desses ambientes é que a interação entre os usuários e os dispositivos ocorre de forma tranqüila (Calm Technology). Os usuários não precisam se lembrar ou até mesmo saber que estão interagindo com máquinas. Apenas usufruir dos benefícios da computação que ocorre “na surdina”. É o que freqüentemente chamamos de computação invisível.

Ainda segundo Weiser, a computação ubíqua seria o inverso da realidade virtual. Enquanto na computação ubíqua tentamos adaptar dispositivos eletrônicos à vida das pessoas, na realidade virtual criamos uma vida fictícia onde as pessoas são inseridas, achando que estão vivendo durante o tempo em que a computação ocorre.

Outra característica importante da computação ubíqua, que inclusive explica seu nome, é a onipresença. Os dispositivos computacionais podem e devem estar presentes a qualquer hora e em qualquer lugar.

A onipresença e a adaptação dos dipositivos à vida das pessoas nos traz um vislumbre de um eventual futuro. Tal futuro traria uma grande ajuda com relação ao atual problema de “sobrecarga de informação”, ao invés das pessoas se preocuparem em lembrar as várias coisas de que necessitam, as coisas é que lembrariam as pessoas do que e quando teriam que ser executadas. Em outras palavras, uma pessoa poderia ser lembrada de que, já é hora para uma troca de óleo do seu carro, ou de que está faltando café em seu armário da cozinha, por exemplo. Ou mais além, por que não fazer com que a própria cozinha fizesse as compras dos itens necessários através de um simples envio de pedido a um supermercado?
2.4 Era da UC

A computação ubíqua é considerada por muitos a terceira onda da computação, cujo ponto de cruzamento com a computação pessoal deverá ocorrer entre 2005-2020. A era da “UC” terá vários computadores compartilhados por todas as pessoas. Alguns desses computadores serão centenas daqueles que as pessoas podem acessar durante alguns minutos de consulta na Internet. Outros estarão implantados em paredes, cadeiras, roupas, carros – em tudo. A “UC” é fundamentalmente caracterizada pela conexão das coisas existentes no mundo através da computação. Entre essas coisas estão incluídas várias escalas, até microscópicas.

A figura abaixo foi obtido a partir da web, e ilustra a cronologia das três abordagens da computação (mainframe, pessoal e ubíqua):


2.5 Explorando a computação Ubíqua

A computação ubíqua foi criada à partir de uma análise do papel dos computadores nas atividades diárias das pessoas. Em particular, um estudo antropológico sobre a rotina de trabalho mostrou que os homens vivem situações de compartilhamento e de habilidades tecnológicas não treinadas. Entretanto, tanto o computador está isolado, como vem isolando o homem de todas as situações, e não tem conseguido estar fora do caminho. Em outras palavras, ao invés de ser uma ferramenta com o qual o ser humano trabalha, e portanto deixando de ser uma preocupação, o computador tem estado constantemente no foco das atenções. E isso é real, principalmente quando se fala em computador pessoal, especificamente em PC’s, “palmtops”, etc. A caracterização do computador do futuro é a de um “computador íntimo”, ou de preferência “um assistente do homem”...

Tirar os computadores fora do caminho dos seres humanos não é uma tarefa fácil. Esse não é um problema de interface do usuário (GUI) e sim, uma propriedade do contexto de uso da máquina e de seus recursos, como um todo. O problema não é de “interface”. Pela mesma razão de contexto, também não é um problema de multimídia, resultante de uma deficiência qualquer relativa a exibição de certos tipos de dados em tempo real ou integração dos mesmos na aplicação. (Na realidade, a multimídia tenta capturar a atenção, que é o oposto do ideal invisível proposto pela computação ubíqua). O grande desafio é o de criar um novo tipo de relacionamento entre pessoas e máquinas (computadores), na qual os computadores teriam que tomar a dianteira quanto a sairem do caminho e deixarem as pessoas se ocuparem de suas vidas.

Os computadores ubíquos têm que demandar menos concentração do que as atuais interfaces comerciais que requerem disponibilidade e foco. Através de interações casuais, eles deverão prover mais informações e mais vantagens oriundas de uma inteligência orquestrada e de sistemas altamente conectados.

A criação de sistemas tão intuitivos e distribuídos requer dois ingredientes chaves: contexto e comunicação. A comunicação permite que componentes do sistema compartilhem informação sobre suas situações (status), sobre os usuários e sobre o ambiente – que é o contexto no qual eles operam. Especificamente, informação de contexto deve incluir elementos tais como:

• O nome da posição corrente do usuário;

• A identidade dos usuários e das pessoas ao redor;

• Identidades e status das impressoras locais, estações de trabalho, máquinas de café, etc.;

• Parâmetros físicos tais como: tempo, temperatura, condições de meteorologia.
2.6 O Visionário: Mark Weiser

Mark Weiser foi o criador da computação ubíqua ou “ubicomp”. No Laboratório de Ciência da Computação da Xerox Parc foram realizados vários estudos para se poder compreender como as pessoas trabalhavam e que ferramentas usavam. Weiser percebeu que a melhor utilização de uma ferramenta é quando o usuário não percebe que está utilizando-a, isto é, o usuário não percebe seu uso e dessa forma, ele pode centrar mais atenção no trabalho que está realizando.

Dr. Weiser começou suas pesquisas em 1988 e percebeu que a tecnologia da época não era suficiente para suportar a sua visão. Então ele se focou primeiro, nas diferentes características da computação ubíqua, como dispositivos que eram portáteis e cuja localização era sempre conhecida ou em dispositivos que auxiliariam as pessoas a trabalharem em conjunto. Os primeiros protótipos foram os “tabs”, “pads” e “boards”. “Tabs” são similares a pequenos blocos de anotações eletrônico similares aos “Post-It” e, poderiam haver centenas deles em um escritório, cada um correspondendo a uma pequena superfície com informações. Já os “pads” são como blocos amarelos, maiores, ou computadores usados com o objetivo de serem usados momentaneamente e depois, poderem ser deixados para outras pessoas quaisquer. Os “boards” são enormes quadros negros eletrônicos, que visam permitir o trabalho colaborativo e que estão em uso, hoje em dia.
2.7 A Infra-estrutura da computação ubíqua

Para alcançar as metas da Computação Ubíqua se faz necessária uma infra-estrutura altamente sofisticada. No sistema ideal, um mecanismo de registro seqüencial de passos em tempo real vai supor as localizações e status operacional dos inúmeros componentes do sistema e vai se utilizar do contexto para despachar mensagens de forma mais inteligente. Os usuários serão capazes de escolher entre uma grande variedade de dispositivos a fim de obterem mobilidade, acesso aos dados em banda larga e recursos computacionais em qualquer ponto da rede. Automaticamente, eles vão adaptar seus comportamentos de modo a se ajustar ao usuário corrente e ao contexto.

É
Representação genérica da infra-estrutura para Computação Ubíqua
impossível prognosticar as séries de formas dos dispositivos e suas capacidades disponíveis daqui a uma década. Alguns trabalhos se basearam no tamanho dos dispositivos, um fator que provavelmente continuará a dividir os computadores em categorias funcionais. Uma metáfora bem útil que ilustra essa abordagem é a que considera o cumprimento tradicional das unidades, em Inglês: polegadas, pés e jardas. Essas unidades se desenvolveram porque representavam três escalas significativamente diferentes sob ponto de vista humano.

• Dispositivos em escala de polegada, em geral, podem ser facilmente associados a roupas ou objetos carregados na mão ou em bolso.

• Dispositivos do tamanho de pés também podem ser carregados, apesar de que não, o tempo todo e os empregados vão usá-los de modo semelhante ao modo que usam seus “notebooks” hoje em dia. Alguns “notebooks” são pessoais e são carregados para lugares particulares, para propósitos particulares. Nossos “notepads” são espalhados pelo local de trabalho e podem ser usados por quaisquer pessoas e quaisquer propósitos.

• No escritório do futuro vão existir computadores com vídeos em tamanho de jardas. Provavelmente serão dispositivos estacionários análogos aos quadros de avisos atuais.


2.8 Questões da Computação Ubíqua

Alguns aspectos atuais da computação precisam mudar de forma a ajudar a computação ubíqua a se tornar realidade. É sabido que a computação ubíqua vai compreender um grande conjunto de dispositivos pequenos, onde muitos deles vão estar em comunicação constante uns com os outros, de modo que questões como: qual seria a infraestrutura necessaria para viabilizar a computação ubíqua; como esse tipo de infraestrutura pode ser construído a partir da existente hoje, são algumas das questões levantadas e que precisam ser respondidas. Assim sendo, essa seção se propõe a analisar alguns “hardware” e limitações de usabilidade que atualmente impedem a computação ubíqua de se tornar realidade.


2.8.1 O custo dos dispositivos computacionais

Um dos fundamentos da computação ubíqua é “uma pessoa, para muitos computadores”. De modo a satisfazer a idéia de muitos computadores, cada computador precisa custar menos. Hoje em dia, um computador de mesa do tipo “desktop” (como por exemplo um Palm Pilots) custam em torno de quinhentos dolares, ou mais. Obviamente, o custo é alto para dar margem a um computador por pessoa.

Entretanto, os tipos de computadores que estarão envolvidos na computação ubíqua não vão precisar ser computadores para propósitos genéricos, e não vão portanto precisar ter a mesma velocidade e capacidade de armazenamento requerida pelos nossos tradicionais computadores pessoais. Assim sendo, eles poderão custar menos, especialmente porque o custo dos processadores e dos discos rígidos está em queda constante, como parte da chamada “Moore’s Law” que determina que a quantidade de transistores que cabe em um silicone dobre a cada dezoito meses.

Ainda existem componentes que não tiveram queda significativa de preço. Em especial, os monitores de computadores tradicionais e telas LCD não apresentaram queda de preço suficiente que justificasse uma troca de dispositivos de computador antigos por novos. A fim de que os dispositivos para computação ubíqua tenham um custo relativamente baixo, será necessário a produção em escala dos mesmos, como por exemplo a produção de motores elétricos. A computação ubíqua só será praticável quando os custos dos dispositivos apresentarem uma queda em seus custos tal que será possível poder jogar fora computadores individuais com monitor, sem levar em consideração o seu custo. Fazendo uma comparação, as calculadoras de mão já tiveram um custo bem alto, mas nos dias de hoje são tão baratas que geralmente elas são dadas como promoção em vários produtos.

  1   2   3   4


©principo.org 2016
enviar mensagem

    Página principal