Rogério Ferreira Rodrigues Formatação e Controle de

Сomentários

Transcrição

Rogério Ferreira Rodrigues Formatação e Controle de
Rogério Ferreira Rodrigues
Formatação e Controle de
Apresentações Hipermídia com
Mecanismos de Adaptação Temporal
TESE DE DOUTORADO
DEPARTAMENTO DE INFORMÁTICA
Programa de Pós-Graduação em Informática
Rio de Janeiro
Março de 2003
Rogério Ferreira Rodrigues
Formatação e Controle de Apresentações Hipermídia
com Mecanismos de Adaptação Temporal
Tese de Doutorado
Tese apresentada ao Programa de Pós-graduação
em Informática do Departamento de Informática da
PUC-Rio como parte dos requisitos parciais para
obtenção do título de Doutor em Informática.
Orientador: Prof. Luiz Fernando Gomes Soares
Rio de Janeiro
março de 2003
Rogério Ferreira Rodrigues
Formatação e Controle de Apresentações Hipermídia
com Mecanismos de Adaptação Temporal
Tese apresentada ao Programa de Pós-graduação
em Informática do Departamento de Informática da
PUC-Rio como parte dos requisitos parciais para
obtenção do título de Doutor em Informática.
Aprovada pela Comissão Examinadora abaixo
assinada.
Prof. Luiz Fernando Gomes Soares
Orientador
Departamento de Informática – PUC-Rio
Prof. Edward Hermann Haeusler
Departamento de Informática – PUC-Rio
Prof. Marco Antonio Casanova
Departamento de Informática – PUC-Rio
Prof. César Augusto Camillo Teixeira
Faculdades COC
Prof. Philippe Mahey
ISIMA – Universidade Blaise Pascal
Prof. Ney Dumont
Coordenador Setorial do Centro
Técnico e Científico – PUC-Rio
Rio de Janeiro, 27 de março de 2003
Todos os direitos reservados. É proibida a reprodução total ou
parcial do trabalho sem autorização da universidade, do autor e
do orientador.
Rogério Ferreira Rodrigues
Graduou-se em Engenharia de Computação na PUC-Rio
(Pontifícia Universidade Católica do Rio de Janeiro) em 1994.
Obteve em 1997 o Mestrado em Informática pela mesma
Universidade. Tem atuado, desde 1995, como pesquisador do
Laboratório TeleMídia, do Departamento de Informática da
PUC-Rio, sendo também professor do curso de Especialização
em Redes de Computadores, dessa mesma instituição. Ministrou
cursos em empresas como Embratel e Petrobrás e em
instituições como a Fundação Getúlio Vargas. Tem também
trabalhado na validação de terminologia de traduções dos livros
técnicos em informática da editora Campus.
Ficha Catalográfica
Rodrigues, Rogério Ferreira
Como faço para solicitar a elaboração da ficha catalográfica da
minha tese?
Além de fornecer cópia em papel ou arquivo com a folha de
rosto da publicação, o autor deverá informar:
- número total de páginas preliminares (pré-textuais);
- número total de páginas textuais e pós-textuais;
- número de volumes, quando mais de um;
- dimensão (altura) da publicação;
- se contém ilustrações e referências bibliográficas;
- palavras-chave atribuídas pelo autor; e
- e-mail ou um disquete para o envio do arquivo com a ficha
catalográfica.
Os dados podem ser enviados por e-mail - [email protected]
- ou entregues em qualquer Biblioteca do Sistema de
Bibliotecas da PUC-Rio.
A Divisão de Bibliotecas e Documentação elabora fichas
catalográficas de teses, dissertações, monografias e outras
publicações da PUC-Rio
Este trabalho é dedicado
À Paula, grande amor da minha vida.
A toda minha amada família, em
especial meus pais, Vera e Gerson, e
minha irmã Mariana.
Agradecimentos
Agradeço, em primeiro lugar, ao meu orientador, professor Luiz Fernando
Gomes Soares, por todos os seus ensinamentos, que vão muito além do trabalho
contido neste documento. Sua seriedade e ao mesmo tempo bom humor,
criatividade, dedicação e paixão pela pesquisa, e principalmente pelo ensino,
marcaram a minha formação. Serei eternamente grato por toda confiança
depositada em meu trabalho e todas as oportunidades oferecidas.
Agradeço também ao grande amigo Luiz Fernando Gomes Soares. Foi uma
felicidade encontrar esse parceiro de samba, craque de bola, sempre companheiro
e mais recentemente querido padrinho.
A toda minha família pelo amor, carinho, união e apoio incondicional.
Coloco aqui um agradecimento especial aos meus avós Rosinha, Guilherme (in
memorian), Zoé e Biel. Agradeço também à minha mais nova família Lourdinha,
Paulo, Cynthia e Grude.
Aos meus amigos, quase irmãos, Dadá, Guinle, Lu, Ricardo, Silvia, Sérgio,
Van e querida prima Carmen.
Aos amigos do Laboratório TeleMídia, em particular, Débora, Sérgio, Guido
e Tadeu. Além da amizade, estiveram sempre dispostos a cooperar e contribuir
com este trabalho. Preciso também agradecer aos telemidianos Leandro, Heron,
Marcel, Juliana e Cláudia, cujas pesquisas contribuíram diretamente na
concretização desta tese. A todos que trabalham ou trabalharam no laboratório,
formando esse ambiente e espírito muito especiais: “The Tele never sleeps” e
“Nascemu tamo pronto pra morrê”!
Aos membros da banca pelos preciosos comentários e revisões.
Agradeço a todos os professores e funcionários do Departamento de
Informática da PUC-Rio pelo excelente exemplo profissional e ajuda na realização
desta tese.
Por fim, gostaria de agradecer ao CNPq, à CAPES, à Finep e à PUC-Rio
pelo apoio financeiro fornecido ao longo deste doutorado.
Resumo
Rodrigues, Rogério Ferreira; Soares, Luiz Fernando Gomes. Formatação e
controle de apresentações hipermídia com mecanismos de adaptação
temporal. Rio de Janeiro, 2003. 156p. Tese de Doutorado – Departamento
de Informática, Pontifícia Universidade Católica do Rio de Janeiro.
A construção de sistemas hipermídia/multimídia requer a implementação de
um elemento responsável por receber a especificação de um hiperdocumento (sua
estrutura, seus relacionamentos e a descrição da forma de exibição desejada) e
concretizá-la na apresentação propriamente dita, sendo esse módulo de controle de
execução comumente denominado formatador hipermídia. O objetivo desta tese é
discutir os aspectos referentes ao projeto e desenvolvimento de formatadores
hipermídia, propondo um modelo de execução de hiperdocumentos e uma
estrutura genérica (framework) capaz de ser reutilizada na implementação de
sistemas hipermídia. Em particular, o trabalho aborda as questões referentes à
adaptação dos documentos antes e durante as suas apresentações, às estratégias de
antecipação das ações de exibição (mecanismos de pré-busca), aos mecanismos de
integração com os exibidores de mídia e aos mecanismos de integração com a
infra-estrutura de exibição (em especial, sistema operacional e rede). A proposta
apresentada segue uma especificação orientada a objetos, definindo uma
arquitetura
para
sincronização
temporal
e
espacial
na
exibição
de
hiperdocumentos, que pode ser utilizada também em outros domínios de aplicação
que necessitem de sincronização em tempo real.
Palavras-chave
Hipermídia;
multimídia;
formatadores
hipermídia;
framework
para
formatadores hipermídia; sistema HyperProp; modelo de contextos aninhados;
NCM; sincronização temporal e espacial.
Abstract
Rodrigues, Rogério Ferreira; Soares, Luiz Fernando Gomes. Formatting
and controlling hypermedia presentations with temporal adaptation
mechanisms. Rio de Janeiro, 2003. 156p. DSc Thesis – Departamento de
Informática, Pontifícia Universidade Católica do Rio de Janeiro.
The
development
of
hypermedia/multimedia
systems
requires
the
implementation of an element responsible for receiving the specification of a
hyperdocument (structure, relations and presentation descriptions) and controlling
the presentation. This execution control module is commonly known as
hypermedia formatter. The goal of this thesis is to discuss the aspects related to
the design and implementation of hypermedia formatters, proposing a
hyperdocument execution model and a framework to be reused in the
implementation of hypermedia systems. In particular, this work deals with
document adaptation issues, both before document presentation and on-the-fly,
prefetching mechanisms, integration with presentation tools, and integration with
the infrastructure (in special, operating system and network). The proposal
presented follows an object-oriented specification approach, defining an
architecture for temporal and spatial synchronization in hyperdocument
presentations. The proposal can also be used in other application domains that
need real-time synchronization.
Keywords
Hypermedia; multimedia; hypermedia formatter; hypermedia formatter
framework; HyperProp system; nested context model; NCM; spatial and temporal
synchronization.
Sumário
1
Introdução .......................................................................................... 1
1.1
Motivação....................................................................................... 1
1.2
Objetivos ........................................................................................ 8
1.3
Organização da tese.................................................................... 10
2
Modelos de Documentos Hipermídia com Recursos de Adaptação11
2.1
Adaptação em sistemas hipermídia............................................. 12
2.1.1
Documentos hipermídia .................................................... 12
2.1.2
Elementos que influenciam a adaptação dos
hiperdocumentos ............................................................................. 19
2.1.3
Local e momento da adaptação........................................ 21
2.2
Requisitos para modelos de documentos hipermídia .................. 22
2.3
Modelo de documentos para controle da execução .................... 27
2.3.1
Objetos de execução ........................................................ 28
2.3.2
Elos ................................................................................... 43
2.3.3
Suporte à adaptação no modelo de execução.................. 52
2.3.4
Agrupamentos de objetos de execução e
relacionamentos .............................................................................. 57
3
Formatadores e Ferramentas de Exibição Hipermídia ..................... 59
3.1
Estrutura básica de um formatador hipermídia............................ 60
3.2
Diagrama de classes genérico para o desenvolvimento de
formatadores hipermídia......................................................................... 67
3.3
Integração entre ferramentas de exibição e formatadores
hipermídia............................................................................................... 70
3.3.1
Interface entre formatadores e ferramentas de exibição .. 73
4 Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia ............................................................................................... 77
4.1
Pré-busca em apresentações hipermídia .................................... 77
4.1.1
Arquitetura para implementação de mecanismos
de pré-busca.................................................................................... 83
4.2
Orquestração intra-mídia em apresentações hipermídia ............. 86
4.2.1
Arquitetura para implementação da orquestração
intra-mídia........................................................................................ 95
4.3
Mecanismos de adaptação .......................................................... 97
4.3.1
Ajuste dos tempos elásticos.............................................. 99
4.3.2
Arquitetura para implementação de mecanismos de
adaptação...................................................................................... 102
5
Formatador HyperProp................................................................... 104
5.1
Conversor NCM ......................................................................... 104
5.1.1
Suporte à apresentação de documentos descritos em outros
modelos de autoria ........................................................................ 112
5.2
Compilador e executor do orquestrador de apresentação do
formatador HyperProp .......................................................................... 113
5.3
Integração entre as ferramentas de exibição e o formatador .... 116
5.3.1
Monitorando os tempos dos eventos de apresentação... 123
5.4
Mecanismo de pré-busca........................................................... 127
5.5
Ajuste dos tempos elásticos e escolha das alternativas ............ 128
6
Trabalhos Relacionados................................................................. 131
6.1
Formatadores multimídia/hipermídia ......................................... 131
6.2
Integração entre formatadores e ferramentas de exibição ........ 135
6.3
Mecanismos de pré-busca......................................................... 137
6.4
Mecanismos de adaptação ........................................................ 139
7
Conclusões..................................................................................... 142
8
Referências .................................................................................... 147
Lista de Figuras
Figura 1 – Visão geral dos elementos envolvidos em um sistema
hipermídia................................................................................................. 2
Figura 2 – Relações de Allen................................................................... 23
Figura 3 – Modelos das informações fornecidas a um formatador
hipermídia para controle da execução dos hiperdocumentos. ................ 26
Figura 4 – Diagrama de classes para os objetos de execução. .............. 28
Figura 5 – Diagrama de classes para os objetos de dados..................... 29
Figura 6 – Diagrama de classes para os descritores............................... 32
Figura 7 – Diagrama de classes para os eventos. .................................. 37
Figura 8 – Máquinas de estados dos eventos. ........................................ 42
Figura 9 – Diagrama de classes simplificado para os elos...................... 44
Figura 10 – Diagrama de classes para o elo causal................................ 45
Figura 11 – Diagrama de classes para as regras de exibição................. 52
Figura 12 – Diagrama de classes para as alternativas de objetos de
execução. ............................................................................................... 55
Figura 13 – Alternativas de objetos, pontos de interface e elos. ............. 56
Figura 14 – Suporte à adaptação de relações no modelo....................... 57
Figura 15 – Diagrama de classes para o contêiner. ................................ 57
Figura 16 – Principais elementos que compõem um formatador
hipermídia............................................................................................... 61
Figura 17 – Diagrama de classes para o desenvolvimento de
formatadores. ......................................................................................... 68
Figura 18 – Interface para integração de ferramentas de exibição e
formatadores, prevendo a utilização de adaptadores para integração com
exibidores cuja interface difere da esperada pelo formatador................. 72
Figura 19 – Fórmula geral para o cálculo do tempo de preparação de um
objeto de execução. ................................................................................ 80
Figura 20 – Diagrama de classes para implementação de mecanismos de
pré-busca em documentos hipermídia. ................................................... 84
Figura 21 – Visão simplificada da exibição de conteúdos de documentos
hipermídia representada através do modelo de
composição de serviços. ........................................................................ 88
Figura 22 – Exibição de conteúdos armazenados localmente, eliminando
a figura do provedor de infra-estrutura. ................................................... 90
Figura 23 – Ilustração dos conceitos de serviço e meta-serviço nos
ambientes de execução hipermídia. ........................................................ 91
Figura 24 – Diagrama de classes para implementação de mecanismos de
orquestração intra-mídia.......................................................................... 96
Figura 25 – Classes de duração no modelo de execução....................... 99
Figura 26 – Exemplos de funções de custo. a) Função de custo simples.
b) Função de custo simples, porém discreta. c) Função de custo linear do
tipo piece-wise com dois segmentos. d) Função de custo linear do tipo
piece-wise com múltiplos segmentos. ................................................... 100
Figura 27 – Diagrama de classes para implementação de mecanismos de
adaptação.............................................................................................. 103
Figura 28 – Exemplo de documento estruturado em composições....... 105
Figura 29 – Diagrama de classes das ferramentas de exibição. ........... 116
Figura 30 – Ferramenta de exibição de texto no formato HTML. .......... 118
Figura 31 – Ferramenta de exibição integrada a exibidores JMF.......... 119
Figura 32 – Máquina de estados de um exibidor JMF........................... 120
Lista de Tabelas
Tabela 1 – Sincronização temporal através de elos causais................... 49
Tabela 2 – Sincronização temporal através de elos causais, a partir de
uma especificação de sincronização utilizando composições. ................ 50
Tabela 3 – Sincronização espacial e temporal através de elo causal. .... 50
Tabela 4 – Interface que deve ser oferecida por toda ferramenta de
exibição. ................................................................................................. 74
Tabela 5 – Mapeamento entre ações solicitadas pelo formatador e os
métodos invocados no exibidor JMF. .................................................... 121
Tabela 6 – Mapeamento entre notificações do exibidor JMF e transições
de estado do evento de apresentação .................................................. 122
Tabela 7 – Regras para habilitação dos eventos de apresentação....... 125
Introdução
1
1
Introdução
Sistemas hipermídia têm se tornado cada vez mais comuns no dia-a-dia de
um grande número de pessoas, sendo a WWW (World-Wide Web) (Berners-Lee
et al., 1994a) a principal responsável pela popularização desse paradigma de
estruturação das informações. No entanto, diversos aspectos no projeto e
desenvolvimento de sistemas hipermídia permanecem como tópicos em aberto,
motivando inúmeros trabalhos de pesquisa.
Este capítulo inicialmente descreve, de uma forma genérica, os principais
ambientes que compõem as arquiteturas dos sistemas hipermídia, a fim de motivar
este trabalho e situar o contexto no qual ele se insere. Em seguida são destacados
os objetivos desta tese e é descrita a estrutura deste documento.
1.1
Motivação
Como ponto de partida, é possível salientar três ambientes como formando a
base principal do suporte ao tratamento de documentos hipermídia: o ambiente de
autoria, o ambiente de armazenamento e o ambiente de execução. A Figura 1
ilustra os componentes básicos desses ambientes e os relacionamentos entre eles.
O ambiente de autoria hipermídia deve oferecer os recursos para que os
usuários, no caso os autores, editem os hiperdocumentos, especificando, por
exemplo, os seus componentes, as propriedades desses componentes, os
relacionamentos
internos
existentes
no
documento
e,
possivelmente,
relacionamentos externos, isto é, com componentes pertencentes a outros
documentos. Mais ainda, é importante que no ambiente de autoria o autor tenha
ferramentas que permitam especificar as características de exibição para cada um
dos componentes.
Durante a edição, é interessante que o usuário possa usufruir de visões
distintas em função do contexto de autoria mais relevante. Por exemplo, em um
Introdução
2
dado momento da edição, pode ser mais útil trabalhar com uma visão estrutural
dos componentes. Em outras circunstâncias, é possível que seja mais apropriado
possuir uma visão temporal, mais próxima do formato final de apresentação do
documento. Descrições das relações espaciais, da organização de um trabalho
cooperativo e das relações de versionamento podem também justificar a existência
de outras visões. É importante observar que essas visões não precisam, e muitas
vezes não devem, funcionar isoladamente. Na maioria dos casos, as diferentes
visões podem ser consideradas como dimensões que se complementam na
constituição do documento hipermídia (Jourdan et al., 1998b; Muchaluat-Saade et
al., 1997).
Usuários
(“Leitores”)
Execução
Ferramentas
de
Exibição
Dispositivos
Autoria
Ambiente Gráfico
Edição
gráfica
Usuários
(“Autores”)
<xml>
<tag>
Edição
content...
declarativa
</tag>
</xml>
Provedor de Serviços de
Comunicação
Armazenamento
Formatador
Controle
de Versões
Suporte ao
Trabalho
Cooperativo
Adaptação
Servidores
de conteúdo
Servidores
de estruturas
Figura 1 – Visão geral dos elementos envolvidos em um sistema hipermídia.
Duas abordagens têm sido usuais nos ambientes de autoria hipermídia,
relacionadas à forma como a interface de especificação dos documentos é
oferecida aos autores. Diversos sistemas dispõem de editores gráficos com o
intuito de tornar a tarefa de especificação mais simples e natural. Nesse sentido,
podem ser citados os ambientes de autoria dos sistemas Firefly (Buchanan &
Zellweger, 1992), HyperProp (Soares et al., 2000) e Madeus (Jourdan et al.,
1998a) e os editores CMIFed (van Rossum et al., 1993) e GRiNS (Oratrix, 2002).
Introdução
3
No entanto, a WWW também popularizou o paradigma de especificação de
documentos através de linguagens estruturadas e declarativas, primeiro com a
linguagem HTML (W3C, 1999c) e posteriormente com a metalinguagem XML
(W3C, 2000). Essa abordagem traz como importante benefício o fato de não haver
necessidade do autor utilizar um software particular para autoria ou visualização
da especificação, podendo ser utilizado um editor de texto genérico. No entanto,
dependendo da complexidade da linguagem e do próprio documento, a tarefa do
autor pode se tornar árdua e ineficiente. Diversos editores de texto específicos
para linguagens declarativas trabalham nesse nível, oferecendo algumas
facilidades para que o processo de autoria se torne menos penoso, como são os
casos dos editores HomeSite (HomeSite, 2001), Arachnophilia (Lutus, 2002) e
SMILGen (SMILGen, 2002).
O fato de existirem essas duas abordagens não implica que as mesmas sejam
mutuamente excludentes; na realidade, elas se complementam. XML tem se
mostrado uma forma simples e adequada para auxiliar na descrição estruturada de
documentos. O seu formato textual pode não ser o mais eficiente, mas tem se
revelado uma maneira apropriada de representar os documentos hipermídia,
facilitando, principalmente, o intercâmbio desses documentos com os outros
ambientes de um mesmo sistema, ou mesmo entre sistemas heterogêneos. No
entanto, conforme discutido anteriormente, a complexidade de uma linguagem de
autoria, ou mesmo de um documento, pode tornar a edição puramente textual
inapropriada. Desse modo, é adequado conceber um ambiente de autoria onde haja
facilidades gráficas para a edição, mas também exista uma representação
estruturada e textual para os documentos sendo elaborados, podendo ser feita a
passagem de uma abordagem de autoria para a outra em qualquer momento. Essa
tem sido a prática adotada em alguns sistemas de autoria hipermídia (Oratrix,
2002; Jourdan et al. 1998a; Soares et al., 2000).
Retornando à divisão dos sistemas hipermídia nos três ambientes
inicialmente apresentados, o próximo a ser comentado é o ambiente de
armazenamento. A esse ambiente cabe oferecer os mecanismos para gravar,
recuperar e até mesmo adaptar os documentos. Nos sistemas hipermídia
distribuídos que seguem uma arquitetura cliente/servidor, como é o caso da grande
Introdução
4
maioria dos sistemas, o ambiente de armazenamento pode ser visto como
constituindo-se no próprio servidor hipermídia.
É possível separar o armazenamento em duas classes, que apresentam
requisitos distintos e podem operar de maneira independente: o armazenamento da
descrição dos documentos (contendo informações a respeito da estrutura,
possivelmente dos relacionamentos entre os componentes e das especificações de
apresentação) e o armazenamento do conteúdo dos objetos de mídia (arquivos de
texto, imagem, áudio, vídeo etc.). Para o armazenamento das descrições dos
documentos, é interessante que o ambiente disponha de mecanismos de controle
de versão, de controle de acesso e de métodos para organizar o trabalho
cooperativo de um conjunto de autores. É também útil que o ambiente permita que
sejam recuperadas apenas partes de um documento, sem que isso obrigue a
recuperação de um documento inteiro. Com relação ao armazenamento dos
conteúdos dos componentes de um documento, é desejável, além da existência de
mecanismos de controle de versão de conteúdo, que o serviço de entrega dos
dados seja capaz de estabelecer e manter acordos de qualidade de serviço (QoS),
principalmente para a entrega de conteúdos não convencionais, como os de
objetos de áudio e vídeo.
Outra funcionalidade desejável em ambientes de armazenamento e que
merece destaque é a capacidade de adaptar os hiperdocumentos (estrutura,
apresentação ou o próprio conteúdo dos objetos) antes de entregá-los. Essa
adaptação pode levar em consideração as características da plataforma no lado do
ambiente de armazenamento (capacidade de processamento disponível, banda
passante disponível para o acesso aos recursos gravados em memória secundária,
número de clientes conectados, banda passante para transmissão dos dados no
sistema de comunicação etc.) e também as informações provenientes do próprio
ambiente de execução (preferências e conhecimento prévio do usuário, recursos de
hardware disponíveis na plataforma de exibição, localização etc.). Todas essas
informações fazem parte do contexto de apresentação do documento (Boll & Klas,
1999; Brusilovsky, 1996; Dey et al., 2001; Schilit et al., 1994; Villard et al.,
2000). O principal objetivo da adaptação localizada no ambiente de
armazenamento é que o mesmo forneça os conteúdos (ou mesmo o documento
como um todo) com configurações que melhor atendam ao contexto em que eles
Introdução
5
venham a ser exibidos, buscando ao mesmo tempo otimizar a utilização dos
recursos que estejam situados no servidor (ambiente de armazenamento), no
caminho até o cliente hipermídia (provedor de serviços de comunicação) e no
próprio cliente (ambiente de execução). Idealmente, ao invés de prover uma única
configuração rígida, o ambiente de armazenamento deve também ser capaz de
fornecer os dados (conteúdos, descrição do documento etc.) com configurações
flexíveis, permitindo que também o cliente tenha condições de aplicar
transformações no documento, a fim de adequá-lo à sua visão do contexto de
apresentação.
Independente do tipo de dado sendo armazenado (descrição ou conteúdo de
objetos), o ambiente não deve ser restrito a um único local de gravação. É
extremamente útil que o armazenamento seja distribuído em vários servidores e o
ambiente ofereça recursos de cache, replicação, migração etc. É também desejável
que a exata localização de um objeto seja transparente para os usuários das
funcionalidades de persistência. Evidentemente, o oferecimento desses recursos e
dessa transparência, preservando a escalabilidade do sistema, acarreta uma série
de dificuldades para a manutenção da consistência dos dados.
O terceiro e último ambiente a ser comentado e que se constitui no foco
desta tese é o ambiente de execução dos documentos, também conhecido como
ambiente de apresentação. Esse ambiente normalmente encontra-se situado junto
ao cliente hipermídia e deve conter os mecanismos para interagir com os usuários,
no caso os leitores dos documentos, e controlar a exibição dos objetos (textos,
imagens, vídeos, áudios etc.) de tal forma que as intenções especificadas pelos
autores sejam respeitadas. Entre os elementos que compõem o ambiente de
execução podem ser destacados: as ferramentas de exibição e o formatador
hipermídia.
As ferramentas de exibição correspondem aos módulos de software, ou
mesmo de hardware, responsáveis por lidar com os dispositivos de entrada e saída
e controlar a exibição do conteúdo dos objetos, cuidando, por exemplo, de
questões de descompressão, tratamento de interações do usuário, controle da taxa
de exibição para o caso de objetos de mídia contínua etc.
O formatador hipermídia é o nome dado ao elemento que reúne as funções
para o controle propriamente dito da apresentação. O termo formatador hipermídia
Introdução
6
(ou simplesmente formatador) (Buchanan & Zellweger, 1993a; Rodrigues et al.,
1997; Soares et al., 2000; Villard et al., 2000) costuma ser empregado numa
analogia aos formatadores de texto1. Da mesma forma que os formatadores
textuais retiram do autor a carga de manualmente posicionar os elementos na
forma final desejada, os formatadores hipermídia idealmente efetuam um ajuste
automático da apresentação, a fim de simplificar o processo de autoria e a sua
manutenção. No entanto, a presença de objetos de mídia contínua e de
relacionamentos de sincronização temporal e espacial tornam as tarefas do
formatador hipermídia complexas de serem desempenhadas.
Em primeiro lugar, é importante que o formatador hipermídia e as
ferramentas de exibição apresentem uma forte integração, com uma interface bem
definida para a troca das mensagens, pois são essas ferramentas que decodificam
os conteúdos e são capazes de perceber o ponto exato em que a exibição de um
determinado objeto se encontra para informá-lo ao formatador. Além disso, o
usuário interage diretamente com as ferramentas de exibição e não com o
formatador, cabendo a elas repassar as informações a respeito dessas interações.
Por outro lado, o formatador deve poder enviar comandos às ferramentas para que,
por exemplo, a taxa de apresentação de um objeto seja modificada a fim de
recuperar a sincronização do documento.
Muitas vezes, a fim de manter consistente a apresentação, o formatador
precisará ajustar o hiperdocumento (estrutura ou a forma de apresentação), ou
mesmo requisitar que as ferramentas ajustem a exibição de cada conteúdo. Esses
ajustes podem ser necessários por causa da flexibilidade na descrição dos
documentos oferecida nos ambientes de autoria e de armazenamento; pela própria
navegação do usuário, gerando eventos que não puderam ser previstos antes de
iniciar a exibição do documento; por atrasos, também impossíveis de serem
previstos no sistema operacional e na rede; ou por quaisquer outras informações
provenientes do contexto de exibição (recursos de hardware disponíveis na
máquina do cliente, preferências e perfil do usuário etc.). Sendo assim, de maneira
similar ao que foi especificado para o ambiente de armazenamento, também no
ambiente de execução devem existir mecanismos de adaptação, que levem em
Player e engine são outros dois termos também comuns de serem encontrados na literatura como
denominação do elemento responsável por controlar a exibição de documentos hipermídia.
1
Introdução
7
conta as flexibilidades na especificação do documento e as características da
plataforma de exibição e do usuário.
Na realidade, os mecanismos de adaptação no ambiente de armazenamento
são úteis quando o mesmo se encontra em uma máquina diferente da máquina
onde o documento será exibido, ou seja, uma estação que difere da estação que
contém o ambiente de execução. Nesse caso, a adaptação ocorre como uma forma
de eliminar as configurações inviáveis (ou inconsistentes) de apresentação de um
documento, buscando evitar o desperdício na utilização dos recursos de
comunicação e processamento. Mais ainda, quando realizados no ambiente de
armazenamento,
esses
mecanismos
podem
simplificar
o
projeto
e
a
implementação dos ambientes de execução, facilitando inclusive a integração com
clientes simples, já desenvolvidos, sem capacidade de adaptação. No entanto, é
importante frisar que, sem estratégias de adaptação no cliente, é impossível ter um
controle adequado sobre a qualidade das apresentações dos hiperdocumentos, pois
várias das estratégias de ajuste, ou mesmo de prevenção, que são algumas das
funções dos mecanismos de adaptação, devem estar localizadas o mais próximo
possível do usuário “leitor”, que é justamente quem percebe quando ocorre uma
variação qualquer que afete a compreensão do documento. Além disso, se por um
lado a incorporação desses mecanismos aumenta a complexidade dos clientes, a
distribuição do processamento despendido com os mecanismos de adaptação, que
não é desprezível, torna a arquitetura mais escalável.
Cabe aqui comentar que as estratégias de adaptação no formatador são
desejáveis, mas mais desejável ainda é que uma vez iniciada uma apresentação, a
necessidade para que ajustes ocorram seja mínima. Dessa forma, o formatador
deve procurar sempre analisar a descrição de apresentação e a estrutura do
hiperdocumento antes da sua exibição, planejar a sua execução e, sempre que
possível, antecipar-se às ações, para diminuir as chances de ser surpreendido pelos
acontecimentos imprevisíveis anteriormente mencionados, principalmente as
questões de atraso no sistema operacional e na rede.
Idealmente, a configuração de um sistema hipermídia não deve impor
restrição à localização de cada um dos ambientes, podendo os mesmos residir em
máquinas distintas ou em uma mesma máquina. Mais ainda, cada ambiente pode
constituir-se em um conjunto de estações, formando o próprio ambiente uma
Introdução
8
arquitetura distribuída. O armazenamento é o caso mais comum e foi comentado
anteriormente. No entanto, essa configuração distribuída pode também ser útil
para autoria e apresentação. No primeiro caso, é possível considerar como
exemplo um cenário onde a autoria seja feita de maneira cooperativa envolvendo
diversos usuários (Gorini, 2001). Já um sistema de teleconferência com suporte ao
intercâmbio de documentos e à realização de anotações poderia ser considerado
como um exemplo de apresentação hipermídia distribuída (Oliveira, 1996).
A troca de informações entre os vários ambientes será sempre intermediada
por um provedor de serviços de comunicação (Colcher, 1999). Nos casos mais
comuns em que os ambientes se encontram localizados em máquinas distintas, a
própria rede juntamente com o hardware e software de comunicação presentes em
cada estação formam esse provedor. No caso particular em que todos os ambientes
encontram-se na mesma estação, o provedor de comunicação pode ser
representado pelo sistema operacional e os mecanismos utilizados localmente para
a troca de mensagens. As características desse provedor e dos serviços por ele
oferecidos (serviço de melhor esforço, serviço com reserva de recursos etc.)
exercerão influência direta no projeto dos ambientes, principalmente os de
apresentação e armazenamento, conforme será melhor discutido no Capítulo 4
deste trabalho.
1.2
Objetivos
O objetivo desta tese é abordar as questões relacionadas ao controle de
execução de documentos hipermídia no lado cliente, com destaque especial para
os mecanismos de adaptação das apresentações. Sendo assim, o foco deste
trabalho é a modelagem de ambientes de execução hipermídia (Figura 1).
Contudo, uma vez que alguns aspectos de exibição estão diretamente relacionados
às características dos provedores de comunicação (rede) e processamento (sistema
operacional), esta tese também estabelece as interfaces para junção com os
serviços oferecidos por um provedor de comunicação e processamento, baseado
em uma arquitetura com provisão e gerência de QoS (Gomes, 1999; Gomes et al.,
2001).
Introdução
9
Sendo este um trabalho para abordar os aspectos de execução das
apresentações hipermídia, será essencial estabelecer um modelo de documentos
hipermídia apropriado para o controle das apresentações. Mais ainda, este modelo
deverá permitir especificações que favoreçam a implementação de mecanismos de
ajuste das exibições, fazendo com que a formatação da apresentação seja realizada
de maneira adaptativa. O modelo proposto é baseado em máquinas de estados de
eventos, relacionamentos de causalidade e relacionamentos de restrição. Cabe
comentar que, para o desenvolvimento desta tese, as características do modelo
hipermídia NCM (Nested Context Model) (Casanova et al., 1991; Soares et al.,
1995; Souza, 1997) exerceram grande influência. Da mesma forma, o trabalho de
pesquisa realizado também trouxe diversos refinamentos para o NCM (Soares et
al., 1998a; Soares et al., 1998b; Soares et al., 1999; Soares et al., 2000; Soares et
al., 2003).
A partir da proposta de modelo hipermídia para execução dos documentos,
esta tese discute as funcionalidades que devem ser abordadas no projeto de
ambientes de execução hipermídia. Entre as principais funcionalidades de
formatação de hiperdocumentos que serão tratadas ao longo deste documento,
podemos ressaltar: a adaptação dos documentos em função das especificações de
autoria e das características da plataforma de exibição (por exemplo, ajuste das
durações dos objetos de mídia e escolha do conteúdo mais adequado), a integração
do formatador com ferramentas de exibição para diferentes tipos de mídia (vídeo,
áudio, texto etc.), a elaboração de planos para a pré-busca dos objetos, a gerência
da QoS para a transmissão e exibição dos conteúdos dos objetos e a conversão
entre modelos de documentos de autoria e o modelo de execução.
As funcionalidades apresentadas são reunidas em um framework que tem
como objetivo facilitar a implementação de ambientes de execução hipermídia.
Essas funcionalidades são estruturadas de uma maneira modular, buscando
permitir que nem todas estejam presentes em uma implementação real, sem que
isso afete a lógica de funcionamento do formatador. Mais ainda, as principais
funcionalidades são elas próprias modeladas como frameworks, objetivando que
suas implementações possam também ser reusadas em mais de uma
implementação de formatador hipermídia.
Introdução
10
A fim de validar a proposta deste trabalho, foi realizada a implementação de
um formatador seguindo a arquitetura definida e baseando-se no modelo de
documentos para execução desenvolvido. A generalidade do modelo de execução
permite acomodar modelos de documentos existentes através de instanciações de
conversores no formatador. Nesse sentido, foram também implementados dois
conversores capazes de realizar a tradução de outros dois modelos (NCM e SMIL)
para o modelo de execução proposto.
1.3
Organização da tese
Esta tese está estruturada da seguinte forma. O Capítulo 2 discute as
possibilidades de adaptação para hiperdocumentos e levanta os requisitos para os
modelos de documentos hipermídia. A partir desse estudo, o capítulo apresenta o
modelo hipermídia utilizado como ponto de partida para a construção da
arquitetura de formatação. O Capítulo 3 aborda as funcionalidades desejáveis em
um ambiente de execução hipermídia e estabelece uma arquitetura genérica para
facilitar o projeto e implementação desses ambientes. O Capítulo 4 complementa
o Capítulo 3 com uma análise dos requisitos dos mecanismos de adaptação e prébusca de objetos em formatadores hipermídia. O capítulo também trata da questão
da negociação e manutenção da qualidade de serviço (QoS) nas apresentações
hipermídia, comentando os aspectos de integração do ambiente de execução com
os provedores dos serviços de processamento e comunicação. O Capítulo 5
apresenta a instanciação da proposta para o sistema hipermídia HyperProp (Soares
et al., 2000) e comenta a respeito de dois conversores desenvolvidos. Um que
transforma especificações de documentos no modelo NCM para o modelo de
execução do formatador HyperProp, e outro que adapta, para esse mesmo
formatador, documentos especificados na linguagem SMIL (Synchronized
Multimedia Integration Language) (W3C, 1998b; W3C, 2001a), padronizada pelo
Consórcio WWW (W3C Consortium2). O Capítulo 6 traz uma comparação com os
principais trabalhos relacionados na área e o Capítulo 7 tece as considerações
finais da tese, salientando as contribuições do trabalho e as pesquisas futuras.
2
http://www.w3c.org/
Modelos de Documentos Hipermídia com Recursos de Adaptação
11
2
Modelos de Documentos Hipermídia com Recursos de
Adaptação
A computação orientada a contexto (Context-Aware Computing) (Dey et al.,
2001; Schilit et al., 1994) é um paradigma que se propõe a permitir que as
aplicações possam descobrir e tirar proveito das informações que as circundam,
tais como, perfil do usuário, localização, horário do dia, recursos próximos, infraestrutura disponível, entre outros. Muitas das propostas nessa linha de pesquisa
estão ligadas à computação móvel e à computação ubíqua; no entanto, várias das
questões que devem ser tratadas relacionadas a essa área resolvem problemas que
independem de características de mobilidade e ubiqüidade do sistema.
Conforme discutido no capítulo anterior, é desejável em sistemas hipermídia
a existência de mecanismos que realizem a adaptação dos documentos, isto é, que
apliquem algum tipo de transformação nos hiperdocumentos a fim de torná-los
mais apropriados ao contexto em que estejam sendo visualizados. Dessa forma, os
sistemas hipermídia que dispõem de técnicas de adaptação para a formatação dos
hiperdocumentos podem ser considerados como exemplos de aplicações
orientadas a contexto. Existe, contudo, uma grande quantidade de ajustes e
transformações que podem ser entendidos como formas de adaptação de um
hiperdocumento.
O objetivo deste capítulo é, inicialmente, discutir as principais
possibilidades de adaptação de documentos hipermídia. Isso é feito basicamente
respondendo a quatro perguntas: “o que adaptar?”, “em função do que adaptar?”,
“onde adaptar?” e “quando adaptar?”. Essa análise permite estabelecer as
principais características que devem permear o modelo hipermídia utilizado como
base para a elaboração dos hiperdocumentos, assim como o modelo de
informações contextuais. Além dos requisitos para favorecer a incorporação de
mecanismos de adaptação, o capítulo também apresenta uma análise geral das
características
desejáveis
de
serem
encontradas
em
um
modelo
de
hiperdocumentos. Com base em todos esses estudos, o capítulo se encerra com a
Modelos de Documentos Hipermídia com Recursos de Adaptação
12
descrição do modelo hipermídia de execução utilizado como ponto de partida para
a construção da arquitetura de formatação apresentada no capítulo seguinte.
2.1
Adaptação em sistemas hipermídia
2.1.1
Documentos hipermídia
Para entender as possíveis formas de adaptação de documentos hipermídia,
o ponto de partida é analisar o objeto da adaptação, ou seja, os próprios
hiperdocumentos. Na realidade, mais que os documentos, é preciso compreender o
modelo hipermídia por trás de suas descrições. Todo sistema hipermídia reside
sobre pelo menos um modelo de documentos que estabelece um conjunto de
entidades, a semântica dessas entidades, os seus inter-relacionamentos e as
operações que podem ser aplicadas sobre as mesmas. É possível encontrar na
literatura
uma
variedade
de
propostas
de
modelos
de
documentos
multimídia/hipermídia. AHM (Hardman et al., 1993a), Dexter (Halasz &
Schwartz, 1994), HyTime (ISO/IEC, 1992), I-HTSPN (Willrich et al., 1996), IMD
(Vazirgiannis, 1999), Labyrinth (Díaz et al., 2001), Madeus (Jourdan et al.,
1998a), MHEG (ISO/IEC, 1996), NCM (Soares et al., 1995; Soares et al., 2000),
OCPN (Little & Ghafoor, 1990) e ZYX (Boll & Klas, 1999) são alguns exemplos.
As definições de alguns modelos podem também ser implicitamente encontradas
na especificação de linguagens declarativas, como HTML (W3C, 1999c) e SMIL
(W3C, 2001a). Além desses casos, certos sistemas como Chimera (Anderson,
1997), CMIFed (van Rossum et al., 1993), DHM (Grønbaek et al., 1997), Firefly
(Buchanan & Zellweger, 1992), Hyper-G (Andrews et al., 1995) e Microcosm
(Hall et al., 1996) também possuem definições de modelos multimídia/hipermídia
associadas.
Modelos de Documentos Hipermídia com Recursos de Adaptação
13
2.1.1.1
Adaptação dos nós
De um modo geral, duas entidades estão presentes em todos os modelos
hipermídia: os nós e os relacionamentos entre os nós. Um nó hipermídia, também
conhecido como objeto de dados ou recurso, tem como principais atributos sua
identificação e o seu conteúdo. O principal tipo de nó encontrado em todos os
modelos hipermídia é o nó de mídia, muitas vezes denominado nó de conteúdo ou
objeto de mídia. Esses nós atômicos (ou simples) costumam ser especializados em
subclasses, tais como texto, imagem, áudio e vídeo, em função do tipo de
informação por ele contida. Normalmente, o valor do atributo conteúdo desses nós
é expresso através de uma referência para os dados propriamente ditos (URI de
um arquivo, por exemplo), mas nada impede que o conteúdo esteja inteiramente
armazenado no próprio nó. Alguns modelos hipermídia utilizam o conceito de
composição para a definição de um outro tipo de nó: o nó composto. Um nó de
composição, também chamado de objeto de dados composto, permite agrupar
diversos nós (simples ou compostos) recursivamente, oferecendo suporte para
uma especificação estruturada e muitas vezes hierárquica dos documentos.
A adaptação dos objetos de mídia (objetos de dados simples) está
diretamente relacionada com a adaptação do conteúdo do documento. A forma
mais comum desse tipo de adaptação é a escolha de partes do documento
baseando-se em diferentes alternativas de conteúdo contidas em arquivos, ou
fontes de dados3, distintos. No entanto, nada impede que as alternativas sejam
estabelecidas automaticamente pelo sistema, extraídas de uma única versão do
conteúdo; por exemplo, através de um mecanismo de descarte, ou inserção,
automático de quadros que consiga alterar a taxa de exibição de um vídeo.
Em termos das opções de alternativas que podem ser estabelecidas para os
conteúdos dos nós, é possível identificar duas principais categorias. A primeira é a
adaptação pela simples variação da qualidade da informação, por exemplo,
modificando a resolução em pixels ou as opções de cores de uma imagem. A
segunda categoria de adaptação é aquela que modifica a própria quantidade (ou
3
Exemplos de fontes de dados seriam câmeras de captura de vídeo.
Modelos de Documentos Hipermídia com Recursos de Adaptação
14
tipo) de informação apresentada, tal como a alteração do texto de uma aula em
função dos objetivos e pré-requisitos do aluno.
Algumas observações devem ser feitas com relação às definições dos dois
parágrafos anteriores. Em primeiro lugar, o ajuste automático de um conteúdo
(estabelecimento das alternativas pelo próprio sistema a partir de uma única
versão) é mais simples de ser realizado quando a adaptação modifica apenas a
qualidade da informação, ao passo que a seleção de alternativas a partir de
diferentes versões pode ser facilmente utilizada em qualquer uma das opções.
Outra consideração importante é que as adaptações tanto da quantidade como da
qualidade da informação podem ser interessantes de serem aplicadas de modo
combinado. Por exemplo, o vídeo de uma aula a ser exibida para um aluno pode
ser escolhido dependendo do seu histórico (aula para iniciante, aula para aluno
avançado etc.) e, posteriormente, a sua taxa de exibição escolhida em função da
banda passante da conexão de rede utilizada pelo aluno.
A adaptação automática da qualidade dos conteúdos a partir de uma única
versão é uma característica desejável em um sistema de apresentação hipermídia,
pois traz como benefício, principalmente para os autores, a facilidade no reuso e
manutenção dos objetos, evitando uma proliferação de versões desses objetos.
Todavia, tal adequação automática traz consigo algumas dificuldades em termos
de implementação. Por exemplo, para que a taxa de transmissão de um vídeo na
rede efetivamente diminua, é preciso que o transmissor saiba efetuar uma
manipulação de descarte do conteúdo e que o receptor consiga processar esse
conteúdo modificado. Além disso, esse modo de adaptação limita o ajuste a uma
taxa mínima, abaixo da qual não é possível compreender a informação (Boll et al.,
1999a). Mais ainda, pode ser que o ambiente de execução do cliente não disponha
de decodificadores ou dispositivos de saída apropriados para o tipo de mídia do
conteúdo. Sendo assim, é útil que, além da adaptação automática a partir de uma
única versão, também seja possível a adaptação dos documentos através de
substituições dos conteúdos por outras alternativas, que podem, inclusive, ser de
tipos de mídia diferentes. Por exemplo, em um dado contexto, pode ser apropriado
substituir um nó de áudio por um nó de texto. Esse tipo de adaptação é também
conhecido como adaptação cross-media (Boll et al., 1999a).
Modelos de Documentos Hipermídia com Recursos de Adaptação
15
Apesar de existir a possibilidade de transformar o tipo de mídia de um
conteúdo automaticamente, por exemplo, sintetizando um áudio a partir de um
texto, a adaptação cross-media é mais usual de ser implementada utilizando a
idéia de versões distintas previamente estabelecidas em conteúdos separados. Isso
porque a transformação automática do tipo de mídia pode impor retardos
proibitivos, principalmente para aplicações interativas.
Um caso particular de adaptação de conteúdo pela variação de qualidade que
merece destaque é a modificação na duração dos objetos, também denominada
computação dos tempos elásticos ou simplesmente ajuste elástico (Bachelet et al.,
2000; Buchanan & Zellweger, 1993b; Kim & Song, 1995). Esse tipo de adaptação
atua na apresentação dos objetos, aumentado (stretching) ou diminuindo
(shrinking) suas durações em relação aos valores originais (ou ideais), com o
objetivo de garantir a consistência temporal do documento, ou seja, respeitar as
restrições temporais entre objetos de mídia impostas pelo autor. Para as mídias
estáticas como texto ou imagem, esse tipo de ajuste é trivial de ser efetuado. No
entanto, para as mídias contínuas, tais como vídeo e áudio, esse tipo de adaptação
pode se tornar mais complexo de ser implementado. O ideal é que o sistema
(ferramentas de exibição, ambiente de armazenamento etc.) possua algoritmos que
modifiquem a duração do conteúdo dinamicamente, preservando ao máximo a
informação original. Na impossibilidade de dispor desses algoritmos, duas
soluções simples são: utilizar a idéia de seleção de alternativas (possuir o objeto
em várias versões, com durações distintas) ou realizar um simples corte
(truncamento) ou repetição (loop) de parte do conteúdo. A primeira solução,
entretanto, traz dificuldades para a autoria, obrigando a geração do conteúdo em
diversas versões, enquanto a segunda estratégia provavelmente resultará em uma
má qualidade de apresentação.
É importante observar que os conceitos em que se baseia o ajuste elástico
temporal podem ser transpostos para o arranjo espacial dos objetos, resultando em
um ajuste elástico das dimensões dos nós cujos conteúdos são baseados em mídias
visíveis. Na verdade, historicamente, a funcionalidade de ajuste espacial
automático é anterior ao ajuste elástico temporal, sendo amplamente explorada,
principalmente nos editores de texto.
Modelos de Documentos Hipermídia com Recursos de Adaptação
16
Nem sempre o ajuste elástico está relacionado com a qualidade da mídia
exibida, mas somente esse caso será tratado neste trabalho. Apenas como título de
exemplo, suponha que para a manutenção do sincronismo temporal, fosse
primeiro determinado o tempo disponível para exibição de cada objeto, que
guiaria então a procura por uma alternativa que tratasse do assunto naquele tempo
estabelecido.
A definição de composições em modelos hipermídia pode ser de utilidade
para alguns dos tipos de adaptação comentados até aqui. Em primeiro lugar, se
essas composições tiverem tratamento similar ao dos nós de conteúdo, ou seja, se
elas também forem consideradas objetos de dados, a especificação de alternativas
para os objetos de dados simples poderia ser facilmente estendida, permitindo,
dessa forma, utilizar essa flexibilidade para, ao invés de realizar uma adaptação de
mídias particulares, efetuar uma adaptação estrutural (ou mesmo no formato de
apresentação) dos documentos. Um exemplo de substituição desse tipo seria a
troca de um vídeo por uma seqüência de imagens juntas com um texto explicativo
para acomodar a apresentação à banda passante disponível no acesso do cliente.
Um segundo aspecto relaciona-se com o ajuste temporal. As composições podem
permitir que os algoritmos de adaptação atuem de forma hierárquica, calculando
as durações de maneira global em termos de objetos compostos e, independente e
progressivamente, refinando o cálculo para os objetos contidos em cada
composição.
Um aspecto importante nos modelos de documentos hipermídia é a maneira
como os parâmetros de apresentação dos objetos de dados, tais como posição na
tela, cor de fundo, ferramenta de exibição e duração são especificados. Em alguns
modelos, essas informações são armazenadas em entidades específicas, separadas
da estrutura lógica e do conteúdo do documento. Isso permite que um mesmo
padrão de apresentação seja aplicado a vários objetos de dados, e que um mesmo
objeto seja exibido com diferentes características, oferecendo uma interessante
forma de reutilização e uma facilidade de manutenção das especificações de
autoria. Neste trabalho, denominaremos descritor a entidade responsável por
conter as informações para apresentação de um objeto de dados.
Permitir que o autor do documento especifique, ao invés de um único
descritor, uma lista de opções, torna possível ao sistema hipermídia selecionar as
Modelos de Documentos Hipermídia com Recursos de Adaptação
17
características de apresentação mais adequadas para cada objeto de dados a ser
exibido. Com isso, os objetos do documento passam a poder ter não apenas os
seus conteúdos, mas também os seus aspectos de exibição adaptáveis. Outra
flexibilidade interessante é permitir que essas características de apresentação
sejam escolhidas também em função da navegação do usuário e de suas
preferências.
De um modo geral, todos os mecanismos de adaptação associados à
qualidade da informação devem atuar cooperativamente com o controle de
apresentação do sistema hipermídia. Dispor os ambientes de execução dos
sistemas hipermídia com esses tipos de recursos de adaptabilidade permite que o
autor crie um único documento que poderá ser exibido em uma diversidade de
plataformas. Além disso, em plataformas onde não é possível negociar e reservar
recursos, os mecanismos de adaptação da qualidade do conteúdo podem tornar o
sistema capaz de reagir e adequar a apresentação aos recursos que estiverem sendo
oferecidos em um dado instante. Mesmo em plataformas com provisão de QoS
(reserva de recursos), existe sempre a possibilidade do provedor de serviços não
conseguir manter a qualidade negociada, obrigando uma renegociação e um
conseqüente ajuste da apresentação. Tudo isso evidencia a importância de um dos
objetivos desta tese, qual seja, tratar dos mecanismos de adaptação ligados à
variação na qualidade das informações exibidas.
A adaptação do tipo (ou quantidade) de informação apresentada é, sem
dúvida, um requisito desejável em sistemas hipermídia, mas não faz parte do
escopo deste trabalho. A referência (Brusilovsky, 1996) oferece um panorama
amplo das pesquisas nessa área, e este capítulo, em particular, procura também
contribuir com a análise das diversas possibilidades de adaptação para
apresentações de hiperdocumentos.
2.1.1.2
Adaptação das relações
Conforme comentado no início da seção anterior, juntamente com os nós, os
relacionamentos entre eles constituem-se num dos conceitos mais importantes
presente em todos os modelos hipermídia. Esses relacionamentos são
normalmente representados através de elos (links) ou de composições. Exemplos
Modelos de Documentos Hipermídia com Recursos de Adaptação
18
do uso de elos podem ser encontrados nos hiper-elos da linguagem HTML (W3C,
1999c), nos elos espaciais e temporais do modelo NCM (Soares et al., 2000), nas
transições das redes de petri dos modelos OCPN (Little & Ghafoor, 1990) e IHTSPN (Willrich et al., 1996), e nos relacionamentos temporais no sistema
Firefly (Buchanan & Zellweger, 1992). As composições paralela e seqüencial da
linguagem SMIL (W3C, 2001a), os operadores temporais do modelo ZyX (Boll &
Klas, 1999), bem como os templates da linguagem NCL (Muchaluat-Saade, 2003)
são exemplos de composições que estabelecem semânticas de relacionamentos
temporais entre os seus componentes.
Existem vários tipos de relações que podem estar presentes em um modelo
de documentos hipermídia (Soares et al., 2000): relações de referência, relações de
contextualização, relações de sincronização, relações de derivação e relações entre
tarefas. No entanto, a maioria dos trabalhos que abordam a questão da adaptação
das relações (Brusilovsky, 1996) o fazem apenas para as relações de referência,
também denominadas de relações de navegação. Na verdade, na referência citada,
a adaptação das relações de contextualização, que são aquelas que especificam a
estrutura hierárquica de organização do documento, por exemplo, a divisão de um
livro em capítulos, dos capítulos em seções e assim por diante, também são
mencionadas, porém englobadas como relações de navegação.
As técnicas de suporte à chamada navegação adaptativa procuram auxiliar
os usuários a encontrar o caminho mais apropriado de interação no documento.
Basicamente, essas técnicas se dividem em viagens guiadas, ordenação dos
relacionamentos, ocultação adaptativa dos relacionamentos, anotação adaptativa
dos relacionamentos e adaptação de mapas (Brusilovsky, 1996).
Não faz parte do foco desta tese abordar os aspectos de adaptação dos
relacionamentos. Os estudos nesse tema sofrem uma grande influência da
inteligência artificial e, na maioria das vezes, dependem de uma pesquisa em
conjunto com a área de interação humano-computador. A referência (Brusilovsky,
1996) analisa diversos trabalhos que utilizam diferentes métodos para aplicação
das cinco técnicas de adaptação citadas no parágrafo anterior. Além desse
trabalho, as referências (Muchaluat-Saade, 1996; Muchaluat-Saade et al., 1998)
mostram a utilização de visões de olho-de-peixe como técnicas de adaptação de
mapas para auxiliar tanto na autoria como na navegação de documentos
Modelos de Documentos Hipermídia com Recursos de Adaptação
19
hipermídia. Essas duas últimas referências também tratam do uso de trilhas para
orientar os usuários em viagens guiadas.
Concluindo esta Seção 2.1.1, em termos de modelos de documentos
hipermídia, é possível resumir como sendo duas as principais entidades (ou
conceitos) que podem ser objetos de um mecanismo de adaptação: os nós (de
mídia ou compostos) e os relacionamentos entre os nós (elos ou composições).
Evidentemente, essas duas entidades podem ser ajustadas de uma maneira
combinada. Esta tese, no entanto, tem como foco apenas a adaptação de nós ligada
à qualidade da informação exibida.
2.1.2
Elementos que influenciam a adaptação dos hiperdocumentos
O objetivo desta seção é analisar as principais informações que, de alguma
maneira, podem direcionar os mecanismos de adaptação de um sistema hipermídia
na escolha da configuração mais adequada do documento. Em outras palavras,
esta seção procura responder à pergunta: em função do que deve ser feita a
adaptação dos hiperdocumentos? Na verdade, alguns exemplos da seção anterior
já mencionaram certos aspectos ligados a essa questão.
Como ponto de partida, existem dois principais conjuntos de parâmetros
externos aos documentos que podem exercer influência sobre suas adaptações: as
características do usuário e as características da infra-estrutura (Boll et al., 1999b).
Os valores desses conjuntos de parâmetros são justamente as informações que
reunidas compõem o contexto de exibição de uma aplicação hipermídia,
mencionado no capítulo anterior e no princípio deste capítulo. A adaptação às
características do usuário, também classificada como adaptação ao interesse
pessoal, pode levar em consideração o conhecimento do usuário a respeito dos
assuntos tratados no conteúdo dos documentos, os objetivos e comportamento do
usuário durante a sua navegação, a sua experiência prévia e as suas preferências.
Já a adaptação à infra-estrutura concentra-se nos aspectos relacionados à
plataforma de exibição, tais como a banda passante do sistema de comunicação, o
poder computacional e memória disponíveis nos equipamentos participantes da
transmissão e da exibição do documento, os dispositivos de E/S presentes na
máquina onde o documento é exibido etc.
Modelos de Documentos Hipermídia com Recursos de Adaptação
20
Manter os valores desses vários parâmetros exige a introdução do conceito
de gerência de contexto nos sistemas hipermídia adaptativos. Devido ao
dinamismo de algumas das informações, tais como banda passante e recursos de
processamento e armazenamento disponíveis, é útil que haja agentes monitores
distribuídos pelos ambientes, a fim de coletar os dados pertinentes para
constituição do contexto, que pode ser mantido de uma maneira distribuída ou por
uma unidade central. Com o objetivo de tornar a gerência de contexto um
mecanismo independente e reutilizável por várias aplicações (não necessariamente
apenas aplicações hipermídia) é importante que se estabeleça um protocolo aberto
a ser utilizado na consulta às informações do contexto e também um formato
aberto e extensível para descrição dos dados. Esforços em pesquisa têm sido feitos
para tratar a questão da gerência de contexto em redes móveis (Chen & Kotz,
2000; Schilit et al., 1994) e para negociação de preferências e capacidades
(Lemlouma & Layaïda, 2001). Uma tendência que se observa, justamente com o
intuito de tornar o mecanismo o mais inter-operável possível, é a utilização de
linguagens XML para descrição dos recursos (W3C, 1999a; W3C, 1999b) e de
protocolos baseados em HTTP para consulta e negociação (Gudgin et al., 2001;
Ohto & Hjelm, 1999). Esta tese não trata dos aspectos ligados à gerência de
contexto, mas assume a sua existência para apoiar a formatação e, mais
especificamente, a adaptação das apresentações dos hiperdocumentos. Como
trabalho futuro, pretende-se integrar o formatador HyperProp, apresentado no
Capítulo 5, a mecanismos externos de gerência de contexto.
De um modo geral, as características da infra-estrutura de exibição permitem
guiar a adaptação dos documentos em termos de ajuste da qualidade dos
conteúdos dos objetos apresentados. Em algumas situações, principalmente com
relação às características dos dispositivos de E/S na plataforma de apresentação,
as informações contextuais referentes à infra-estrutura podem também direcionar a
escolha das características de apresentação (descritores) dos objetos e a escolha
entre alternativas de tipos de mídia diferentes. Em contrapartida, os parâmetros
relacionados ao usuário são mais propícios à adaptação da quantidade e tipo de
informações contidas nos conteúdos dos documentos e à adaptação dos
relacionamentos entre os objetos. Como este trabalho se propõe a focar nas
questões de ajuste de qualidade, o mesmo irá centrar seu desenvolvimento na
Modelos de Documentos Hipermídia com Recursos de Adaptação
21
adaptação dos documentos em função das características da infra-estrutura de
exibição.
Para finalizar, é importante salientar que nem toda adaptação depende
exclusivamente de informações externas aos documentos. O ajuste elástico das
durações (ou mesmo das dimensões) dos objetos, comentado na Seção 2.1.1.1, é
um exemplo de adaptação que é feito também com base nas especificações dos
relacionamentos entre os nós.
2.1.3
Local e momento da adaptação
Para que um documento hipermídia seja adaptado em alguma das maneiras
discutidas na Seção 2.1.1, é necessário que exista no sistema hipermídia um
elemento capaz de analisar a descrição do documento em conjunto com as
informações contextuais e, com esses dados, aplicar as estratégias de adaptação.
Conforme comentado na Seção 1.1, em sistemas hipermídia distribuídos, as
estratégias podem ser executadas tanto no ambiente de armazenamento (servidor)
como no ambiente de execução (cliente), podendo inclusive estar presente nos
dois ambientes paralelamente. Em alguns casos, pode ser também interessante a
existência de um agente intermediário no sistema, atuando como um proxy, onde
será incorporada também a funcionalidade de adaptação. A adaptação nesse
elemento pode ser apropriada para reduzir o processamento em clientes e
servidores e ao mesmo tempo reutilizar os resultados para mais de um cliente,
oferecendo uma espécie de cache para os documentos já adaptados (Elson &
Cerpa, 2001). Entretanto, é importante lembrar que, como mencionado na Seção
1.1, uma vez que as técnicas de adaptação relacionadas à qualidade da informação
exibida devem estar próximas do usuário, é fundamental a presença dos
mecanismos de adaptação no cliente hipermídia, mais especificamente no
formatador.
Com relação ao momento em que a adaptação ocorre, é possível separar em
duas opções: antes da apresentação do documento e durante a sua apresentação. A
idéia principal é que as adaptações realizadas antes da exibição estão relacionadas
às informações contextuais estáticas, sendo por isso essa opção também
classificada como adaptação estática, enquanto a adaptação em tempo de execução
Modelos de Documentos Hipermídia com Recursos de Adaptação
22
é também chamada de adaptação dinâmica, pois depende de parâmetros cujos
valores se modificam ao longo da exibição do documento (Boll et al. 1999a; Boll
et al., 1999b).
2.2
Requisitos para modelos de documentos hipermídia
Um modelo hipermídia deve, evidentemente, oferecer suporte à definição de
documentos contendo objetos de diferentes tipos de mídia. Além disso, o modelo
precisa possibilitar, ao menos, a especificação de relacionamentos entre os vários
objetos, que permitam ao usuário, através de suas interações, percorrer o conteúdo
de uma maneira não seqüencial.
Além dessas características obrigatórias, algumas outras são também
desejáveis de serem encontradas em um modelo hipermídia. Em primeiro lugar, é
interessante que o modelo permita que sejam especificadas, além das relações
baseadas na interação do usuário, relacionamentos para sincronização tanto
temporal como espacial dos objetos. Esses relacionamentos não devem ser
limitados na quantidade de seus participantes, como acontece com os tradicionais
elos de navegação da linguagem HTML, restrita a uma única origem e um único
destino. Outro ponto desejável é que o modelo permita que os relacionamentos
sejam definidos não apenas entre os objetos como um todo, mas entre partes
internas de seus conteúdos, oferecendo assim uma granularidade mais fina para a
sincronização dos nós.
A forma como as relações são definidas, principalmente as especificadas
através de elos, traz conseqüências importantes para o modelo hipermídia.
Documentos HTML, por exemplo, possuem os elos embutidos no conteúdo, o que
gera limitações significativas (Anderson, 1997; Bouvin & Schade, 1999;
Rodrigues et al., 2002). Sendo assim, é apropriado que os relacionamentos entre
os nós possam estar separados do conteúdo dos objetos, trazendo, entre outros
benefícios, uma possibilidade de reuso dos conteúdos sem uma herança
obrigatória das relações.
Ainda com relação à questão dos relacionamentos de sincronização entre os
objetos, é adequado que o modelo faça uma distinção entre dois tipos de relações:
as relações de causalidade e as de restrição. As relações de causalidade envolvem
Modelos de Documentos Hipermídia com Recursos de Adaptação
ações
que
23
devem ser executadas quando condições estabelecidas no
relacionamento forem satisfeitas. Por exemplo, o início de um vídeo deve ocorrer
quando uma imagem deixar de ser apresentada, ou o término de um áudio deve
acontecer quando o usuário interagir com a aplicação. Como o próprio nome
sugere, as relações de restrição estabelecem regras de sincronismo que o
formatador hipermídia deve procurar respeitar. Por exemplo, um vídeo e um
áudio, quando simultaneamente exibidos, devem terminar ao mesmo tempo.
Como é possível perceber, os dois tipos de relações apresentam semânticas
distintas e se complementam no oferecimento de um maior poder de expressão aos
autores. Um exemplo da necessidade dos dois tipos de relação de sincronização
está no uso comum que se faz das relações definidas por Allen (Allen, 1983) e
ilustradas na Figura 2. Allen especificou treze possíveis relações que podem ser
definidas entre intervalos e esse resultado tem sido utilizado como base na
definição das relações de sincronismo temporal em modelos de documentos
multimídia (Little & Ghafoor, 1990).
t
X before Y
Y after X
X
X meets Y
Y met by X
X
X overlaps Y
Y overlapped by X
X during Y
Y contains X
Y
Y
X
t
t
X
X starts Y
Y started by X
Y
t
X finishes Y
Y finished by X
Y
X equals Y
X
Y
X
Y
X
Y
Figura 2 – Relações de Allen.
A questão da necessidade dos dois tipos de relação surge pelo fato das
relações de Allen não expressarem precisamente a semântica desejada pelo autor
para definir o sincronismo temporal entre dois intervalos de tempo, podendo gerar
ambigüidades para o controle da apresentação (Duda & Keramane, 1995). Por
exemplo, a relação meets apenas especifica que o final de um intervalo deve
coincidir com o princípio de um outro, mas várias interpretações podem ser dadas.
A relação pode ser considerada como sendo de restrição: o final da apresentação
de x precisa coincidir com o início da apresentação de y. Contudo a relação
poderia também ser vista com uma semântica de causalidade, permitindo inclusive
Modelos de Documentos Hipermídia com Recursos de Adaptação
24
duas interpretações distintas: uma causalidade de iniciação (o final da exibição de
x deve causar o início da exibição de y) ou uma causalidade de encerramento (o
princípio da exibição de y deve ocasionar o término da apresentação de x). Sendo
assim, é interessante que o modelo proveja meios para a especificação explícita
dos dois tipos de relacionamentos de sincronização entre os objetos.
Outra característica em modelos de documentos hipermídia que merece
destaque como sendo desejável é a existência de entidades que permitam agrupar
os nós e seus relacionamentos, que possam ser reutilizadas em várias partes do
documento, ou até mesmo em documentos distintos. A maneira usual de oferecer
esse recurso é através da introdução nos modelos do conceito de nó de
composição, já mencionado na Seção 2.1.1.1.
Conforme também discutido na Seção 2.1.1.1, uma outra característica
desejável em modelos de documentos hipermídia é a separação dos parâmetros de
exibição, a fim de torná-los independentes do objeto de dados. A idéia é que esses
parâmetros possam ser associados aos nós conforme a conveniência. Essa
separação permite, entre outras coisas, o reuso das mesmas características de
apresentação em vários objetos e a modificação do estilo de apresentação sem que
seja preciso alterar os objetos de dados. Esse tipo de separação pode servir
também como uma facilidade para implementar adaptações de documentos pela
simples modificação das características de exibição. Exemplos importantes dessa
abordagem são as linguagens de estilo padronizadas para as páginas HTML
(W3C, 1996; W3C, 1998a) e os layouts espaciais da linguagem SMIL (W3C,
2001a).
Ainda de acordo com o que foi comentado na Seção 2.1, é desejável que o
sistema hipermídia possua recursos para a adaptação dos documentos e de suas
apresentações. Porém, para que a maioria das técnicas de adaptação possam ser
aplicadas, é necessário que o modelo permita a especificação de certas
informações de uma maneira flexível. Por exemplo, para que possa ser realizado o
ajuste das durações dos objetos, as mesmas devem ser especificadas não mais de
uma maneira rígida com um único valor, mas sim com uma faixa de valores
aceitáveis. Mais interessante ainda se esses valores forem descritos através de uma
função de custo, oferecendo assim uma métrica que permita à estratégia de
adaptação decidir qual o melhor ajuste para uma dada apresentação e contexto de
Modelos de Documentos Hipermídia com Recursos de Adaptação
25
exibição (Bachelet et al., 2000; Buchanan & Zellweger, 1993b; Kim & Song,
1995).
Ainda com relação à adaptação, para que o sistema hipermídia possa
explorar a idéia da seleção de alternativas, é fundamental que algum tipo de metainformação esteja associado a cada uma das várias possibilidades de conteúdo, de
relacionamento ou mesmo de descrição das características de apresentação (Seção
2.1.1). Esses metadados podem ser explicitamente informados pelo autor ou
automaticamente calculados pelo sistema, devendo estar disponíveis no momento
da apresentação do documento, a fim de permitir que as técnicas de adaptação
saibam como classificar e escolher entre as diferentes alternativas. Mais ainda, é
necessária a existência de uma base de relacionamentos estabelecendo as
associações entre as várias alternativas. Essas bases podem ser simples
composições, tais como o switch das linguagens SMIL (W3C, 2001a) e NCL
(Muchaluat-Saade, 2003), ou conjuntos de relações mais amplas e complexas,
como as propostas em (Boll et al., 1999a).
Evidentemente, também é importante que exista um modelo para descrição
das informações contextuais, pois, na verdade, conforme discutido na Seção 2.1.2,
a adaptação deverá ser guiada pelos parâmetros do contexto em que a aplicação
estiver inserida. No entanto, é importante observar que o modelo para
estabelecimento das associações entre alternativas e o modelo para descrição do
contexto não precisam fazer parte diretamente do modelo de hiperdocumentos.
Esses modelos podem funcionar como camadas que venham a ser superpostas ao
modelo de documento, oferecendo diferentes níveis de visões para as informações.
Os requisitos apresentados nesta seção buscam estabelecer as características
desejáveis de serem encontradas nos modelos de dados que formam a base das
informações passadas para o ambiente de execução hipermídia (Figura 1). Esse
ambiente, por sua vez, deve ser projetado de modo a ser capaz de controlar as
apresentações dos documentos com todos os recursos mencionados.
Internamente, o ambiente de execução (em especial, o formatador) deve
estabelecer um modelo para construção de suas estruturas de dados, a fim de gerar
os documentos formatados a partir das especificações disponíveis, conforme
ilustrado na Figura 3. Esse modelo interno pode ser entendido como o modelo de
execução dos hiperdocumentos e, conforme discutido e ilustrado na figura, em
Modelos de Documentos Hipermídia com Recursos de Adaptação
26
alguns casos, será na verdade o resultado do processamento de informações
provenientes de mais de um modelo. Dos vários modelos de entrada apresentados
na figura que podem influenciar no modelo de execução, esta tese concentra-se
nos aspectos relacionados ao modelo de documentos.
Modelo de
Documentos
Hipermídia
Modelo do
Contexto de
Exibição
informações
contextuais
Modelo de
Execução
Hipermídia
documento
hipermídia
flexível
Modelo de
Associações
descrição das
associações
entre alternativas
Ambiente de
Execução
(Formatador
Hipermídia)
documento
formatado
Figura 3 – Modelos das informações fornecidas a um formatador hipermídia para controle
da execução dos hiperdocumentos.
O modelo de documentos hipermídia normalmente corresponde ao modelo
utilizado para autoria4. Pela variedade de modelos desse tipo citados na Seção 2.1
e assumindo que seja desejável que um ambiente de execução possa controlar a
apresentação de mais de um tipo de modelo de documento, torna-se necessário
que, na maioria das vezes, a execução seja precedida por uma fase de
transformação para conversão de formatos, conforme será melhor discutido no
Capítulo 3 e exemplificado no Capítulo 5. Dois motivos justificam a necessidade
dessa transformação. O primeiro é a necessidade de colocar certas abstrações para
os autores, que podem ser eliminadas quando o documento se aproxima da
4
Muitas vezes o modelo de autoria passado ao autor pode ter um nível de abstração maior, mas
terá sempre por base um modelo de autoria tal qual os já exemplificados.
Modelos de Documentos Hipermídia com Recursos de Adaptação
27
máquina que irá controlar a sua exibição. O segundo é uma simples questão
subjetiva de preferência, refletida na variedade de propostas e padrões de modelos.
2.3
Modelo de documentos para controle da execução
As entidades apresentadas nesta seção formam a base do modelo de
execução utilizado para a construção do framework de formatação de documentos
hipermídia. Mais especificamente, esse modelo serviu também como referência
para a implementação do formatador HyperProp, a ser apresentada no Capítulo 5.
O modelo de execução a ser descrito baseia-se em conceitos do modelo NCM
(Casanova et al., 1991; Soares et al., 1995; Souza, 1997; Soares et al., 2000;
Soares et al., 2003), Modelo de Contextos Aninhados (Nested Context Model),
mas sua aplicação é mais geral, podendo ser utilizado como modelo de execução
para outros modelos de documentos hipermídia, conforme será também
comentado no Capítulo 5, quando serão apresentados os conversores
desenvolvidos como parte deste trabalho. Maiores informações a respeito do
modelo NCM podem ser encontradas nas referências já citadas, em particular, no
relatório técnico que descreve todas as entidades do modelo de maneira detalhada
(Soares et al., 2003).
O modelo de execução proposto segue o paradigma de orientação a objetos e
baseia a lógica e o sincronismo das apresentações em máquinas de estados de
eventos, relacionamentos de causalidade entre eventos e também relacionamentos
de restrição entre eventos. O modelo define uma estrutura básica com alguns
pontos
de
flexibilização
(hotspots),
que
devem
ser
preenchidos
nas
implementações particulares dos ambientes de execução. O objetivo principal é
tornar a proposta genérica e capaz de atender a uma variedade de formatadores.
A descrição das classes do modelo e da maneira como essas classes se
relacionam é feita com o auxílio da linguagem UML (Rumbaugh et al., 1999). Os
diagramas são apresentados progressivamente, com o intuito de evitar uma
sobrecarga visual nas figuras. Além disso, também com o objetivo de tornar os
diagramas mais legíveis, apenas os principais atributos e métodos das classes
foram destacados. A descrição completa das classes, atributos e métodos do
modelo de execução pode ser encontrada em (Rodrigues, 2003).
Modelos de Documentos Hipermídia com Recursos de Adaptação
28
2.3.1
Objetos de execução
O principal elemento no modelo é o objeto de execução, que representa uma
instância de nó hipermídia a ser exibida. Sendo assim, os objetos de execução no
formatador reúnem, para cada fragmento de informação (nó), todos os seus dados,
inclusive as informações relativas às suas características de apresentação. Um
objeto de execução (classe ExecutionObject) possui quatro atributos principais:
identificador único, objeto de dados, descritor e lista de eventos, conforme
ilustrado no diagrama da Figura 4.
O identificador único (classe UID), como o próprio nome sugere, permite
distinguir univocamente o objeto de execução dentro do ambiente de formatação.
Essa classe deve ser estendida na implementação de cada ambiente de execução
particular, precisando apenas oferecer um método que permita comparar o
identificador com um outro identificador do mesmo tipo. É responsabilidade da
implementação do formatador garantir a unicidade dos identificadores.
1
UID
1 ExecutionO bject
compareTo(UID id)
event List
1
1..*
1
1..*
Event
1
1
DataObject
Descriptor
Figura 4 – Diagrama de classes para os objetos de execução.
O atributo objeto de dados (classe DataObject) guarda uma referência para o
nó hipermídia (sem as informações de apresentação), enquanto o descritor (classe
Descriptor) contém as informações referentes à exibição do objeto. Por fim, a lista
de eventos (composta por objetos da classe Event) define as unidades básicas para
o controle dos relacionamentos de sincronização temporal e espacial.
Cabe mencionar que um mesmo objeto de dados pode ser compartilhado por
mais de um objeto de execução, oferecendo assim uma possibilidade de reuso de
suas informações. Por outro lado, descritores e eventos pertencem a um único
Modelos de Documentos Hipermídia com Recursos de Adaptação
29
objeto de execução. Existem, no entanto, algumas informações de apresentação
contidas nos descritores que podem ser compartilhadas por mais de um descritor.
As próximas subseções trazem informações mais detalhadas das classes para
criação de objetos de dados, descritores e eventos.
2.3.1.1
Objetos de dados
Todo objeto de dados possui três atributos principais: um identificador
único, um conteúdo e uma lista de âncoras, conforme ilustrado no diagrama de
classes apresentado na Figura 5.
Da mesma forma que o objeto de execução, o objeto de dados possui um
atributo da classe UID que identifica o objeto de dados de maneira única no
ambiente de execução. Novamente, essa classe deve ser especializada em cada
implementação para definir concretamente o identificador. É possível que a
mesma especialização seja utilizada para identificar tanto os objetos de dados
como os objetos de execução. No entanto, os espaços de nomes para os
identificadores devem ser tratados de maneira independente pelo formatador.
1
UID
compareTo()
1
DataObject
anchorList
1
1
1
1..*
Content
Anchor
getType()
getSize()
SpatialAnchor
TimeIntervalAnchor
SampleIntervalAnchor
TextAnchor
UrlContent
content
getUrlContent()
RectangleSpatialAnchor
CircleSpatialAnchor
PolygonSpatialAnchor
Figura 5 – Diagrama de classes para os objetos de dados.
O conteúdo de um objeto de dados identifica um conjunto de unidades de
informação, enquanto as âncoras identificam subconjuntos de unidades de
informação marcadas desse conteúdo. As noções exatas de conteúdo (unidades de
Modelos de Documentos Hipermídia com Recursos de Adaptação
30
informação) e de âncora (unidades de informação marcadas) dependem da classe
de nó hipermídia que venha a derivar o objeto de dados. Por exemplo, um vídeo
pode ter como unidade de informação um quadro, enquanto um texto pode ter
como unidade de informação um caractere ou uma palavra.
O modelo define uma classe abstrata Content que deve ser estendida em
função dos objetos exibidos. O modelo também define uma subclasse de
conteúdo, denominada UrlContent, que identifica as unidades de informação
através de uma URL (Berners-Lee et al., 1994b). Todavia, nada impede que outras
subclasses de conteúdo sejam definidas em implementações particulares de
formatador. Como exemplo, uma implementação de formatador pode definir uma
subclasse de conteúdo que mantenha uma cópia das unidades de informação no
próprio objeto de dados, permitindo que o objeto funcione como uma espécie de
memória cache. Uma outra subclasse de conteúdo que pode ser útil é a que
especifica uma série de outros objetos de dados, representando um nó de
composição. A idéia de criar um objeto de execução associado a uma composição
é permitir que, na apresentação do documento, a sua estruturação possa ser
exibida como parte da informação a ser oferecida ao usuário. Isso porque pode ser
útil para o usuário que, além das mídias, seja exibido um mapa do documento para
auxiliá-lo em sua navegação, reduzindo, ou mesmo eliminando, o problema de
desorientação (Muchaluat-Saade, 1996; Muchaluat-Saade et al., 1998).
Todo conteúdo deve também implementar métodos que descrevam os seus
dados. O método getType deve retornar o tipo MIME (Freed & Borenstein, 1996)
do conteúdo, enquanto o método getSize deve informar o tamanho do conteúdo
em bytes. Ambos os métodos podem retornar um valor não disponível, quando
não for possível determinar o valor de retorno. No caso da classe UrlContent,
existe o método adicional getContentUrl, que retorna o endereço e o protocolo
para respectiva localização e busca do conteúdo.
Similar ao conteúdo, o modelo define uma classe abstrata Anchor, cujas
especializações devem ser feitas em função das unidades de informação do
conteúdo passíveis de serem marcadas. As subclasses de âncora principais
também são especificadas pelo modelo, conforme ilustra o diagrama de classes da
Figura 5. A classe TextAnchor permite definir regiões em conteúdos do tipo texto,
identificando a posição e a string da âncora. As classes TimeIntervalAnchor e
Modelos de Documentos Hipermídia com Recursos de Adaptação
31
SampleIntervalAnchor permitem descrever regiões temporais. A primeira classe o
faz pela especificação do instante de início e fim (em segundos), enquanto a
segunda utiliza a posição das amostras. A classe SpatialAnchor e suas respectivas
subclasses definem regiões espaciais em conteúdos como imagens e vídeos.
Outras subclasses de âncora para, por exemplo, identificar objetos em vídeos e
imagens podem vir a ser definidas em implementações específicas de
formatadores.
Cabe salientar que combinações desses vários tipos de âncora mencionados
no parágrafo anterior podem ser úteis, tais como a definição de uma área
retangular em um vídeo durante um determinado intervalo de tempo. Contudo,
combinações a partir das classes já definidas não requerem a criação de novas
subclasses, pois, conforme será apresentado na definição dos elos (Seção 2.3.2), a
possibilidade de definir relações entre duas ou mais âncoras (na realidade entre
dois ou mais eventos) oferece, no modelo, poder de expressão equivalente.
Uma observação relevante com respeito à definição das subclasses de
âncoras no modelo é que tanto as âncoras espaciais como as âncoras baseadas em
amostras podem identificar suas fronteiras de maneira percentual, ao invés de
discriminar os pixels ou a posição exata das amostras.
2.3.1.2
Descritores
O descritor reúne as informações referentes às características de exibição do
objeto de execução. Todo descritor possui como principais atributos a
identificação de uma ferramenta de exibição (classe PresentationTool) e de uma
região espacial de apresentação (classe LayoutRegion). O modelo permite que
uma mesma ferramenta controle a exibição do conteúdo de mais de um objeto de
execução e, da mesma forma, que uma mesma região espacial seja compartilhada
por mais de um objeto (mais de um descritor).
A
escolha
da
ferramenta
de
exibição
e
sua
instanciação
são
responsabilidades do formatador hipermídia, tendo como base a especificação do
documento e a lista de ferramentas disponíveis discriminadas na plataforma de
exibição (informação de infra-estrutura no contexto de exibição – Seção 2.1.2).
Nada impede que seja utilizada, na apresentação do conteúdo de um objeto de
Modelos de Documentos Hipermídia com Recursos de Adaptação
32
dados, uma ferramenta de um tipo de mídia completamente diferente do tipo de
mídia do conteúdo. Por exemplo, um objeto de dados do tipo texto pode ser
associado a um descritor que defina uma ferramenta de exibição sintetizadora de
voz, e com isso ser apresentado como um áudio.
Conforme pode ser percebido na Figura 6, a região espacial (classe
LayoutRegion) faz parte de uma hierarquia de classes mais ampla, que define a
estrutura espacial da apresentação de um documento. Qualquer que seja o
hiperdocumento a ser apresentado, deve haver no ambiente de execução uma
estrutura espacial (instância da classe Layout) definida para exibição dos objetos
de execução. Essa estrutura especifica um conjunto de janelas (atributo
windowSet,
classe LayoutWindow) e uma janela
da
default
(atributo
defaultWindow). O conjunto de janelas é derivado, quando especificado, da
descrição do documento hipermídia de entrada (Figura 3), enquanto a janela
default é criada pelo próprio formatador. Sua utilidade será descrita mais adiante.
As definições apresentadas nesta seção são similares às encontradas na linguagem
SMIL e na referência (Moura, 2001).
QoS Param eters
LayoutCom ponent
E xec utionObject
0..*
1
1..*
1
regi onS et
1
D es cr iptor
1
1..*
1
1
0..*
1
Pres entationToo l
title
left, top
height, width
back groundColor
z Index
s croll
border
is V isible
is M oveable
is Res izable
open
c los e
1
1
UID
com pare To()
pa rent
0..*
ContentDependentP aram eters
0..1
0..*
LayoutRegion
fit
LayoutW indow
0..*
1
S oundP aram eters
volum eLevel
bal anc eLevel
trebleLevel
bass Level
S ty leP ar am eters
s tyl eS heet
Tem poralP aram eters
t im eB arE na bled
windo wS et
1
Layout
1
defaultW indow
Figura 6 – Diagrama de classes para os descritores.
Janelas (classe LayoutWindow) e regiões herdam de uma superclasse
comum, denominada LayoutComponent. Objetos dessa classe possuem um
identificador único (classe UID, análoga à que foi definida para os objetos de
execução e de dados) e um nome (atributo name). Além disso, a classe
Modelos de Documentos Hipermídia com Recursos de Adaptação
33
LayoutComponent define atributos que permitem especificar largura (width) e
altura (height) de uma área retangular5 e coordenadas de posicionamento
(atributos top e left) do componente. Qualquer uma dessas informações pode ser
especificada tanto de maneira absoluta (em pixels, por exemplo) como de maneira
proporcional.
A classe LayoutComponent possui também uma série de outros atributos
referentes às propriedades de exibição dos objetos: backgroundColor, zIndex,
scroll, border, isVisible, isMoveable, isResizable, open e close. O atributo
backgroundColor serve para definir uma cor de fundo para o componente de
layout. O atributo zIndex é utilizado para determinar a prioridade de superposição
quando mais de um componente tiver que ser exibido em uma mesma área. Os
componentes com valores de zIndex menores aparecem sobrepostos aos
componentes com valores maiores. O atributo scroll define o comportamento da
barra de rolagem na exibição do componente e pode receber um, dentre cinco
valores: componente não possui barra de rolagem, componente possui barra de
rolagem apenas vertical, componente possui barra de rolagem apenas horizontal,
componente possui sempre barras de rolagem vertical e horizontal e, finalmente, o
componente só possui barra de rolagem (tanto vertical quanto horizontal) quando
for necessário. O atributo border define a espessura da borda para o componente
de layout. O valor zero significa a ausência de borda para o componente. Os
atributos, isVisible, isMoveable e isResizable informam, respectivamente, se o
componente está ou não visível, se pode ser ou não modificado de posição e se
pode ter ou não as suas dimensões alteradas. Os atributos open e close serão
comentados mais adiante.
Além das informações referentes às características de exibição, todo
componente de layout (janela ou região) possui um conjunto de regiões (atributo
regionSet). Isso também implica que toda região deve estar contida em um
componente de layout, identificado pelo atributo parent da classe LayoutRegion.
5
Para tornar o modelo mais genérico, janelas, assim como regiões, poderiam ser especificadas nas
mais diversas formas geométricas. No entanto, por entender que essa generalidade não seria de
grande utilidade e primando pela simplicidade, o modelo aqui proposto, da mesma forma que em
(Moura, 2001), limita a representação espacial de componentes de apresentação à forma
retangular.
Modelos de Documentos Hipermídia com Recursos de Adaptação
34
Nesse momento, cabe comentar a respeito dos atributos open e close, que
determinam o comportamento de exibição de um componente de layout quando o
mesmo não se encontra ativo. Um componente de layout está ativo, se existe
algum objeto de execução a ele associado e sendo exibido, ou se alguma região
diretamente ou recursivamente contida nele tem algum objeto de execução a ela
associado e sendo exibido. Dessa forma, o atributo open determina se o
componente deve ou não ser exibido mesmo que ainda não tenha se tornado ativo
e o atributo close especifica se o componente deve continuar sendo exibido
mesmo depois que deixa de estar ativo.
A classe LayoutRegion, conforme descrito, é uma especialização de
LayoutComponent e é justamente o tipo de componente de layout ao qual os
objetos de execução estarão associados. Essa classe possui um atributo adicional
denominado fit. Esse atributo define o comportamento da região quando as suas
dimensões não coincidirem com as do conteúdo do objeto de execução associado
a ela. As possibilidades previstas pelo modelo são:
•
redimensionar o objeto para que suas dimensões coincidam com as da
região;
•
desenhar o objeto a partir do canto superior esquerdo da região e preencher
os espaços restantes com a cor de fundo da região, cortando as partes que
ultrapassem as dimensões da região e aplicando a política de rolagem
(scroll) definida;
•
desenhar o objeto a partir do canto superior esquerdo da região e
redimensioná-lo, conservando a proporção entre suas dimensões, até que
todo o objeto esteja visível na região e o espaço restante esteja preenchido
com a cor de fundo; ou
•
desenhar o objeto a partir do canto superior esquerdo da região e
redimensioná-lo, conservando a proporção entre suas dimensões, até que
toda região esteja ocupada pelo objeto. Para a área do objeto cortada, deve
ser
aplicada
a
LayoutComponent.
política
de
rolagem
definida
na
superclasse
Modelos de Documentos Hipermídia com Recursos de Adaptação
35
A classe LayoutWindow é uma especialização de LayoutComponent que não
está contida em nenhum outro componente de layout e cujo conjunto de regiões
deve possuir pelo menos uma região especificada.
Retornando à questão da janela default no layout do documento, essa janela
é automaticamente criada pelo formatador e possui duas utilidades. Definir o
espaço para exibir objetos de execução de documentos que não possuam um
layout espacial especificado, assim como exibir os objetos de execução de
documentos que possuam um layout espacial especificado, mas para os quais o
identificador da região não possa ser encontrado nesse layout.
Uma vez que a região de layout está relacionada com as características
espaciais visuais da exibição de um objeto de execução, esse atributo é opcional
nos descritores. Objetos de áudio, por exemplo, podem dispensar a existência de
uma região, apesar de ser perfeitamente possível que se deseje exibir uma
representação visual da onda sonora.
Todo descritor possui, opcionalmente, além da ferramenta de exibição e da
região espacial, um conjunto de parâmetros de qualidade de serviço (objetos da
classe QoSParameters) que são deixados como pontos de flexibilização no
modelo e devem ser especificados em implementações particulares de
formatadores que saibam lidar com essas informações. Exemplos de atributos que
poderiam ser definidos em especializações da classe QoSParameters seriam:
latência máxima para o início da exibição do objeto, taxa de exibição desejável e o
mínimo tolerável, percentual de erro aceitável na entrega dos dados etc.
O
modelo
define
também
uma
classe
abstrata
ContentDependentParameters, que permite agrupar atributos relevantes para
exibição de tipos particulares de conteúdo. Um descritor pode possuir um ou mais
atributos dessa classe. Além disso, implementações de formatadores podem
estender a hierarquia para oferecer suporte a outros atributos. O modelo define a
subclasse SoundParameters, para reunir atributos relevantes para mídias sonoras
(áudio e vídeo), StyleParameters, para objetos que utilizem folhas de estilo (W3C,
1996; W3C, 1998a) na formatação de seu conteúdo, e TemporalParameters para
objetos que desejem possuir uma barra de controle visual do andamento da
exibição.
Modelos de Documentos Hipermídia com Recursos de Adaptação
36
Cabe ao formatador, a partir da descrição da plataforma de exibição
(informação do contexto de exibição – Seção 2.1.2), realizar a associação entre os
descritores e os dispositivos físicos (monitor, monitor de TV, placa de som etc.).
Essa associação pode ser feita inclusive de modo distribuído, quando o ambiente
de execução for composto por mais de uma máquina. Além disso, o formatador
deve se preocupar em manter a consistência entre a ferramenta de exibição e o
descritor dos objetos de execução. Exemplo de inconsistência seria a definição de
um exibidor de imagem estática para um descritor de áudio.
2.3.1.3
Eventos
O evento é a unidade básica de sincronização definida no modelo de
execução, estando contido na lista de eventos do objeto de execução. A definição
de evento no modelo segue a proposta de Pérez-Luque (Pérez-Luque & Little,
1996), onde o mesmo é descrito como uma ocorrência no tempo que pode ser
instantânea ou durar um período de tempo. Sendo assim, existe no modelo de
execução dois tipos de eventos: aqueles que são instantâneos e aqueles que
apresentam duração não desprezível (não instantâneos). Os eventos também
podem ser classificados em relação à interação: eventos do tipo interativos
possuem sua ocorrência obrigatoriamente relacionada com alguma ação do
usuário, enquanto os eventos não interativos têm suas ocorrências desvinculadas
da interatividade do usuário, dependendo apenas do controle do próprio ambiente
de execução. Essas duas classificações dos tipos de evento podem ser combinadas.
Por
exemplo,
eventos
podem
ser
instantâneos/interativos,
não
instantâneos/interativos, instantâneos/não interativos e não instantâneos/não
interativos. Os exemplos para essas possibilidades ficarão mais claros ao longo da
seção.
Na Figura 7 é possível observar o diagrama de classes para as entidades do
modelo relacionadas à definição dos eventos. O modelo estabelece uma interface
EventInterface, a partir da qual derivam os quatro tipos de evento mencionados no
parágrafo
anterior:
NonInstantaneousEvent
e
InstantaneousEvent
para,
respectivamente, os tipos de evento não instantâneo e instantâneo, e
NonInteractiveEvent e InteractiveEvent para modelar, respectivamente, os eventos
Modelos de Documentos Hipermídia com Recursos de Adaptação
37
do tipo não interativo e do tipo interativo. O modelo também define uma classe
Event, que implementa a interface EventInterface, a partir da qual derivam todas
as subclasses de evento do modelo, assim como novas subclasses que venham a
ser criadas.
Independente do tipo, existem duas subclasses de evento definidas no
modelo: eventos baseados em âncora (AnchorEvent) e eventos baseados em
atributo (AttributeEvent). Eventos baseados em âncora possuem um atributo que
identifica uma âncora do objeto de dados (fragmento do conteúdo do objeto de
dados), enquanto eventos baseados em atributo possuem um atributo que
identifica um outro atributo do objeto de execução. Entende-se por atributo de um
objeto de execução qualquer atributo diretamente definido no objeto ou que possa
ser alcançado pela navegação em profundidade a partir de seus atributos. Por
exemplo, tanto o atributo dataObject como o atributo descriptor.layoutRegion.top
podem ser definidos em um evento baseado em atributo.
Event
currentSt ate
occurrences
prepa re()
unpre pare()
start()
changeSt ate()
addEvent Listene r()
rem oveEventList ener()
Anchor
PresentationEvent
prepare()
prepared()
AnchorEvent
MouseClickEvent
MouseDragEvent
0..*
<<Interface>>
EventListener
update()
0..*
AttributeEvent
attributeId
FocusEvent
MouseOverEvent
ProgressiveA tt ribut ion Event
SimpleAttributionEvent
<<Interface>>
InstantaneousEvent
start()
<<Interface>>
NonInteractiveEvent
<<Interface>>
NonInstantaneousEvent
stop()
pa use()
resum e()
ab ort ()
Duration
expected
actual
<<Interface>>
Int erac tiveEve nt
getRepet itio ns()
setRepet itio ns()
getRepet itio nInterval()
setRepet itio nInterval()
start()
prepare()
<<Int erface>>
EventInt erface
Figura 7 – Diagrama de classes para os eventos.
Em uma implementação de formatador hipermídia, devem ser definidas
especializações das subclasses evento baseado em âncora e evento baseado em
Modelos de Documentos Hipermídia com Recursos de Adaptação
38
atributo, que especifiquem semânticas para os eventos na apresentação do
documento. Algumas especializações já são definidas no próprio modelo, pois
serão necessárias em qualquer que seja o sistema hipermídia. A primeira
especialização é a classe evento de exibição (ou evento de apresentação) – classe
PresentationEvent, subclasse de evento baseado em âncora, cujo objetivo é
permitir especificar unidades básicas de sincronização associadas com a
apresentação de fragmentos dos conteúdos dos objetos de dados, ou seja, com a
apresentação dos subconjuntos de unidades de informação marcadas. A outra
especialização que deve existir em qualquer implementação de formatador é a
classe evento de seleção (MouseClickEvent), também subclasse de evento baseado
em âncora. Essa subclasse permite estabelecer sincronizações que dependam da
interação (clique, mais especificamente) do usuário sobre as âncoras dos objetos
de dados.
Além dessas duas principais classes, o modelo define outras especializações
que podem ser úteis em apresentações hipermídia. Evento de arraste (classe
MouseDragEvent), evento de foco (classe FocusEvent), evento de mouse sobre a
âncora (classe MouseOverEvent) são subclasses de evento baseado em âncora.
Para a classe de eventos baseados em atributos, o modelo define duas subclasses:
atribuição instantânea simples (SimpleAttribution), para permitir sincronizações
baseadas em valores dos atributos (ou mesmo mudança desses valores), e
atribuição progressiva (ProgressiveAttribution), para, por exemplo, definir
animações nas apresentações (Moura, 2001). Adicionalmente, novas classes
podem ser criadas em implementações particulares de formatadores, conforme as
necessidades dos documentos e de suas apresentações.
Qualquer que seja a especialização de evento, deve estar associada à
respectiva classe uma combinação dos tipos (ou interfaces) definidos no início
desta seção. Por exemplo, eventos de exibição, além de serem baseados em
âncora, são também eventos do tipo não instantâneo e não interativo. Eles são não
instantâneos porque sempre existe uma duração associada com a exibição da
âncora (mesmo que essa duração seja imperceptível para o usuário – um quadro de
vídeo, por exemplo). Além disso, eles são não interativos porque a exibição
Modelos de Documentos Hipermídia com Recursos de Adaptação
39
efetiva independe da intervenção do usuário6. Os eventos baseados em ações do
usuário com o mouse são sempre interativos. Alguns podem ter duração (arraste,
foco, mouse-over) e outros podem ser instantâneos (clique).
Existe sempre uma máquina de estados associada ao evento, para qualquer
que seja a sua classe. Os estados e transições de estados, juntamente com os
valores de atributos dos eventos e do objeto de execução, formam a base para a
definição dos relacionamentos de sincronização, que serão detalhados na Seção
2.3.2. Além disso, toda ação executada durante a apresentação do documento é
feita sobre algum evento e, normalmente, reflete em uma transição na máquina de
estados desse evento.
As máquinas de estados dos eventos variam em função da classe de evento,
mas existem três estados que toda máquina obrigatoriamente deve possuir:
dormindo, preparado e ocorrendo. Intuitivamente, o evento encontra-se no estado
ocorrendo
quando
sua
semântica
na
apresentação
do
hiperdocumento
efetivamente acontece. Por exemplo, um evento de exibição entra no estado
ocorrendo quando o subconjunto de unidades de informação marcadas, definidas
pela âncora do evento, são apresentadas pela ferramenta de exibição. Os eventos
de atribuição permanecem no estado ocorrendo enquanto a operação de atribuição
durar. Os eventos instantâneos permanecem no estado ocorrendo por um tempo
infinitesimal (por exemplo, o instante do clique do usuário ou o instante da
atribuição). Diz-se que um evento ocorre toda vez que entra em seu estado
ocorrendo e denomina-se ocorrência do evento a fase em que o evento encontrase no estado ocorrendo.
Um evento no estado preparado encontra-se habilitado a mudar
instantaneamente para o estado ocorrendo. Por outro lado, o evento no estado
dormindo está impossibilitado de passar para o estado ocorrendo sem que antes
seja realizado um procedimento de preparação das suas unidades de informação
ou atributos, efetuada por uma chamada ao método prepare da classe Event. O
evento também pode ser colocado de volta no estado dormindo, através de uma
6
O conceito de não interatividade do evento está associado com o elemento que faz com que o
evento efetivamente mude de estado durante a execução do documento. Um vídeo pode ter a sua
apresentação condicionada à seleção de um botão por parte do usuário. No entanto, o evento de
exibição do vídeo permanece como não interativo, pois a sua exibição efetiva depende do controle
da ferramenta de exibição, e não do usuário.
Modelos de Documentos Hipermídia com Recursos de Adaptação
40
invocação ao método unprepare, também definido na classe Event. O método
start coloca o evento no estado ocorrendo, desde que ele se encontre no estado
preparado. O comportamento padrão estabelece ainda que, quando o evento deixa
o seu estado ocorrendo, ele retorna para o estado preparado. O evento também
oferece um método setState, que pode ser útil em extensões da classe Event e do
funcionamento da máquina de estados.
Baseado na máquina de estados, todo evento possui dois atributos,
denominados estado corrente e ocorrências, cujos valores são utilizados pelo
formatador para coordenar a sincronização das apresentações. Como o próprio
nome sugere, o atributo estado corrente de um evento guarda o seu estado na
máquina em um dado momento. Já o atributo ocorrências conta o número de
vezes que o evento deixa o estado ocorrendo e retorna para o estado preparado.
Eventos do tipo não interativos (interface NonInteractiveEvent) também devem
manter dois atributos adicionais: repetições e tempo de espera entre repetições.
Repetições determina o número de vezes seguidas que ainda restam para que o
evento ocorra. Esse atributo pode conter um valor finito ou o valor indefinido, que
levará a uma execução cíclica do evento, até que a mesma seja interrompida. Toda
vez que um evento não interativo retorna para o estado preparado, o seu atributo
repetições deve ser consultado. Se o valor for maior que zero, uma nova chamada
ao método start deve ser realizada para que o evento ocorra novamente. O atributo
tempo de espera entre repetições define um intervalo de pausa entre as
ocorrências sucessivas. A interface NonInteractiveEvent também define duas
novas opções para os métodos prepare e start, que recebem como parâmetros os
valores para iniciar os dois novos atributos (repetições e tempo de espera entre
repetições) a serem mantidos.
Os eventos do tipo não instantâneos possuem a noção de duração associada.
A duração é tratada no modelo como uma classe que possui dois atributos:
duração esperada (expectedDuration) e duração efetiva (actualDuration). O
primeiro atributo (duração esperada) guarda o tempo previsto pelo formatador
para a próxima ocorrência do evento. A duração efetiva, por sua vez, guarda o
tempo efetivo da última ocorrência do evento. A duração esperada de um evento
pode ser especificada como indeterminada, quando o formatador não tiver como
prever o tempo para que o evento permaneça no estado ocorrendo.
Modelos de Documentos Hipermídia com Recursos de Adaptação
41
Como uma classe do modelo, a duração pode ser estendida para representar
descrições temporais mais complexas. Por exemplo, uma subclasse de duração
pode ser especificada permitindo que os valores esperados sejam definidos como
intervalos. Outras subclasses podem possibilitar descrever as durações com
funções de custo (Bachelet et al., 2000; Buchanan & Zellweger, 1993b; Kim &
Song, 1995), oferecendo assim métricas para o ajuste das durações. Exemplos
dessas subclasses de durações mais flexíveis serão tratados no Capítulo 4, quando
será abordada a adaptação dos tempos elásticos dos documentos.
Os eventos não instantâneos também possuem dois novos estados definidos
em suas máquinas de estados: suspenso e abortado. Um evento é colocado no
estado suspenso, quando uma chamada a seu método pause é efetuada. O
resultado dessa chamada é a suspensão temporária da ocorrência do evento. O
método resume permite colocar o evento novamente no estado ocorrendo, a partir
do ponto em que a pausa foi realizada. A ocorrência de um evento pode também
ser abruptamente interrompida por uma invocação ao método abort. O resultado
dessa chamada é a transição do estado corrente do evento para o estado abortado
e, logo em seguida, para preparado. Nesse caso, o atributo ocorrências não é
incrementado e, sendo um evento do tipo não interativo, o atributo repetições é
colocado com valor igual a zero. O método stop dos eventos não interativos geram
a transição imediata do estado ocorrendo para o estado preparado, interrompendo
a ocorrência no ponto em que estiver, porém respeitando o comportamento dos
atributos ocorrências e repetições.
O método start dos eventos instantâneos modifica ligeiramente o método
start da superclasse Event, colocando o evento imediatamente de volta no estado
preparado.
A Figura 8 ilustra as máquinas de estados para os eventos definidos no
modelo. Conforme pode ser observado, os eventos de seleção e atribuição simples
compartilham uma mesma máquina mais simples. Uma máquina um pouco mais
complexa é compartilhada pelos eventos de foco, arraste, mouse sobre âncora e
atribuição progressiva. Uma terceira máquina, bastante similar à anterior, porém
com um estado adicional de preparação (estado preparando) é definida para o
evento de apresentação. Isso também torna necessária a redefinição do método
prepare na classe PresentationEvent, que coloca o evento no estado preparando e
Modelos de Documentos Hipermídia com Recursos de Adaptação
42
não mais diretamente no estado preparado. Esse novo estado exige também a
criação de um método prepared, para colocar o evento no estado preparado. A
idéia é que a preparação para exibição de um objeto requer um procedimento de
busca das unidades de informação de seu conteúdo que não deve ser desprezado.
Normalmente, todos os demais eventos terão suas preparações dependentes da
preparação de algum evento de apresentação do documento.
start
prepare
dormindo
preparado
transição
instantânea
unprepare
abortado
transição
instantânea
dormindo
preparado
unprepare
abort
MouseDragEvent
MouseOverEvent
FocusEvent
ProgressiveAttributionEvent
abort
start
prepare
MouseClickEvent
SimpleAttributionEvent
ocorrendo
pause
ocorrendo
stop
start |
resume
suspenso
stop
PresentationEvent
unprepare
transição
instantânea
abortado
abort
abort
prepare
dormindo
prepared
preparando
abort
start
preparado
pause
ocorrendo
stop
suspenso
start |
resume
stop
Figura 8 – Máquinas de estados dos eventos7.
Os eventos são capazes de manter uma lista de objetos que os observam.
Esses objetos são notificados toda vez que ocorre uma transição na máquina de
estados do evento. Essa sinalização informa sempre o novo estado e o estado
anterior na máquina e é feita após os atributos estado corrente, ocorrências e,
quando existir, repetições, serem atualizados. Esse padrão de comportamento é
inspirado no design pattern denominado Observer (Gamma et al., 1995) e é
ilustrado na Figura 7. A interface EventListener define o tipo que deve ser
implementado pelas classes dos objetos que se interessem por observar os eventos.
7
Os nomes das transições estão em inglês na figura para refletir os nomes dos métodos definidos
nas classes e interfaces.
Modelos de Documentos Hipermídia com Recursos de Adaptação
43
O método transitionUpdate é invocado no objeto observador sempre que o estado
corrente do evento tiver seu valor alterado. O método addEventListener e
removeEventListener permitem, respectivamente, que um objeto se inscreva ou se
retire do cadastro de observadores do evento8.
De acordo com o que foi definido na Seção 2.3.1, todo objeto de execução
possui uma lista de eventos. Nessa lista, devem encontrar-se apenas os eventos do
objeto de execução que participam em algum relacionamento no documento. Toda
lista deve possuir ao menos um evento de exibição (evento da classe
PresentationEvent), o qual identificará o conjunto completo de unidades de
informação do conteúdo do objeto de dados que serão apresentadas quando o
objeto de execução for exibido. Normalmente, esse evento referenciará o conteúdo
inteiro do objeto, mas nada impede que se deseje efetuar uma apresentação apenas
parcial do conteúdo. Nesse caso, o evento de exibição estará associado a uma
âncora interna do objeto de dados.
2.3.2
Elos
O elo é a entidade do modelo que possibilita a definição dos
relacionamentos entre os componentes de um documento, mais especificamente
entre os eventos definidos nos objetos de execução. Existem dois tipos de
relacionamento entre os eventos de um documento que podem ser especificados
no modelo, dando origem a duas especializações da classe elo. O primeiro tipo
corresponde a relacionamentos causais entre os eventos, onde uma asserção lógica
no elo especifica uma condição sobre determinados eventos, que quando satisfeita,
implica o disparo de ações sobre outros eventos. Essa forma de relacionamento é
definida em objetos da classe elo causal. O outro tipo de relacionamento
especifica restrições sobre os eventos, que devem ser satisfeitas durante a
apresentação do documento. Esse segundo tipo de relacionamento é especificado
utilizando objetos da classe elo de restrição.
8
Apesar desse mecanismo de observação e notificação estabelecer uma modelagem de
comportamento, que poderia ser definida no formatador, optou-se por inseri-la no modelo de
execução, entendendo que sua utilidade para reuso nas implementações é significativa.
Modelos de Documentos Hipermídia com Recursos de Adaptação
44
A Figura 9 apresenta o diagrama de classes simplificado para os dois tipos
de elo do modelo. Todo elo possui a expressão do relacionamento contida em um
ponto de encontro (classe MeetingPoint), que é especializado em função da
subclasse de elo.
Link
MeetingPoint
1
1
1
ConstraintLink
1
CausalLink
CausalMeetingPoint
1
ConstraintMeetingPoint
1
1
1
1
1
Condition
1
Action
1
PropertyExpression
Figura 9 – Diagrama de classes simplificado para os elos.
2.3.2.1
Elos causais
Um elo causal possui como principal atributo um ponto de encontro causal
(classe CausalMeetingPoint). Esse ponto de encontro expressa uma regra de
causalidade, sendo constituído de uma condição (classe Condition) e uma ação
(classe Action). Conforme mencionado anteriormente, a satisfação da condição
implica no disparo da ação a ele associada. Tanto as condições como as ações de
pontos de encontro causais são associados a eventos dos objetos de execução. A
Figura 10 apresenta o diagrama detalhado para as classes relacionadas à definição
de elos causais.
A condição de um ponto de encontro, quando avaliada, retorna um valor
booleano e pode ser uma condição simples ou composta. Toda condição simples
(classe TransitionCondition), também chamada de condição de transição, possui
como atributos um evento E, um estado anterior (atributo previousState) e um
estado corrente (atributo newState). Esse tipo de condição avalia uma transição na
máquina de estados do evento E, retornando o valor verdade sempre que o estado
Modelos de Documentos Hipermídia com Recursos de Adaptação
45
de E mudar do valor especificado pelo atributo estado anterior para o valor
especificado pelo atributo estado corrente.
CausalLink
CausalMeetingPoint
1
1
1
1
1
Action
waitDelay
2
Condition
delay
2
run()
1
1
evaluate()
CompoundAction
SimpleAction
operator
TransitionCondition
event
previousState
newState
event
CompoundCondition
AbsoluteAssignmentAction
newVa lue
Rela tiveAssignmentA ct ion
newValue
TransitionSimpleAction
newState
1
OrCompoundCondition
AndCompoundCondition
1
UnprepareAction
PrepareAction
1
Property
event
offset
StartAction
PropertyExpressi on
isNegated
minDelay
1
maxDelay
1
getValue() 1
StopA ct io n
2
PauseAction
evaluate()
ResumeAct ion
1
1
TransitionProperty
previousStat e
newStat e
comparisonOperator
1
AbortAction
CompoundPropertyExpression
logicalOperator
SimplePropertyExpression
EventAttributeProperty
attributeId
TransitionPropertyExpression
AttributeProperty
attributeId
1
Pro pertyToPropertyExpression
1
PropertyToValueExpression
value
Figura 10 – Diagrama de classes para o elo causal.
Para a definição de uma condição composta (classe CompoundCondition), é
necessário, inicialmente, definir o conceito de propriedade (classe Property).
Uma propriedade possui um atributo que identifica um evento E, podendo
ser especializada em uma das três subclasses: propriedade de transição (classe
TransitionProperty), propriedade de atributo de evento ou propriedade de atributo
genérico. A propriedade de transição possui, além do evento, dois atributos
adicionais que identificam os estados da transição (estado anterior e novo estado).
A diferença da propriedade de transição para a condição de transição é que,
quando avaliada, ao invés de retornar um valor booleano, a propriedade retorna o
instante em que a transição ocorreu. A propriedade de atributo de evento (classe
EventAttributeProperty) possui, além do evento E, o identificador de um atributo
de E (por exemplo, estado corrente, ocorrências, repetições, duração esperada
etc.). Quando avaliada, a propriedade retorna o valor corrente desse atributo. Por
fim, a propriedade de atributo genérico (classe AttributeProperty) é uma
Modelos de Documentos Hipermídia com Recursos de Adaptação
46
especialização de propriedade, onde o evento E deve ser obrigatoriamente um
evento baseado em atributo. Essa subclasse de propriedade é similar à anterior,
retornando, sempre que avaliada, o valor do atributo referenciado por E. Toda
propriedade possui um atributo offset, que é somado ao seu valor quando a
propriedade é consultada. Evidentemente, essa soma pode não fazer sentido para
alguns atributos, como por exemplo, o estado corrente de um evento. Nesses
casos, o valor do atributo offset deve ser ignorado pelo formatador.
A propriedade de atributo de evento poderia ser especificada utilizando a
propriedade de atributo genérico. No entanto, isso obrigaria aumentar o número de
eventos na lista de eventos do objeto de execução, causando uma proliferação de
máquinas de estados no ambiente de execução. Por exemplo, para tratar o número
de ocorrências de um evento A, seria necessário criar um outro evento baseado em
atributo que referenciasse o atributo ocorrências de A. Por esse motivo, foi
definida uma classe de propriedade separada para tratar os atributos dos eventos.
Uma expressão de propriedades simples (classe SimplePropertyExpression)
permite comparar duas propriedades ou uma propriedade e um valor. Quando
avaliada, essa expressão retorna verdade se a comparação por ela definida for
satisfeita. Caso contrário, a expressão retorna falso. Dessa forma, toda expressão
de propriedades simples possui um atributo que identifica uma propriedade e um
outro atributo que identifica um operador de comparação (igual, diferente, menor
ou igual, maior ou igual, menor, ou maior). As expressões que comparam duas
propriedades (classe PropertyToPropertyExpression) possuem um terceiro
atributo que identifica uma segunda propriedade, enquanto as expressões que
comparam a propriedade a um valor (classe PropertyToValueExpression)
possuem um terceiro atributo que armazena o valor a ser comparado. O tipo desse
valor deve ser igual ao tipo do valor retornado pela propriedade. Da mesma forma,
na comparação entre duas propriedades, as duas devem retornar valores do mesmo
tipo.
Dependendo do tipo do atributo (genérico ou do evento) identificado pela
propriedade, alguns operadores de comparação podem não fazer sentido na
expressão de propriedades. Por exemplo, para o atributo estado de um evento só é
possível utilizar as comparações de igualdade e de diferença.
Modelos de Documentos Hipermídia com Recursos de Adaptação
47
Outra subclasse de expressão de propriedades é a expressão de propriedades
composta (classe CompoundPropertyExpression). Essa última consiste em uma
expressão lógica binária, baseada nos operadores “E” e “OU”, envolvendo duas
expressões de propriedades (superclasse PropertyExpression).
Expressões de propriedades possuem um atributo denominado isNegated,
que determina o sinal da expressão. Esse atributo especifica se, após avaliada, o
valor retornado pela expressão deve ser ou não invertido (negado). Além disso,
toda expressão de propriedades possui dois atributos, minDelay e maxDelay, onde
minDelay deve ser menor ou igual a maxDelay e ambos os valores devem ser não
negativos. Esses atributos definem um intervalo de deslocamento para a avaliação
da expressão. Por exemplo, dado que uma expressão de propriedades P é
verdadeira em um instante t, uma outra expressão P’, definida com atributos
minDelay=”t1” e maxDelay=”t2” e a mesma expressão de P, é verdadeira no
intervalo dado por [t+t1, t+t2]. O sinal de negação da expressão deve ser aplicado
somente após essa avaliação.
Além das expressões de propriedades simples e compostas, o modelo define
uma terceira subclasse de expressão de propriedades, denominada expressão de
propriedade de transição, ou simplesmente expressão de transição (classe
TransitionPropertyExpression). Essa expressão contém uma propriedade de
transição e restringe o atributo maxDelay como devendo possuir um valor maior
que o valor do atributo minDelay. A expressão de transição permite definir
expressões de propriedades que se tornam verdadeiras durante um intervalo após a
transição na máquina de estados de um determinado evento. Esse tipo de
expressão permite que as ações dos elos causais estejam condicionadas a
intervalos onde não é garantido haver um estado de evento para ser testado. Por
exemplo, uma expressão de transição associada à mudança do estado ocorrendo
para o estado preparado de um evento de apresentação E, com atributos
minDelay=”10s” e maxDelay=”25s”, será considerada verdadeira somente 10
segundos após o término da ocorrência de E e permanecerá verdadeira durante os
15 segundos seguintes.
Uma condição composta consiste de uma expressão lógica binária, também
baseada nos operadores “E” e “OU”. A condição composta baseada no operador
“OU” (classe OrCompoundCondition) envolve duas condições (simples ou
Modelos de Documentos Hipermídia com Recursos de Adaptação
48
composta), enquanto a condição composta baseada no operador “E” (classe
AndCompoundCondition) envolve uma condição (simples ou composta) e uma
expressão de propriedades. As definições apresentadas visam, ao mesmo tempo,
garantir que toda condição de um elo causal só possa ser satisfeita em um instante
de tempo infinitesimal e impedir a especificação de uma condição composta “E”,
contendo em cada lado da comparação condições que somente sejam satisfeitas
em instantes de tempo infinitesimais.
Opcionalmente, toda condição possui um atributo denominado retardo
(atributo delay). O atributo retardo é definido por um valor t. Quando definido em
uma condição C, a mesma é satisfeita em um instante de tempo t’, se a condição C
estiver satisfeita em um instante de tempo dado por (t’ - t).
Semelhante às condições, as ações de um ponto de encontro do elo causal
podem ser simples ou compostas. As ações oferecem um método run para que
sejam executadas e retornam um valor booleano, informando se foi possível ou
não realizar a sua execução.
Toda ação simples possui um atributo que referencia um evento (atributo
event). Essas ações podem ser de transição (classe TransitionAction), de atribuição
absoluta (classe AbsoluteAssignmentAction) ou de atribuição relativa (classe
RelativeAssignmentAction). Outras classes de ação podem ser criadas em função
da implementação do formatador.
Uma ação simples de transição possui como atributo o novo estado que o
evento deve assumir (atributo newState) em sua máquina de estados. Dependendo
do estado corrente do evento e das regras definidas pelo formatador, essa transição
pode ser ou não realizada. Subclasses para realizar as transições nas máquinas de
estados apresentadas na seção anterior são também definidas no modelo.
As ações de atribuição absoluta e relativa só se aplicam a eventos baseados
em atributo. Essas ações possuem como atributo o valor que deve ser atribuído
(absoluta) ou somado (relativa) ao atributo identificado pelo evento.
Uma ação composta é formada por uma expressão de ações baseada nos
operadores paralelo e seqüencial, definindo a ordem de execução de cada
elemento da ação. Além disso, toda ação, simples ou composta, possui um
atributo opcional denominado tempo de espera (atributo waitDelay). Esse atributo
define um tempo que deve ser aguardado antes que a ação seja executada. Da
Modelos de Documentos Hipermídia com Recursos de Adaptação
49
mesma forma que a duração do evento, esse atributo é especificado através de um
objeto da classe duração (classe Duration), que pode inclusive ser flexível,
cabendo ao formatador escolher um valor para o tempo de espera que garanta ao
documento a melhor qualidade de apresentação possível.
De acordo com o que foi apresentado, os elos causais especificam condições
sobre eventos (normalmente transições nesses estados) que, quando satisfeitas,
devem disparar ações sobre outros (às vezes até os mesmos) eventos especificados
no documento. São justamente essas ações que irão ocasionar novas transições nas
máquinas de estados dos eventos. A seguir são ilustrados como alguns exemplos
de relacionamentos hipermídia seriam representados internamente no ambiente de
execução.
Exemplo 1
Suponha uma apresentação com um objeto de execução V1 contendo um
vídeo e um outro objeto A1 contendo um áudio, onde se deseja que o áudio seja
apresentado apenas durante um determinado trecho do vídeo, identificado por um
evento de exibição ev1. Considere que ea1 é o evento de exibição que corresponde
à apresentação de todo o objeto A1 e que a máquina de estados para os eventos de
exibição é a mesma ilustrada na Figura 8. A Tabela 1 apresenta a representação
gráfica do relacionamento e os elos causais que seriam criados no formatador.
V1
Elo
Expressão do Relacionamento
L1
ev1(preparado, ocorrendo) => start(ea1)
L2
ev1(ocorrendo, preparado) => stop(ea1)
A1
ev1
L1
L2
ea1
Tabela 1 – Sincronização temporal através de elos causais.
Exemplo 2
Esse exemplo ilustra como composições com semântica de relacionamentos
de sincronização podem ser mapeadas em elos causais. Seja uma composição
seqüencial com dois vídeos, V1 e V2, que devem ser exibidos nessa ordem. Os
eventos ev1 e ev2 correspondem à apresentação de todo o conteúdo de cada um dos
objetos, respectivamente. A Tabela 2 apresenta a representação gráfica da
composição e como o relacionamento entre seus componentes seria expresso por
uma causalidade entre eventos.
Modelos de Documentos Hipermídia com Recursos de Adaptação
Composição
Expressão do Relacionamento
SEQ1
ev1(ocorrendo, preparado) => start(ev2)
50
V1
V2
SEQ1
Tabela 2 – Sincronização temporal através de elos causais, a partir de uma especificação
de sincronização utilizando composições.
Exemplo 3
Sejam dois objetos de execução: uma imagem I1 do mapa do Brasil e um
texto T1 com informações sobre o estado do Rio de Janeiro. Deseja-se que, quando
o usuário selecionar com o mouse o estado do Rio de Janeiro em I1, seja
apresentado T1 ao lado da imagem, com largura de 150 pixels e altura de 200
pixels. Esse relacionamento pode ser especificado entre um evento de seleção ei1,
definido em I1 sobre a região do Rio de Janeiro, e o evento de apresentação et1,
correspondendo à exibição de T1. As características espaciais da apresentação
estariam definidas na região apontada pelo descritor de T1. A Tabela 3 ilustra o
relacionamento descrito e a especificação do elo.
Elo
Expressão do Relacionamento
L1
ei1(preparado, ocorrendo) =>
start(et1)
T1
I1
O Estado do
Rio de Janeiro
200 pixels
150 pixels
ei1
seleção
Tabela 3 – Sincronização espacial e temporal através de elo causal.
Conforme
discutido
na
Seção
2.2,
relações
de causa e efeito
(condições/ações) não são suficientes para determinar todas as relações existentes
entre componentes de um documento hipermídia. Existem relações que,
semanticamente, especificam restrições (constraints) entre eventos, tais como:
dois objetos devem terminar suas exibições ao mesmo tempo. A definição desses
tipos de relacionamentos é capturada pela classe elo de restrição.
Modelos de Documentos Hipermídia com Recursos de Adaptação
51
2.3.2.2
Elos de restrição
Um elo de restrição é um elo cujo ponto de encontro, ao invés de definir
uma regra causal, especifica restrições entre eventos. Mais especificamente, o
ponto
de
encontro
possui
uma
expressão
de
propriedades
(classe
PropertyExpression). A expressão de propriedades tem a mesma definição dada
na seção anterior, quando da especificação de condições compostas do ponto de
encontro de um elo causal. No entanto, por não fazer sentido considerar algumas
das expressões nos elos de restrição, o modelo estabelece algumas imposições.
Em primeiro lugar, não é permitido o uso de expressões de transição nos elos de
restrição. Além disso, o atributo isNegated da expressão deve ser sempre falso e
os atributos minDelay e maxDelay devem ser sempre iguais a zero. Caberá a cada
implementação particular de formatador aumentar ainda mais as observações
restritivas para aquelas expressões de propriedades que a máquina não souber, ou
não fizer sentido, monitorar.
Os elos de restrição estipulam regras que o formatador deve procurar
garantir que sejam respeitadas durante a execução do documento. Como exemplo
de ponto de encontro de restrição, suponha uma propriedade de transição P,
especificando a transição “preparado->ocorrendo”, representando o instante de
início da ocorrência de um evento de exibição A, e uma outra propriedade Q,
especificando a transição “ocorrendo->preparado”, representando o instante de
término da ocorrência de um outro evento de exibição B. Se uma expressão de
propriedades S1 definir que “P = Q”, isso implica que a relação meet de Allen
(Figura 2) deve ser satisfeita na execução do documento como uma relação
restritiva. Ou seja, se e somente se os dois eventos de exibição ocorrerem na
apresentação, o final de A deve coincidir com o início de B. Caso um dos dois
eventos não ocorra, o modelo considera que a restrição foi satisfeita.
A impossibilidade de respeitar as regras de restrição significa que existe
uma inconsistência na apresentação especificada pelo autor. Essa inconsistência
pode ser causada pelas próprias relações definidas internamente no documento, ou
pelo cenário imposto pelo contexto de exibição, externo ao documento. As
referências (Felix et al., 2002; Santos et al., 1998a; Santos et al., 1998b) discutem
aspectos de verificação de consistência em apresentações hipermídia.
Modelos de Documentos Hipermídia com Recursos de Adaptação
52
2.3.3
Suporte à adaptação no modelo de execução
O modelo de execução proposto dispõe de alguns recursos para oferecer
suporte à adaptação das apresentações. O primeiro tipo de suporte reside na
maneira flexível que as durações são definidas, tendo sido comentado
anteriormente. O modelo permite que os tempos de um modo geral (duração dos
eventos de apresentação, intervalo entre repetições, tempo de espera para executar
ações etc.) sejam especificados através de intervalos e até mesmo métricas
(funções de custo), possibilitando a aplicação de algoritmos de ajuste dos tempos
elásticos, como será melhor explicado no Capítulo 4.
O segundo suporte que o modelo oferece para a adaptação dos
hiperdocumentos são as regras de exibição (classe PresentationRule). Apesar de
omitida na Seção 2.3.1.2, a regra de exibição é um atributo opcional dos
descritores e estabelece uma condição para que os objetos de execução
efetivamente participem da exibição do documento.
Além dos descritores, os elos também possuem como atributo opcional uma
regra de exibição que, quando não satisfeita, deve gerar a remoção do
relacionamento do documento. Nada impede que uma mesma regra seja
referenciada por mais de um descritor e mais de um elo. A Figura 11 ilustra o
diagrama de classes para as regras de exibição.
0. .*
Descriptor
0..1
Pres entationRule
2
0..1
Link
0..1
Com poundP resentationRule
logic alOperator
0..*
S im p leP res entati onRule
at ributeId
c om paris onOperator
value
Figura 11 – Diagrama de classes para as regras de exibição.
Baseado nas informações contextuais, o formatador hipermídia deve avaliar
cada uma das regras e com isso determinar se as entidades devem ou não estar
Modelos de Documentos Hipermídia com Recursos de Adaptação
53
presentes na execução do documento. Diz-se que um objeto de execução ou elo
está desabilitado, quando a regra de exibição a ele associada é avaliada como
falsa. Caso contrário a entidade é considerada habilitada. Cabe a cada
implementação particular de formatador decidir o momento em que as regras
serão avaliadas, definindo assim se a adaptação seguirá uma estratégia estática ou
dinâmica (Seção 2.1.3). É inclusive possível que as duas estratégias sejam
combinadas em função dos parâmetros que estejam sendo testados. Nada impede
também que, em estratégias de adaptação dinâmica, algumas regras sejam
avaliadas mais de uma vez, podendo alterar o estado de habilitação das entidades
durante a exibição dos documentos.
As regras de exibição são sempre baseadas em parâmetros do contexto de
exibição. Em implementações de formatadores que não disponham de um
gerenciador de contexto, ou que o gerenciador não saiba informar o valor do
parâmetro sendo testado, as regras devem ser simplesmente ignoradas e todas as
entidades devem ser consideradas habilitadas na execução do documento. Da
mesma forma, objetos de execução e elos que não tenham uma regra de exibição a
eles associada são sempre considerados habilitados.
Com relação à consistência do documento, sempre que um objeto de
execução deve ser desabilitado em uma apresentação, alguns cuidados devem ser
tomados com os relacionamentos. Em primeiro lugar, ações de elos causais que se
apliquem a algum evento contido no objeto devem ser ignoradas. Implementações
de formatadores podem inclusive desabilitar os elos cujas ações estejam definidas
apenas sobre eventos contidos em objetos desabilitados. O segundo ponto diz
respeito às expressões de propriedades, tanto nos elos de restrição como nas
condições dos elos causais. Expressões de propriedades simples que possuam uma
propriedade cujo evento esteja contido em um objeto desabilitado devem ser
consideradas verdadeiras quando avaliadas.
As regras de exibição podem ser simples ou compostas. Uma regra de
exibição simples (classe SimplePresentationRule) é análoga à expressão que
compara uma propriedade a um valor (Figura 10) e possui três atributos: o
identificador de um atributo do contexto de exibição, um operador de comparação
e um valor. A regra de exibição composta (classe CompoundPresentationRule),
por sua vez, é uma expressão lógica binária envolvendo duas regras de exibição
Modelos de Documentos Hipermídia com Recursos de Adaptação
54
(simples ou composta) relacionadas através do operador “E” ou do operador
“OU”.
O terceiro e último recurso que o modelo oferece para a adaptação das
apresentações são as alternativas de exibição. A alternativa é definida como uma
especialização de objeto de execução (classe ExecutionObjectAlternatives) cujos
atributos (identificador, objeto de dados, descritor e lista de eventos) não estão
ainda todos definidos. Adicionalmente, toda alternativa de exibição possui um
segundo identificador único, um conjunto de pontos de interface, um objeto de
execução default opcional, uma lista ordenada de regras de exibição e, para cada
regra da lista, um objeto de execução associado.
Na execução do documento, o formatador deve seguir a ordem da lista e
avaliar as regras para cada alternativa. Para o primeiro objeto de execução que
tiver a regra associada satisfeita, o formatador deve utilizar todos os seus atributos
(identificador, objeto de dados etc.) para preencher os atributos não resolvidos da
alternativa. Diz-se que o objeto de execução escolhido é o objeto selecionado.
Nesse momento, é como se a alternativa deixasse de existir e fosse substituída
pelo objeto de execução escolhido. Caso a lista inteira seja percorrida sem que
nenhuma regra venha a ser satisfeita, o objeto de execução default da alternativa
deve ser selecionado. Não havendo um objeto default, nenhum dos objetos de
execução devem ser considerados na apresentação do documento. O modelo
permite que alternativas sejam definidas de modo aninhado (alternativa contida
em outra alternativa). A Figura 12 ilustra as classes relacionadas à definição de
alternativas no modelo.
Como pode ser percebido na figura, a alternativa possui também um
identificador adicional (atributo uid). Esse atributo permite identificar a alternativa
no ambiente de execução e deve ser diferente dos identificadores de todos os
outros objetos de execução presentes no formatador. Além disso, a alternativa
também herda o identificador único da classe ExecutionObject. Esse identificador
irá possui o valor do identificador do objeto de execução que vier a ser
selecionado.
Os pontos de interface das alternativas (classe InterfacePoint), de acordo
com o diagrama da figura, são instâncias de uma subclasse de evento. Similar à
própria alternativa, o ponto de interface é um evento que ainda não foi preenchido
Modelos de Documentos Hipermídia com Recursos de Adaptação
55
com os seus atributos. Todo ponto de interface contém uma lista de mapeamentos
(atributo mapList), onde é definido, para cada objeto de execução OE contido na
lista das alternativas, uma associação com algum evento do conjunto de eventos
de OE. Quando um objeto de execução é selecionado, os mapeamentos dos pontos
de interface para eventos do objeto selecionado são também escolhidos para
compor a lista de eventos da alternativa.
Prese ntation Rul e
ExecutionObject
event List
Event
1
1.. *
1..*
1.. *
0..1
0..*
defaultAlte rnat ive
1
0.. *
mapL ist
ExecutionObjectAlternatives
uid
ipSet
1
InterfacePoint
1..*
Figura 12 – Diagrama de classes para as alternativas de objetos de execução.
A definição de ponto de interface serve para que relacionamentos (elos) no
modelo possam ser especificados não apenas entre objetos de execução
tradicionais, como também entre alternativas de objetos, como ilustra a Figura 13.
O modelo permite ainda que um mesmo objeto de execução esteja contido em
mais de uma alternativa. Além disso, nada impede que alguns elos sejam definidos
no modelo diretamente conectados a um objeto de execução que esteja inserido
em uma alternativa. Quando o objeto não for selecionado, esses relacionamentos
serão provavelmente ignorados na execução do documento.
Modelos de Documentos Hipermídia com Recursos de Adaptação
56
Objetos de Execução
Y
Elos
X
Ponto de Interface
Evento
Mapeamentos
A
B
C
Alternativa
Objetos de
Execução Alternativos
Figura 13 – Alternativas de objetos, pontos de interface e elos.
Da maneira como são definidas no modelo as alternativas de objetos, os
pontos de interface e as extremidades dos elos, é possível implementar nos
formatadores mecanismos de adaptação das relações (2.1.1.2). Para isso, basta
colocar em uma mesma alternativa cópias de um mesmo objeto de execução com
diferentes elos associados aos seus eventos. A única restrição é que cada cópia de
objeto seja tratada como um objeto de execução diferente, definindo um novo
identificador único. A Figura 14 oferece um exemplo de uso das alternativas para
adaptar as relações. No exemplo, o elo que exibe o objeto de execução Z só estará
habilitado no documento se a alternativa A’, cópia de A, for o objeto de execução
selecionado.
Modelos de Documentos Hipermídia com Recursos de Adaptação
57
Y
X
Z
A
Elo ignorado se
a alternartiva A’
não for
selecionada
A´
Figura 14 – Suporte à adaptação de relações no modelo.
Assim como para as regras de exibição, é critério do formatador e de suas
políticas de adaptação definir o momento em que deve ser feita a avaliação de
cada uma das alternativas.
2.3.4
Agrupamentos de objetos de execução e relacionamentos
O modelo define uma classe Container, que reúne um conjunto de objetos
de execução (atributo executionObjects), um conjunto de elos causais (atributo
causalLinks) e um conjunto de elos de restrição (atributo constraintLinks),
conforme ilustrado na Figura 15.
Container
Executi onObject
0..*
Causa lLink
1.. *
getExecutionObjects()
1 getCausalLinks()
getConstraintLinks()
exec utionObjects addExecutionObject()
addCausalLink()
addConstraintLink()
removeExecutionObject()
removeCausalLink()
removeConstraintLink()
1
causalLinks
constrai ntLink s
1
ConstraintLink
0..*
Figura 15 – Diagrama de classes para o contêiner.
Além dos atributos, o contêiner oferece um conjunto de métodos para
navegação em sua estrutura, para inserção e para remoção de elementos (objetos
de execução e elos). Os elos causais e de restrição são mantidos separadamente no
Modelos de Documentos Hipermídia com Recursos de Adaptação
58
contêiner, para favorecer implementações de funções de formatação que
necessitem manipular os diferentes tipos de relacionamentos de maneira seletiva.
O formatador hipermídia irá lidar com instâncias da classe Container para
constituir o plano de controle da apresentação dos documentos. Os contêineres
podem ser criados externamente ao ambiente de execução, por um ambiente de
autoria que trabalhe com uma abstração de modelo idêntica ao modelo de
execução, e passados diretamente como parâmetros para o formatador. A outra
opção, já comentada na Figura 3, é ter o contêiner instanciado no formatador, a
partir de um processo de conversão que traduz um outro modelo de documentos
hipermídia no modelo proposto nesta seção.
Um documento no formatador pode ser resultado de um único contêiner ou
de uma coleção deles. Quando originado de mais de um contêiner, nada impede
que os mesmos sejam entregues (pelo ambiente externo ou pelo conversor)
paulatinamente, permitindo que o plano de execução de um documento seja
construído aos poucos. Esse recurso permite ao formatador tratar documentos de
outros modelos que não apresentem claramente uma delimitação de início e fim da
apresentação, como é o caso dos documentos na Web. Páginas HTML, ao
possuírem os elos embutidos nos seus conteúdos e permitirem que esses elos
referenciem qualquer outro recurso na rede, geram teias de relacionamentos que
podem se expandir por uma quantidade imensa de nós. Mesmo em modelos (ou
linguagens) que exploram o conceito de composição e definem as fronteiras para
os documentos, a divisão em contêineres, e de forma progressiva, também pode
ser útil, pois para os documentos mais extensos pode não ser viável construir a
estrutura de execução completa antes de iniciar a exibição dos objetos.
O conceito de contêiner é análogo ao conceito homônimo definido no
padrão MHEG (ISO/IEC, 1996). No entanto, no padrão MHEG essa entidade foi
definida para transportar conjuntos de nós e elos de servidores para clientes
hipermídia, enquanto no modelo de execução, esse conceito é definido na
interface (API – Application Program Interface) para interação com os
formatadores. As duas abstrações podem até conviver em uma implementação de
cliente MHEG que siga o modelo de execução proposto nesta seção e a arquitetura
de execução que será apresentada nos próximos dois capítulos.
Formatadores e Ferramentas de Exibição Hipermídia
59
3
Formatadores e Ferramentas de Exibição Hipermídia
Como já definido no Capítulo 1, o formatador é a entidade em um sistema
hipermídia responsável por controlar a apresentação dos hiperdocumentos,
baseando-se nas suas respectivas especificações e também, sempre que possível,
na descrição do contexto de exibição (banda passante, recursos de E/S disponíveis
no cliente, perfil e preferências do usuário etc.). Este capítulo destina-se a analisar
as principais funcionalidades desejáveis de serem encontradas em um ambiente de
execução hipermídia, partindo-se de um modelo de documentos orientado a
eventos e adaptativo como o apresentado na Seção 2.3. É importante lembrar que,
apesar deste trabalho tratar apenas da formatação no lado cliente, várias das
funcionalidades discutidas neste capítulo podem ser desempenhadas também em
servidores ou mesmo proxies hipermídia.
Além das características mencionadas na Seção 2.2 como sendo desejáveis
de serem encontradas nos modelos de documentos hipermídia, as quais devem ser
previstas e suportadas pelo formatador, é importante observar que existem
também características de projeto e implementação interessantes de estarem
presentes nos formatadores hipermídia.
Em primeiro lugar, é apropriado que haja uma independência entre os
formatadores e as ferramentas de exibição (Seção 1.1), de tal modo que seja
facilitada a incorporação no sistema de novas ferramentas, e também de
ferramentas já existentes e disponíveis em outros sistemas. Tais ferramentas
devem oferecer interfaces que permitam ao usuário interagir com os conteúdos
dos objetos e ao mesmo tempo essas interações devem refletir no controle
realizado pelo formatador. É também interessante que, para conteúdos dinâmicos
(áudio e vídeo, por exemplo), o usuário possa modificar o ponto de exibição
arbitrariamente e essa alteração refletir nos relacionamentos de sincronização do
documento.
Formatadores e Ferramentas de Exibição Hipermídia
60
O segundo recurso desejável, cuja importância foi levantada nos Capítulos 1
e 2, é a existência de mecanismos capazes de adaptar as apresentações às
restrições impostas pelo autor e ao contexto de exibição da aplicação hipermídia.
Nesta tese, além dos ajustes elásticos das durações dos objetos, serão também
tratados os aspectos de adaptação ao contexto de exibição em que o formatador
executa (Seção 2.1.2), com ênfase na adaptação à plataforma. O modelo proposto
(Seção 2.3.3) também contempla adaptações simplificadas dos elos e adaptações
relacionadas ao interesse do usuário, apesar desses não serem o foco do trabalho.
A terceira funcionalidade de grande utilidade para um formatador
hipermídia é a presença de um mecanismo de pré-busca dos conteúdos dos objetos
e de antecipação às ações de exibição. Esse recurso possibilita melhorar a
qualidade das apresentações e reduzir a carga de processamento exigida dos
mecanismos de adaptação.
Por fim, é interessante que o formatador hipermídia explore, sempre que
possível, facilidades de negociação e reserva de recursos que estejam disponíveis
na infra-estrutura de execução, atuando como um usuário desses serviços com
reserva, novamente visando melhorar a qualidade das apresentações e reduzir a
carga de processamento exigida dos mecanismos de adaptação.
Este capítulo apresenta a estrutura básica para organização do formatador e
acomodação dessas funcionalidades e também analisa detalhadamente a questão
da integração do formatador com as ferramentas de exibição. As outras
funcionalidades desejáveis (pré-busca, negociação de QoS e adaptação) serão
discutidas no capítulo seguinte.
3.1
Estrutura básica de um formatador hipermídia
A Figura 16 apresenta os principais componentes que integram um
formatador hipermídia ideal, destacando também alguns dos elementos externos a
ele, com os quais é mantida uma maior interação. De fato, a figura oferece uma
visão mais detalhada do ambiente de execução apresentado na Figura 1.
A primeira etapa na apresentação de um hiperdocumento é a chegada de
uma solicitação para o início da sua exibição, na qual a descrição do documento
(ou parte dele) é passada como parâmetro (seta 1, na Figura 16). Essa descrição
Formatadores e Ferramentas de Exibição Hipermídia
61
pode ser proveniente tanto do ambiente de autoria como do ambiente de
armazenamento (Figura 1), no caso de um documento já previamente publicado
no servidor. Vale ressaltar que o formatador pode receber o documento inteiro ou
em partes, de maneira incremental.
Formatador
Conversor
2
Orquestrador de Apresentação
Compilador
1
4
Ferramentas de
Exibição
9
Executor
3
10
Plano de Execução
Título
Imagem
Imagem
Versos 01
Versos 02
Im
Versos 03
Vídeo
Versos 04
Versos 05
Música (Coisa de Pele)
Início
Adaptador
7
Compilador
Orquestrador de Pré-Busca
Compilador
Executor
12
Executor
Gerenciador
da
Orquestração
Intra-mídia
Intra-mídia
8
Proxy de
Informações
Contextuais
Plano de Pré-busca
5
6
Gerenciador
de Contexto
11
Gerenciadores de
Recursos de Comunicação
e Processamento
Figura 16 – Principais elementos que compõem um formatador hipermídia.
Na especificação do hiperdocumento serão encontradas, entre outras
informações, a descrição dos nós que compõem a apresentação, a descrição dos
relacionamentos entre esses nós (relacionamentos de estruturação, sincronização,
alternativas etc.) e a descrição das características para a exibição de cada um dos
nós. Se essa especificação não estiver de acordo com o modelo de execução
esperado pelo formatador, ela deve ser antes entregue a um módulo conversor
para transformá-la em uma descrição que siga o modelo de contêineres de objetos
de execução e elos, descrito na Seção 2.3 (seta 2). É justamente essa etapa de
conversão que permite que o ambiente de execução controle a exibição de
documentos provenientes de diferentes modelos hipermídia. Evidentemente,
algumas características do modelo de documentos de entrada podem ser perdidas,
se as mesmas não puderem ser mapeadas no modelo de execução.
Formatadores e Ferramentas de Exibição Hipermídia
62
Para auxiliar na coordenação da apresentação, o formatador normalmente irá
construir um plano de execução (ou plano de escalonamento), a partir da estrutura
de dados de entrada (montada externamente ou pelo módulo conversor). Dentre as
informações que devem estar contidas nesse plano, destacam-se as previsões das
durações de ocorrência dos eventos não instantâneos, principalmente os eventos
de exibição, e os instantes de tempo esperados para exibição dos vários objetos de
execução. No entanto, é importante que o plano não seja um simples timeline
dessas ações, mas sim que preserve as relações de dependência entre os objetos,
pois isso irá favorecer sua manutenção, quando da aplicação das técnicas de
adaptação durante a exibição do documento. Por exemplo, se as unidades de
informação do conteúdo de um objeto não forem exibidas no instante previsto (ou
com a duração prevista) por motivo de um congestionamento na rede, conhecendo
as relações de dependência, o formatador pode tentar ajustar as durações dos
eventos de exibição diretamente afetados, buscando assim recuperar a
sincronização da exibição, sem a obrigação de refazer todo o plano de execução a
partir da adaptação efetuada. Portanto, é importante que o plano de execução
mantenha um vínculo com as informações descritas nos relacionamentos de
causalidade e de restrição entre os objetos especificados no modelo de execução.
Também é importante que o plano de execução mantenha as informações
referentes às regras de exibição e às alternativas para os parâmetros dinâmicos do
contexto de exibição. Na verdade, o plano de execução complementa as
informações contidas no modelo de execução, buscando favorecer os mecanismos
de escalonamento e adaptação. A etapa em que o plano de execução é ao menos
parcialmente construído, antes que os objetos comecem a ser exibidos, é
denominada fase de compilação do documento, sendo a construção desse plano
(seta 3, na figura) responsabilidade do submódulo compilador, no orquestrador de
apresentação.
O compilador de apresentação espera como entrada contêineres do modelo
de execução (Seção 2.3.4) e, assim como os conversores do ambiente de
execução, também pode receber os dados de maneira progressiva.
Retornando à questão do cálculo das durações e tempos esperados, é
importante salientar que podem existir objetos de execução para os quais o
compilador de apresentação não consiga definir a priori os instantes de exibição
Formatadores e Ferramentas de Exibição Hipermídia
63
esperados, pois nem sempre a apresentação de um objeto é previsível. A idéia de
previsibilidade de apresentação de um objeto está associada com a previsibilidade
do evento de exibição correspondente, que por sua vez é sempre relativa a algum
outro evento da apresentação ou ao início da apresentação como um todo.
Uma estratégia interessante para a construção do plano de execução é seguir
a proposta do sistema Firefly (Buchanan & Zellweger, 1992) e estabelecer as
cadeias temporais do documento. Nessa proposta, uma cadeia é denominada a
principal e corresponde à seqüência de exibições previsíveis que começa com o
próprio princípio da apresentação de um documento. Além disso, zero ou mais
cadeias temporais auxiliares podem existir, cada uma sendo iniciada por uma
transição imprevisível na máquina de estados de algum evento do documento e
disparando uma seqüência de exibições previsíveis em relação a essa transição.
Seguindo essa abordagem, o compilador de apresentação irá calcular, para cada
cadeia temporal, os instantes de tempo esperados de uma maneira relativa ao
início da cadeia. Note assim que o plano de execução é de fato uma estrutura de
dados que reflete as diversas cadeias temporais.
Durante a fase de compilação da apresentação, se o modelo hipermídia
permitir (ou seja, oferecer informações flexíveis), estratégias de adaptação, tais
como ajuste de tempo dos objetos e escolha entre múltiplas opções de
apresentação (por exemplo, opções de resolução, de dimensão, de idioma, tipos de
mídia etc.), podem ser acionadas para encontrar a configuração que atenda as
restrições do autor e ao mesmo tempo ofereça a melhor qualidade de exibição para
o contexto em questão. Para tanto, o compilador de apresentação deve requisitar
os serviços do módulo adaptador (seta 4), que por sua vez pode precisar consultar
as informações do contexto de exibição (seta 5), antes de acionar seu submódulo
compilador. O resultado da adaptação é então refletido no plano de execução. Para
as alternativas que não possam ser resolvidas na fase de compilação, o compilador
de apresentação deve deixar indicado no plano de execução a existência de um
conjunto de alternativas e criar uma nova cadeia temporal auxiliar onde sejam
colocados os objetos cujas exibições dependam dessa adaptação dinâmica.
Nesse momento, é importante comentar a existência no formatador do
módulo denominado proxy de informações contextuais. A idéia dessa proposta é
encapsular nesse elemento a responsabilidade de buscar as informações junto ao
Formatadores e Ferramentas de Exibição Hipermídia
64
gerenciador de contexto (seta 6). A presença do proxy oferece uma interface única
para os demais componentes do formatador e desobriga que esses componentes
conheçam o protocolo para consulta às informações contextuais, em especial as
dinâmicas. Essa separação é interessante principalmente pela variedade de
cenários e protocolos que podem vir a reger esse tipo de consulta, pois o proxy
pode necessitar dialogar com mais de um gerenciador (informações do sistema
operacional, informações da rede, informações do usuário etc.) e combinar o uso
de diferentes protocolos e estruturas de dados. No entanto, nada impede que em
cenários mais simples, o proxy seja, na realidade, o próprio gerente de contexto.
A existência de um mecanismo de pré-busca no formatador é importante
para minimizar os retardos no início das exibições dos objetos e compensar as
variações nas taxas de exibição dos objetos de mídia contínua. Torna-se então
conveniente a construção de um plano de pré-busca a partir do plano de execução
(setas 7 e 8), antecipando as ações especificadas no documento. Essa tarefa é
realizada pelo módulo orquestrador de pré-busca, na Figura 16. Na construção do
plano de pré-busca, também serão extremamente úteis informações que estejam
disponíveis a respeito do contexto de exibição, tais como banda passante
disponível e probabilidades de navegação (seta 5, na figura).
Uma vez iniciada a exibição dos objetos, o formatador entra na fase de
execução, coordenada pelo submódulo executor do orquestrador de apresentação.
O executor de apresentação é o elemento responsável por monitorar a
apresentação do documento, instanciando e interagindo com as ferramentas
responsáveis pela exibição dos objetos (seta 9, na Figura 16). Cabe ao executor
escalonar as ações a fim de cumprir o plano de execução definido pelo
compilador. Além disso, toda vez que um evento imprevisível ocorrer, como a
interação do usuário, se houver uma cadeia temporal auxiliar iniciada por esse
evento, essa cadeia deve ser unida à cadeia temporal principal, gerando as devidas
correções no plano de execução. É também responsabilidade do executor de
apresentação monitorar os instantes de tempo em que as ações efetivamente
ocorrem e comparar com os tempos originalmente previstos. Sempre que o
executor perceber diferenças, é desejável que o módulo de adaptação seja
acionado a fim de realizar os ajustes possíveis de serem aplicados. O módulo de
adaptação, por sua vez, pode precisar consultar as informações dinâmicas do
Formatadores e Ferramentas de Exibição Hipermídia
65
contexto de exibição (seta 5), antes de acionar seu submódulo executor, de forma
análoga à fase de compilação.
Cabe aqui ressaltar a existência, no módulo de adaptação, de tanto um
submódulo compilador como um executor. Normalmente, as estratégias de
adaptação executadas no momento da compilação do documento podem demorar
um tempo maior para gerar o seu resultado. Na realidade, várias das funções de
compilação podem inclusive ser realizadas horas, ou mesmo dias, antes da
apresentação. Pode ser inclusive interessante que algumas dessas tarefas sejam
desempenhadas em tempo de autoria, numa fase denominada de pré-compilação
(Rodrigues et al., 1997), oferecendo um recurso na ferramenta de edição que pode
ser útil, por exemplo, para tornar mais ágil a identificação de apresentações
inconsistentes (apresentações para as quais não é possível gerar um plano de
execução). Por todas essas razões, os algoritmos de compilação, principalmente os
algoritmos de adaptação, podem apresentar uma maior complexidade, buscando
em contrapartida gerar um resultado mais próximo da qualidade ideal de exibição.
Após iniciada a exibição, os algoritmos de controle executados no
formatador precisam oferecer resultados quase que imediatos. Nesse sentido, os
algoritmos de ajuste são críticos, pois eles são requisitados não apenas para
corrigir erros e atrasos nos sistemas de comunicação e processamento, como
também lidar com os eventos imprevisíveis (principalmente interações do usuário)
inerentes aos modelos hipermídia. A própria união de uma cadeia temporal
auxiliar à cadeia principal irá resultar em novos cálculos e, provavelmente, na
necessidade de novas adaptações. Por esses motivos, os algoritmos de compilação
podem não se mostrar adequados para a fase de execução, exigindo novas técnicas
e heurísticas para as estratégias de controle e ajuste.
O submódulo executor de adaptação deve também cuidar de monitorar os
parâmetros dinâmicos do contexto de exibição, avaliando (ou reavaliando) as
regras de exibição e as alternativas de objetos de execução, para que os resultados
dessas avaliações sejam refletidas no plano de execução.
Apesar da maioria das interações do orquestrador de apresentação com a
gerência de contexto (proxy de informações contextuais) ser feita por intermédio
do adaptador, algumas ações no controle da apresentação podem exigir uma
comunicação direta entre esses elementos (seta 5, na figura), sem que seja
Formatadores e Ferramentas de Exibição Hipermídia
66
necessário ser envolvido o aspecto de adaptação. Um exemplo é a consulta, por
parte do orquestrador de apresentação, às ferramentas de exibição disponíveis na
plataforma para que possa ser iniciada a apresentação do conteúdo de um objeto.
Os mecanismos de pré-busca também podem fazer uso das informações de
contexto, independentemente do módulo de adaptação, conforme será detalhado
na Seção 4.1.
Outra função que deve ser desempenhada na fase de execução é o
escalonamento das ações de busca definidas no plano de pré-busca. Essa tarefa é
responsabilidade do executor de pré-busca, que deve também, assim como o
executor de apresentação, monitorar os tempos efetivamente gastos e compará-los
com as previsões de tempo realizadas. Quando necessário, os devidos ajustes no
plano, para garantir a sincronização da apresentação, devem ser efetuados. Se não
for possível adaptar o plano de pré-busca, o orquestrador de pré-busca deve
notificar o orquestrador de apresentação, para que as correções sejam feitas
diretamente no plano de execução (seta 10). Da mesma forma, o executor de prébusca deve estar atento a qualquer mudança no plano de execução que possa
implicar em novos cálculos dos tempos de pré-busca.
É comum que a exibição dos objetos de execução, principalmente os
baseados em mídias contínuas, exija uma alocação dos recursos da plataforma,
tais como banda passante na rede, banda passante no acesso a disco, percentual de
utilização da CPU etc. O papel do módulo gerenciador da orquestração intramídia (ou simplesmente gerenciador intra-mídia) no formatador é o de reunir as
funções de negociação e monitoramento da qualidade de serviço junto aos
provedores de comunicação e processamento (tipicamente rede e sistema
operacional), para tentar garantir a busca e exibição dos conteúdos dentro dos
limites estipulados pelo autor e aceitáveis pelo usuário (seta 11). Contudo, a
presença desse módulo só é útil quando os provedores oferecerem suporte à
reserva de recursos, que pode ser tanto imediata (Braden et al., 1997; Coulson &
Blair, 1995), como antecipada (Berson et al., 1998; Degermark et al., 1995; Wolf
et al., 1995).
A seta 12, na Figura 16, ilustra a interação do gerenciador da orquestração
intra-mídia com os planos de pré-busca e execução e com os orquestradores de
pré-busca e de apresentação. O gerenciador deve consultar os planos para decidir
Formatadores e Ferramentas de Exibição Hipermídia
67
os momentos de iniciar, para cada objeto, o processo de negociação da reserva dos
recursos junto aos provedores, e monitorar o comportamento dos provedores para
receber, caso ocorra, a sinalização de violações em parâmetros da QoS acordada.
Quando não for possível manter essa qualidade para um determinado objeto de
execução, a notificação de violação deve ser sinalizada para o orquestrador de prébusca (ou diretamente para o orquestrador de apresentação) para que, idealmente,
o problema seja corrigido através de ajustes nos planos.
Com exceção do orquestrador de apresentação, do plano de execução e da
gerência de contexto (por mais simples que ela seja), todos os demais
componentes são opcionais em um formatador. Obviamente, a presença dos
módulos opcionais traz um melhor suporte ao controle das apresentações,
proporcionando uma qualidade mais apurada nos documentos exibidos.
Complementando as tarefas de formatação no ambiente de execução, estão
as ferramentas de exibição. As ferramentas são os elementos responsáveis por
lidar diretamente com a apresentação dos conteúdos dos objetos de execução.
Sendo assim, são elas que terão a função de exercer o controle sobre as máquinas
de estados dos eventos, cuidando de gerar as transições para que os elos do
documento possam ser avaliados e o plano de execução monitorado.
A próxima seção apresenta uma proposta de diagrama de classes para o
desenvolvimento de formatadores hipermídia, seguindo a estrutura descrita nesta
seção. As questões relacionadas ao projeto de ferramentas e à integração delas
com o formatador são tratadas na seção subseqüente.
3.2
Diagrama de classes genérico
formatadores hipermídia
para
o
desenvolvimento
de
A entidade principal para o desenvolvimento de um formatador hipermídia é
a classe Formatter, apresentada na Figura 17. Como pode ser percebido, um
objeto dessa classe possui, obrigatoriamente, um compilador (classe Compiler) e
um executor (classe Executor), correspondendo respectivamente aos submódulos
compilador e executor do orquestrador de apresentação. Além disso, o formatador
também mantém um plano de execução (classe ExecutionPlan) e um gerente (ou
proxy de gerência) de contexto (classe ContextManager). O formatador possui
Formatadores e Ferramentas de Exibição Hipermídia
68
ainda, opcionalmente, um adaptador de documentos (classe DocumentAdapter),
um orquestrador de prefetch (classe Prefetcher) e um gerenciador da orquestração
intra-mídia (classe IntraMediaManager), não havendo impacto no funcionamento
se qualquer um desses componentes não estiver presente. Por fim, para cada
modelo de documentos que o formatador souber tratar, diferente do modelo de
execução, deve haver uma implementação de conversor de modelo (classe
ModelConverter).
O formatador atua, ao mesmo tempo, como uma interface para os elementos
externos ao ambiente de execução (qualquer aplicação que queira fazer uso dos
serviços de formatação hipermídia) e como um mediador para os elementos
internos ao ambiente de execução. Essa última característica permite que os
módulos se comuniquem através de chamadas ao formatador. No entanto, como
certos elementos devem manter uma interação maior, alguns relacionamentos são
estabelecidos também entre as classes internas ao formatador, como são os casos
dos relacionamentos entre o compilador e o executor com o plano de execução.
IntraM ediaM anager
M odelConverter
0..*
0..1
P refetc her
0 ..1
Docum entA dapter
1
Compil er
1
1
1
0..1
1
Form atter
1
b uilds
q uery ing
1
1
1
1
Context Man ager
1
E x ec utionP lan
mainTi meCha in
1
queries
1
s c heduling
c ontrolling
E x ec utor
1
a ux il iaryTim eChains
1
1
1
0..*
1
Ti meChain
P res entationToolM anager
1
1. .*
P res e ntat io nTool
1
Lay outM anager
s patially pres ented b y
Figura 17 – Diagrama de classes para o desenvolvimento de formatadores9.
9
Nos relacionamentos do diagrama, onde não foi colocada a multiplicidade, é porque ela é igual a
um.
Formatadores e Ferramentas de Exibição Hipermídia
69
O plano de execução é, na verdade, composto por uma cadeia temporal
principal (atributo mainTimeChain), que guarda as transições de eventos relativas
ao início da apresentação do documento, e um conjunto de cadeias temporais
auxiliares (atributo auxiliaryTimeChains), que são iniciadas por ocorrências
imprevisíveis, mas que uma vez iniciadas geram uma seqüência de transições
previsíveis. As cadeia temporais são todas modeladas pela classe TimeChain.
O executor mantém com o gerenciador de contexto uma relação direta de
consulta às informações, principalmente da plataforma. As informações
provenientes do contexto são úteis principalmente para os dois componentes do
executor destacados na Figura 17: gerenciador de layout (classe LayoutManager)
e gerenciador de ferramentas (classe PresentationToolManager).
O gerenciador de layout é responsável por mapear as janelas e regiões
definidas no documento, em componentes gráficos disponíveis na plataforma onde
o documento é exibido. É o gerenciador de layout que deve manter a instância da
classe Layout (Figura 6), controlando, inclusive, a criação da janela de exibição
default do formatador. A partir das janelas e regiões criadas, o gerenciador de
layout controla as características espaciais das ferramentas de exibição e, por
conseqüência, dos objetos de execução. É também esse gerenciador o elemento
responsável por manter a relação entre os dispositivos de saída da plataforma e os
objetos de execução.
O gerenciador de ferramentas deve possuir uma lista das ferramentas de
exibição disponíveis na plataforma e controlar suas instanciações, utilizando as
informações provenientes dos conteúdos e descritores dos objetos de execução.
Uma vez instanciadas, as ferramentas passam a interagir diretamente com o
submódulo executor do formatador.
Por lidarem diretamente com a informação apresentada ao usuário, as
ferramentas de exibição são componentes fundamentais no ambiente de execução.
Mais importante ainda é a interface de comunicação entre essas ferramentas e o
formatador hipermídia, pois a avaliação dos relacionamentos (elos) e execução das
ações depende dessa troca de mensagens. Dessa forma, a próxima seção discute as
questões referentes ao projeto e integração de ferramentas de exibição em
ambientes de execução hipermídia.
Formatadores e Ferramentas de Exibição Hipermídia
70
3.3
Integração entre ferramentas de exibição e formatadores hipermídia
As ferramentas de exibição são responsáveis pela apresentação de cada um
dos objetos de execução que compõem o documento. Sendo assim, qualquer
ferramenta precisa entender ao menos algumas das entidades definidas no modelo
de execução. Mais especificamente, as ferramentas devem saber como interpretar
as informações contidas nos objetos de dados, nos eventos que devem ser por ela
monitorados e nos descritores.
A principal informação contida no objeto de dados (Seção 2.3.1.1) que a
ferramenta deve saber tratar é o conteúdo do nó hipermídia. Na realidade, esse
entendimento passa por uma cooperação com o gerenciador de ferramentas do
formatador, que, teoricamente, só irá lhe entregar objetos cujo conteúdo possam
ser decodificados e exibidos.
Juntamente com o conteúdo, os eventos são elementos que também
precisam ser muito bem compreendidos pela ferramenta. Para os eventos baseados
em âncora, a ferramenta deve identificar a sua porção no conteúdo e controlar
diretamente as suas máquinas de estados. De modo similar, os eventos baseados
em atributos devem resultar no monitoramento dos valores dos atributos e também
no controle de suas máquinas de estados. As ferramentas precisam também
conhecer a semântica das classes de eventos definidas no formatador (exibição,
seleção, arraste etc.) para tratar as ocorrências quando as mídias são efetivamente
apresentadas.
Diferente dos objetos de dados e dos eventos, nem todas as informações
contidas nos descritores precisam ser compreendidas pela ferramenta de exibição.
A responsabilidade da interpretação da parte espacial definida na região e na
janela pode ser dividida com o gerenciador de layout, cabendo à ferramenta
utilizar o identificador da região para requisitar serviços de exibição ao
gerenciador. Nesse relacionamento, é também importante que a ferramenta
consiga monitorar os valores de certos atributos espaciais para que consiga
controlar a máquina de estados dos eventos de atribuição.
Os parâmetros de qualidade de serviço definidos nos descritores também
não precisam ser entendidos pela ferramenta, mas sim pelas estratégias de prébusca, de adaptação e pelo orquestrador intra-mídia. Evidentemente, em
Formatadores e Ferramentas de Exibição Hipermídia
71
implementações que integrem o orquestrador à ferramenta, indiretamente os
parâmetros de QoS terminarão por ser compreendidos também pela própria
ferramenta.
Outro atributo do descritor que não necessita de ser tratado pela ferramenta é
a regra de exibição. O tratamento das regras deve ser feito pelo mecanismo de
adaptação do documento, antes que a ferramenta seja acionada para exibir o objeto
de execução.
Restam como dados do descritor a serem interpretados exclusivamente pelas
ferramentas, os atributos específicos de cada conteúdo, tais como folha de estilo
principalmente em objetos do tipo texto, altura do volume para áudio e vídeo etc.
É fundamental em um ambiente de execução hipermídia que as ferramentas
estejam bem integradas ao formatador, para não somente exibir objetos de
diferentes tipos de mídia, mas também oferecer o suporte para que os
relacionamentos de sincronização especificados pelo autor do hiperdocumento
sejam obedecidos.
Conforme já comentado e ilustrado na Figura 1 e na Figura 16, uma maneira
modular de desenvolver o ambiente de execução é separar o formatador das
ferramentas. Dessa maneira, as ferramentas podem se tornar isoladas da
complexidade das funcionalidades de formatação comentadas nas duas seções
anteriores (compilação, escalonamento da execução, adaptação, pré-busca,
negociação e manutenção de QoS etc.) e concentrar seus esforços na
decodificação e exibição do conteúdo e no controle das máquinas de estados dos
eventos. Mais ainda, através de uma interface bem especificada e padronizada
para troca de mensagens entre as ferramentas e o formatador, é possível alcançar
uma independência para os projetistas desses elementos, ao mesmo tempo
garantindo uma interoperabilidade. Essa separação permite reusar implementações
de ferramentas em diferentes sistemas hipermídia e até mesmo integrar
ferramentas de implementadores distintos em um mesmo ambiente de execução.
Outro benefício dessa separação é o oferecimento de um suporte para a
implementação de relacionamentos de sincronização temporal e espacial, entre
objetos exibidos em diferentes ferramentas de exibição.
Apesar da uniformização da interface trazer os benefícios comentados no
parágrafo anterior, a proposta de integração obriga que as ferramentas conheçam o
Formatadores e Ferramentas de Exibição Hipermídia
72
modelo de execução utilizado pelo formatador. No entanto, existe uma variedade
de exibidores de mídia com interfaces e modelos próprios, tais como os exibidores
JMF (Sun, 1999), exibidores QuickTime10, exibidores da RealNetworks11 etc., que
não seguem o padrão de funcionamento esperado pelo formatador, mas que são
interessantes de serem integrados ao ambiente de execução. Para esses casos, se
for possível, a alternativa é desenvolver, como parte da ferramenta de exibição,
um módulo capaz de efetuar a ponte entre as duas interfaces, conforme ilustrado
na Figura 18.
Ferramenta de
Exibição
Interface particular
do exibidor
Formatador
Exibidor não conforme
Adaptador
Interface padrão
para troca de mensagens
Ferramenta de Exibição
Figura 18 – Interface para integração de ferramentas de exibição e formatadores,
prevendo a utilização de adaptadores para integração com exibidores cuja interface
difere da esperada pelo formatador.
A próxima subseção define, de maneira mais detalhada, a interface para
integração das ferramentas de exibição a formatadores hipermídia. A interface
proposta permite não apenas que ferramentas diversas interajam com o
formatador, como também cooperem entre si na apresentação de um
hiperdocumento.
10
http://www.apple.com/quicktime/
11
http://www.realnetworks.com/
Formatadores e Ferramentas de Exibição Hipermídia
73
3.3.1
Interface entre formatadores e ferramentas de exibição
De um modo geral, a interface entre ferramentas de exibição e formatadores
deve padronizar a maneira como as ferramentas notificam o formatador de certas
ocorrências durante a apresentação dos objetos, como por exemplo, que a exibição
de uma determinada região do conteúdo (âncora) de um objeto se encerrou, que
uma âncora foi selecionada pelo usuário, que a posição do objeto na tela se
modificou etc.
Baseando-se no modelo de execução proposto na Seção 2.3, o envio de
mensagens das ferramentas para o formatador é feito pelo próprio controle da
máquina de estados dos eventos. Sempre que a ferramenta modifica o estado de
um evento, todos os elementos que estiverem registrados como observadores do
evento serão notificados. Cabe ao executor do orquestrador de apresentação
registrar-se como observador dos eventos (implementar a interface EventListener
– Seção 2.3.1.3) e, eventualmente, ao compilador do orquestrador de apresentação
colocar também as condições de transição como observadores dos eventos.
No sentido inverso, isto é, do formatador para as ferramentas, a interface
deve especificar como solicitar que as ações sejam executadas sobre os eventos
não interativos, tais como, iniciar a exibição de um conteúdo, suspender a
exibição, alterar o valor do atributo taxa de apresentação, modificar o valor do
atributo volume do som etc. Essas ações irão por sua vez refletir em novas
transições nas máquinas de estados dos eventos.
Toda ferramenta de exibição deve ser projetada como uma subclasse de
PresentationTool (Figura 6 e Figura 17) e implementar os métodos definidos na
interface dessa superclasse. Esses métodos permitem justamente requisitar a
execução das ações sobre os eventos controlados pela ferramenta. A idéia é que
toda vez que uma ação de um elo causal tiver que ser executada, a requisição seja
feita à ferramenta de exibição, para que a ferramenta implemente a semântica
associada ao evento e gere a transição na sua máquina de estados. A Tabela 4
descreve a interface genérica que deve ser oferecida por toda ferramenta de
exibição.
Formatadores e Ferramentas de Exibição Hipermídia
Método
74
Dados de Entrada
Descrição
initialize
Objeto de execução
Coloca o objeto de execução, sob o controle da ferramenta e inicia
as estruturas de dados, principalmente as máquinas de estados
correspondentes aos eventos do objeto.
addExecutionObject
Objeto de execução
Coloca mais um objeto de execução sob o controle da ferramenta.
removeExecutionObject
Objeto de execução
Remove um objeto de execução do controle da ferramenta.
prepare
Objeto de execução,
evento
Inicia a preparação do evento passado como argumento. Esse
método pode gerar também a preparação de todos os eventos que
estejam relacionados com o evento passado como parâmetro.
unprepare
Objeto de execução
Coloca todos os eventos do objeto de execução no estado
dormindo. Se algum evento estiver ocorrendo, sua ocorrência deve
ser antes abortada.
start
Objeto de execução,
evento não
interativo
Inicia a ocorrência do evento passado como parâmetro. O evento
deve pertencer ao objeto de execução também passado como
parâmetro. Se o evento não estiver preparado, a preparação deve
ser automaticamente iniciada. Se o evento estiver sendo
preparado, a ocorrência deve ser iniciada logo em seguida. Se o
evento estiver em qualquer outro estado diferente de dormindo,
preparando e preparado, a ação deve ser ignorada.
stop
Objeto de execução,
evento não
instantâneo
Encerra a ocorrência do evento passado como parâmetro. O
evento deve pertencer ao objeto de execução também passado
como parâmetro. Se o evento estiver em qualquer estado diferente
de ocorrendo e suspenso, a ação deve ser ignorada. Se o evento
for nulo a ação deve ser aplicada a todos os eventos não
instantâneos do objeto de execução.
pause
Objeto de execução,
evento não
instantâneo
Suspende a ocorrência do evento não instantâneo. O evento deve
pertencer ao objeto de execução passado como parâmetro. Se o
evento estiver em qualquer estado diferente de ocorrendo, a ação
deve ser ignorada. Se o evento for nulo a ação deve ser aplicada a
todos os eventos não instantâneos do objeto de execução.
resume
Objeto de execução,
evento não
instantâneo
Retoma a ocorrência do evento não instantâneo. O evento deve
pertencer ao objeto de execução passado como parâmetro. Se o
evento estiver em qualquer estado diferente de suspenso, a ação
deve ser ignorada. Se o evento for nulo a ação deve ser aplicada a
todos os eventos não instantâneos do objeto de execução.
abort
Objeto de execução,
evento não
instantâneo
Aborta a ocorrência do evento não instantâneo. O evento deve
pertencer ao objeto de execução passado como parâmetro. Se o
evento estiver em estado diferente de ocorrendo e suspenso, a
ação deve ser ignorada. Se o evento for nulo a ação deve ser
aplicada a todos os eventos não instantâneos do obj de execução.
changeEventState
Objeto de execução,
evento, novo estado
Se possível, coloca o evento no novo estado passado como
argumento. O evento deve pertencer ao objeto de execução
também passado como parâmetro12.
setAttributeValue
Objeto de execução,
evento de
atribuição, valor,
atribuição relativa
Atribui o valor ao atributo identificado pelo evento de atribuição.
O evento deve pertencer ao objeto de execução passado como
parâmetro. O parâmetro atribuição relativa informa se o valor
deve ser atribuído de maneira absoluta ou relativa.
getAttributeValue
Objeto de execução,
evento de atribuição
Retorna o valor do atributo identificado pelo evento de atribuição.
O evento deve pertencer ao objeto de execução.
setTimeControlVisible
Objeto de execução,
booleano
Habilita ou desabilita uma barra para controle temporal da
exibição do objeto de execução.
Tabela 4 – Interface que deve ser oferecida por toda ferramenta de exibição.
12
Esse método objetiva permitir que as ferramentas lidem com extensões das máquinas de estados
dos eventos, sem que seja obrigatória a criação de novos métodos na interface.
Formatadores e Ferramentas de Exibição Hipermídia
75
O método initialize recebe, como parâmetro, o objeto de execução a ser
exibido (objeto de dados, descritor e eventos). Cabe à ferramenta extrair dos
eventos os atributos e as regiões correspondentes no conteúdo do objeto (as
âncoras), para efetuar o controle das respectivas máquinas de estados. A interface
permite que uma mesma ferramenta controle a exibição de mais de um objeto de
execução. Por esse motivo todos os métodos esperam um parâmetro que identifica
o objeto de execução na ferramenta. Novos objetos são incluídos ou retirados de
uma
ferramenta
com
chamadas,
respectivamente,
aos
métodos
addExecutionObject e removeExecutionObject.
Os métodos prepare e unprepare atuam na preparação dos eventos.
Normalmente, o método prepare será chamado com o evento de apresentação que
identifica o conteúdo inteiro do objeto de execução. Geralmente, a preparação do
evento mais abrangente resultará também na preparação dos demais eventos do
objeto. A preparação dos eventos de exibição envolve a busca das unidades de
informação do conteúdo (ao menos parcialmente) e seu armazenamento em um
buffer da ferramenta. O método unprepare permite requisitar a liberação desses
espaços alocados quando não houver mais interesse por parte do formatador em
manter os eventos preparados.
O método start inicia a ocorrência do evento não interativo passado como
parâmetro. Normalmente, esse evento será o evento de exibição anteriormente
preparado. Quando for realizada uma chamada para o método start de um evento
que esteja ainda sendo preparado (encontrar-se no estado preparando), a
ferramenta deve aguardar o término da preparação e iniciar a ocorrência do evento
logo em seguida.
Os métodos stop, pause, resume e abort recebem, todos, um objeto de
execução e um evento não instantâneo como parâmetros e devem ser aplicados
conforme as descrições dadas na terceira coluna da Tabela 4. Todos esses métodos
podem também ser chamados recebendo apenas um objeto de execução como
argumento. Nesse caso, as ações desempenhadas devem ser feitas sobre todos os
eventos não instantâneos do objeto de execução que estiverem no estado
adequado.
Os métodos setAttributeValue e getAttributeValue permitem que o
formatador interaja com as ferramentas de exibição, modificando e consultando os
Formatadores e Ferramentas de Exibição Hipermídia
76
valores dos atributos dos eventos e dos objetos de execução. Supondo que a
ferramenta controle a apresentação de uma mídia contínua, uma importante
utilidade do método setAttributeValue é permitir que o formatador aumente ou
diminua a taxa de apresentação do conteúdo, para tentar garantir que as relações
de restrição especificadas pelo autor sejam respeitadas.
O método changeState na interface procura oferecer flexibilidade para que
novas máquinas de estados sejam definidas sem que isso cause impacto na
estrutura proposta. A interface também não restringe as classes dos eventos,
possibilitando
que
novas
extensões
sejam
definidas.
Obviamente,
a
implementação da ferramenta que for efetivamente controlar a exibição do objeto,
dos novos tipos de eventos e das novas máquinas de estados deverá conhecer os
detalhes das extensões.
O método setTimeControlVisible é útil para a apresentação de objetos de
execução, cujos eventos de exibição associados tenham durações bem definidas.
Isso será mais comum para os objetos associados a vídeos e áudios. O método
espera um valor booleano, que quando verdade, exibe um componente de interface
gráfica para o controle temporal da apresentação. Normalmente, esse controle irá
possuir botões e barras de progressão que permitem realizar ações sobre a
exibição do objeto, tais como iniciar, encerrar, suspender, reassumir, modificar o
ponto da exibição etc.
Antes de discorrer sobre os aspectos da implementação de ferramentas de
exibição e de um exemplo de formatador hipermídia que segue a estruturação
apresentada neste capítulo, o próximo capítulo discute os aspectos relacionados às
funcionalidades essenciais para que se busque apresentações de hiperdocumentos
com qualidade.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
77
4
Pré-busca, Orquestração Intra-Mídia e Adaptação de
Apresentações Hipermídia
Este capítulo analisa os requisitos para o projeto e implementação de
mecanismos de pré-busca, orquestração de qualidade de serviço e adaptação das
apresentações em formatadores hipermídia. Apesar desses mecanismos não serem
essenciais, a presença deles no ambiente de execução contribui para uma maior
proximidade entre os resultados finais das apresentações e as especificações dos
autores.
Para cada mecanismo, a partir do levantamento de seus requisitos, o capítulo
propõe uma arquitetura genérica que possa ser reusada no desenvolvimento de
formatadores específicos. Adicionalmente, com a especificação de interfaces bem
definidas para as estruturas genéricas, pretende-se facilitar a integração de
módulos de pré-busca, orquestração e adaptação com outros componentes dos
sistemas de apresentação hipermídia, inclusive permitindo que as estratégias
desses mecanismos venham a ser incorporadas em implementações de
formatadores já existentes.
4.1
Pré-busca em apresentações hipermídia
Para que o usuário perceba uma boa qualidade em uma apresentação
hipermídia, diversos parâmetros precisam ser controlados pelo formatador. Dentre
os parâmetros temporais destacam-se: a latência para exibição dos objetos e a taxa
para apresentação dos objetos de mídia contínua. A latência de exibição
corresponde ao intervalo de tempo entre o instante em que o conteúdo de um
objeto de execução deve ser exibido e o instante em que o mesmo é efetivamente
apresentado13. Efeitos desagradáveis que podem ser percebidos pelo usuário
13
Note que o termo latência no contexto desta tese não se refere exclusivamente ao retardo de
transferência na rede, mas pode englobar também atrasos no sistema operacional e na própria
ferramenta de exibição.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
78
quando ocorre uma latência elevada são a perda da interatividade e a perda da
sincronização entre os objetos de execução, sem falar na própria impaciência
causada pela espera.
As taxas de apresentação são características dos objetos de mídia contínua,
tais como vídeo e áudio. Essas taxas normalmente envolvem uma quantidade de
amostras por segundo e uma resolução para cada uma das amostras. Quando
métodos de compressão são aplicados em conteúdos desse tipo, as taxas de busca
podem variar ao longo do tempo. No entanto, para as ferramentas de exibição, as
taxas de apresentação devem se manter em níveis constantes, pois variações
podem resultar em desconforto, ou mesmo na total incompreensão da informação.
O limite máximo para a latência de exibição de um objeto varia em função
do tipo de seu conteúdo (texto, imagem, áudio, vídeo etc.) e do tipo de aplicação
hipermídia onde o objeto se encontra inserido (aplicação não interativa, aplicação
interativa etc.). Na Web, por exemplo, algumas pesquisas constatam que uma
espera de até cinco segundos para carregar uma nova página no browser é tida
pelos usuários como satisfatória (Bhatti et al., 2000). No entanto, em aplicações
que requeiram transmissão de voz, esse limite pode ter de ser reduzido para cerca
de 150 milisegundos (ITU, 1996). O limite máximo para a latência de exibição vai
depender também dos relacionamentos existentes com outros objetos (elos de
sincronização, elos de restrição etc.). Flutuações na taxa de exibição (jitter) afetam
apenas as mídias contínuas e devem ser sempre evitadas.
Técnicas de cache têm sido amplamente utilizadas nas mais diversas áreas
da computação com o intuito de reduzir o tempo de resposta dos sistemas. Os
mecanismos de cache procuram posicionar os dados em uma memória que ofereça
ao sistema um tempo de acesso mais baixo que o experimentado quando os dados
são trazidos de seu local original de armazenamento. A eficiência de um
mecanismo de cache está diretamente relacionada à freqüência com que os dados
são encontrados na memória cache, quando requisitados pelo sistema (cache hit).
Áreas na memória cache (principalmente em RAM), funcionando como buffers,
também podem ser úteis no auxílio a estratégias de compensação das variações
estatísticas dos retardos, permitindo corrigir variações bruscas nas taxas de
fornecimento dos dados.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
79
Embora o uso da memória cache possibilite uma redução nos tempos de
resposta do sistema, estudos mostram que as técnicas de cache em sistemas
hipermídia, principalmente na Web, apresentam eficiência bem inferior (30-60%)
à obtida com as técnicas de cache em hardware (90%) (Cohen & Kaplan, 2000;
Feldmann et al., 1999; Khan & Tao, 2001a; Kroeger et al., 1997). Além dos vários
aspectos relacionados às técnicas de geração de páginas dinâmicas que
influenciam numa menor eficiência dos mecanismos de cache, existe também uma
quantidade grande de dados que são requisitados pelo ambiente de execução uma
única vez. A eficiência baixa, somada ao fato das apresentações hipermídia muitas
vezes necessitarem que os objetos possuam uma latência de exibição baixa,
mesmo na primeira vez em que são exibidos, e à questão dos próprios buffers para
compensação da variação estatística causarem um atraso adicional na exibição dos
objetos de mídia contínua, faz com que seja importante a existência de estratégias
de pré-busca (prefetch) nos formatadores.
A principal responsabilidade do mecanismo de pré-busca é procurar garantir
que o conteúdo de cada objeto (não necessariamente o objeto inteiro) esteja pronto
para a ferramenta de exibição no momento em que a mesma precise exibi-lo,
fazendo com que as latências de apresentação durante a execução dos documentos
encontrem-se dentro dos limites aceitáveis. Como conseqüência da antecipação,
para o caso de objetos de mídia contínua, o mecanismo de pré-busca também
possibilita que durante a exibição não haja uma ausência de dados (buffer
underflow) para serem consumidos pelas ferramentas de exibição.
O ponto de partida para o compilador de pré-busca é percorrer a cadeia
temporal principal no plano de execução e estimar o tempo despendido na
preparação de cada um dos objetos de execução. Para que os tempos estimados se
aproximem da realidade, é necessário que o compilador de pré-busca obtenha
informações a respeito dos objetos de execução. O compilador de pré-busca deve
consultar o conteúdo de cada objeto para tentar descobrir o seu tamanho (ou
duração). Além do tamanho, o compilador deve tentar encontrar no descritor de
cada objeto o percentual mínimo do conteúdo total que precisa estar disponível
antes do início da apresentação e a latência máxima permitida para a exibição do
objeto.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
80
Além das informações provenientes dos objetos de execução, o compilador
de pré-busca também precisa dispor de pelo menos três informações adicionais do
contexto de exibição, para estimar os tempos de busca. A primeira é o retardo de
propagação dos dados do local em que estão armazenados até o buffer da
ferramenta14, a segunda informação é a taxa de transmissão disponível para
transferência dos dados15 e, por fim, a terceira informação é o próprio retardo
imposto pela ferramenta de exibição para sua criação e iniciação, que muitas vezes
não deve ser desprezado. Para as informações que não estiverem disponíveis nos
objetos ou no contexto de exibição, o compilador deve utilizar heurísticas para a
elas atribuir valores. A Figura 19 apresenta a fórmula geral para o cálculo do
tempo de preparação de um objeto de execução.
T :
pc:
L :
r :
tx:
f :
tamanho do objeto (em bits)
percentual (entre 0 e 1) do tamanho total que deve estar disponível
latência máxima para exibição do objeto (em segundos)
retardo de propagação imposto pela plataforma (em segundos)
taxa de transmissão (em bits por segundo)
retardo imposto pela ferramenta (em segundos)
Tempo de preparação (s) = ((T * pc) / tx) + r + f - L
Figura 19 – Fórmula geral para o cálculo do tempo de preparação de um objeto de
execução.
Além de calcular os tempos de preparação para cada um dos objetos de
execução, a outra função do compilador de pré-busca é determinar a ordem das
preparações, para com isso realizar a construção efetiva do plano de pré-busca.
Esse procedimento deve ser feito com o uso de alguma estratégia de compilação
de pré-busca. Na realidade, é a própria estratégia que deve coordenar o cálculo das
estimativas de duração das preparações, estabelecendo inclusive as heurísticas
para determinar os valores para os parâmetros citados anteriormente que
eventualmente não estejam disponíveis.
Alguns aspectos importantes devem ser considerados na construção do
plano de pré-busca, pois é importante que haja um planejamento na escolha dos
Esse retardo pode englobar o próprio tempo para requisitar o objeto, tempo de seek no acesso a
disco etc.
14
15
Note que a taxa de transmissão na pré-busca não precisa ter qualquer relação com a taxa de
exibição do conteúdo.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
81
tempos e na ordenação das requisições de pré-busca. Duas situações podem
ocorrer se os instantes para iniciar a busca dos conteúdos não forem bem
escolhidos (Jeong et al., 1997; Oren, 2000): a busca pode ser iniciada tardiamente
e o objeto não estar preparado na hora da sua exibição; ou a busca pode iniciar
cedo demais e o objeto ter de permanecer armazenado na memória cache durante
muito tempo. No primeiro caso, pode ser introduzida uma latência maior que a
permitida na exibição. Se houver pelo menos um relacionamento de sincronização
temporal com paralelismo entre o objeto cuja preparação atrasou e um outro
qualquer, pode ser que a sincronização seja perdida ou então que seja necessário
retardar a exibição também do outro objeto. A antecedência exagerada na busca
pode trazer duas conseqüências desfavoráveis. O objeto pode ter de ser descartado
pela política de cache, gerando uma pré-busca inútil, ou pode obrigar que um
outro objeto em uso, ou necessário em um futuro próximo, seja descartado,
causando uma poluição na cache. A primeira situação (início tardio da busca)
pode ser amenizada impondo um retardo maior para iniciar a exibição do
documento como um todo. Isso aumenta o tempo de compilação e o tamanho
necessário para a memória cache. A segunda situação pode ser evitada por meio
de um controle mais apurado da alocação dos recursos na plataforma ou
simplesmente incrementando o tamanho da memória cache.
Essas questões acrescentam dois parâmetros que devem ser considerados
pelo compilador de pré-busca. O primeiro é o espaço disponível em memória
(espaço na cache) para trazer os conteúdos dos objetos com antecedência. O
segundo é a latência que será introduzida para iniciar a exibição do documento
como um todo. O primeiro parâmetro é uma informação que deve ser obtida do
gerente de contexto, pois está relacionado com a plataforma de exibição. Já o
segundo parâmetro pode ser definido pela própria estratégia, ou estipulado pelo
usuário do mecanismo de pré-busca.
Uma estratégia simples de compilação da pré-busca pode subtrair do
instante esperado para exibição de cada objeto, o tempo estimado para sua
preparação. Essa solução deve, no entanto, considerar as divisões da banda
quando mais de um objeto tiver que ser buscado paralelamente, evitando causar
tempos de preparação maiores que os previstos e, por conseqüência, latências
inaceitáveis.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
82
Para que a estratégia não precise se preocupar com divisões da banda
passante disponível, a alternativa é serializar as buscas. Nesse caso, os objetos
devem ser primeiramente ordenados em função dos instantes esperados para suas
exibições. Os objetos que devem ser apresentados primeiro, devem ser preparados
na frente. Quando mais de um objeto tiver que iniciar sua exibição ao mesmo
tempo, o melhor é que os objetos com tempos de preparação maiores sejam
deixados para depois (Jeong et al., 1997).
Além de serializar as buscas, o ideal é que a estratégia de compilação
identifique, após o plano estabelecido, quais os objetos na cadeia temporal
principal estão com uma latência de exibição ultrapassando o valor máximo
permitido. Todas as violações devem ser somadas e o resultado utilizado para
impor um retardo ao início da exibição do documento. Evidentemente, a estratégia
deve observar se esse atraso inicial respeita a exigência de retardo do usuário e a
capacidade da memória cache. Caso isso não seja possível, existem duas opções.
A primeira é simplesmente iniciar a apresentação do documento respeitando as
características do usuário e da plataforma e deixar para ajustar a apresentação
durante a sua execução. A segunda opção é requisitar, ainda em compilação, os
serviços do módulo de adaptação, para que o plano de execução do documento
seja ajustado. No entanto, é importante que a estratégia considere que os próprios
cálculos e ajustes do plano consomem o tempo da compilação.
Um outro aspecto que a estratégia de compilação da pré-busca deve levar
em conta é a escolha do momento para iniciar a preparação dos objetos contidos
em cadeias temporais auxiliares, pois é importante que, mesmo para os objetos
com exibições imprevisíveis, sempre que possível a latência seja minimizada,
como demonstram estudos anteriormente mencionados (Bhatti et al., 2000; Khan
& Tao, 2001a). O ideal é que a estratégia consiga obter, ou diretamente do plano
de execução, ou junto ao contexto de exibição, a probabilidade para que cada uma
das cadeias auxiliares tenha sua execução iniciada. De posse das probabilidades e
dos tempos estimados para preparação, o orquestrador de pré-busca pode ponderar
esses valores e, em certas ocasiões, optar por também preparar objetos com
exibições imprevisíveis de maior probabilidade.
Com o plano de pré-busca construído, o executor do orquestrador de prébusca inicia sua tarefa que consiste em consultar o plano e disparar, nos instantes
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
83
programados, notificações ao executor para requisitar junto às ferramentas de
exibição (ou seus adaptadores) o início da preparação de cada um dos objetos.
Pode ser que, ao invés do conteúdo ser buscado pela ferramenta, exista no sistema
um módulo único que coordene de maneira centralizada as buscas e o
armazenamento dos dados.
Durante a fase de execução da pré-busca, o executor deve monitorar, junto
ao plano de execução, qualquer alteração que ocorra nos instantes de tempo
previstos para iniciar a exibição dos objetos de execução, incluindo a ocorrência
de exibições inicialmente classificadas como imprevisíveis pelo compilador de
apresentação. Quando necessários, os devidos ajustes devem ser feitos pelo
executor no plano de pré-busca. Cabe ao executor também observar os tempos
efetivamente despendidos nas preparações e compará-los com os tempos
estimados, ajustando o plano de pré-busca quando for necessário. Se por acaso o
executor de pré-busca não conseguir ajustar o plano e manter as restrições de
latência impostas pelo documento, o orquestrador de pré-busca deve informar o
fato ao orquestrador de apresentação, para que as adaptações sejam aplicadas
sobre o plano de execução.
A próxima seção ilustra o framework proposto para implementação de
mecanismos de pré-busca em formatadores hipermídia.
4.1.1
Arquitetura para implementação de mecanismos de pré-busca
A Figura 20 apresenta o diagrama de classes que visa facilitar o projeto e a
implementação de mecanismos de pré-busca em apresentações hipermídia. A
classe Prefetcher representa o orquestrador de pré-busca, correspondendo à
mesma classe já comentada na Seção 3.2 (Figura 17). Essa classe funciona como a
interface (fachada) do mecanismo oferecida aos demais componentes do
formatador, ou a qualquer outro módulo que deseje utilizar os serviços de prébusca de objetos hipermídia. O compilador (PrefethCompiler), o executor
(PrefetchExecutor) e o plano de pré-busca (PrefetchPlan) constituem-se nos três
principais componentes do orquestrador de pré-busca.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
Exec uti onPlan
compiles
1
Prefetche r
c ompil ePlan()
s tartPre fet chi ng()
s topPrefetching()
p auseP refet ching()
resum eP refet ching()
a ddPrefetc hLis tener()
informTi meCha inAdded ()
informO bjectBeginni ngChanged()
1
1 informO bjectRem oved()
informA ctualObjectPrefetchDuration()
g etO bj ects()
g etO bj ectPrefe tchi ngTi me ()
PrefetchCompiler
1
compilePlan()
1
b uilds
schedules
1
queries
1
PrefetchPlan
PrefetchParameterCalc ulat or
1
getPlatformDelay()
getTransmissionRate()
getPresentationToolDelay()
queries
0..*
PrefetchObject
1
84
PrefetchList ener
reachedObjectPrefetchTime()
0.. *
ob served by
1
PrefetchExecutor
startPrefetching()
stopPrefetching()
pausePrefetching()
resumePrefetching()
addPrefetchListener()
informTimeChainAdded()
informObjectBeginningChanged()
informObjectRemoved()
informActualObjectPrefetchDuration()
1
adjusts
0..1
PrefetchAdjustmentStrategy
informTimeChainAdded()
informObjectBeginningChanged()
informObjectRemoved()
informActualObjectPrefetchDuration()
1
ContextManager
ExecutionObject
Figura 20 – Diagrama de classes para implementação de mecanismos de pré-busca em
documentos hipermídia.
A classe PrefetchCompiler é, na verdade, uma estratégia (design pattern
Strategy (Gamma et al., 1995)) que deve ser especializada em cada
implementação particular de mecanismo de pré-busca. O compilador é
responsável por efetuar a construção do plano de pré-busca a partir do plano de
execução (ExecutionPlan) e dos dados provenientes do proxy de informações
contextuais (ContextManager). Para tanto, ele deve utilizar os serviços de um
elemento calculador (PrefetchParameterCalculator) que, para um determinado
objeto de execução, informa os valores de cada um dos parâmetros da plataforma
de exibição, relevantes na estimativa das durações de preparação (Figura 19).
Implementações dessa classe de cálculo também devem prover heurísticas que
definam valores para os vários parâmetros, quando não for possível obtê-los do
gerenciador de contexto. A obtenção dos parâmetros relacionados aos objetos de
execução e o cálculo efetivo do tempo de preparação devem ser realizados pela
própria estratégia de compilação. Também cabe a essa estratégia observar se os
limites de tamanho dos buffers e da latência para iniciar a exibição estão sendo
cumpridos. Tanto o compilador (estratégia de compilação) como o calculador são
pontos de flexibilização (hotspots) do framework, que devem ser preenchidos em
função dos requisitos de formatação.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
85
O executor de pré-busca (PrefetchExecutor) reúne as ações que devem ser
desempenhadas após a construção, ao menos parcial, do plano de pré-busca.
Sendo assim, a principal função do executor é escalonar o plano e notificar os
objetos que tenham se registrado como observadores do mecanismo de pré-busca.
Esse registro é feito através de uma chamada ao método addPrefetchListener do
orquestrador, que por sua vez repassa a chamada ao executor. Na invocação do
método, o objeto observador deve ser passado como parâmetro. Para isso, classes
que desejem atuar como observadores do mecanismo devem ser do tipo
PrefetchListener e implementar o método reachedPrefetchTime com o código
para o tratamento das notificações. O método reachedPrefetchTime informa para
os seus observadores o objeto de execução que teve o seu instante de preparação
atingido.
O escalonamento do plano é iniciado com uma chamada ao método
startPrefetching do orquestrador de pré-busca, que simplesmente repassa essa
chamada para o executor. A qualquer momento, chamadas aos métodos
pausePrefetching
e
resumePrefetching
podem
ser
invocadas
para,
respectivamente, suspender ou retomar o escalonamento. Além disso, o método
stopPrefetching permite que o processo de pré-busca seja encerrado.
Além de escalonar as ações de busca e preparação dos conteúdos, é
desejável, porém não obrigatório, que o executor de pré-busca também possua
uma estratégia de ajuste (PrefetchAdjustStrategy). A função dessa estratégia é
estar atenta a modificações no plano de execução e distorções entre os tempos de
preparação previstos e os tempos efetivamente gastos, para realizar correções no
plano de pré-busca quando for necessário. A estratégia de ajuste pode ser
informada, através de uma chamada ao seu método informTimeChainAdded, que
uma cadeia temporal auxiliar foi associada à cadeia principal, como resultado da
ocorrência de um evento imprevisível ou de uma adaptação dinâmica do
formatador. Além desse tipo de modificação do plano de execução, a estratégia
também pode ser notificada da alteração no instante previsto para iniciar a
exibição de um objeto de execução, por meio de uma chamada ao método
informObjectBeginningChanged e da remoção de um objeto do plano de
execução, por intermédio de uma chamada ao método informObjectRemoved. Por
fim, o método setActualObjectPrefetchDuration permite que a estratégia de ajuste
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
86
seja avisada do tempo efetivamente gasto na preparação de um determinado objeto
de execução. Se no executor de pré-busca não estiver disponível a estratégia de
ajuste, as chamadas a esses métodos devem ser simplesmente ignoradas. Do
mesmo modo que no compilador, a estratégia de ajuste é um ponto de
flexibilização na arquitetura proposta.
Como pode ser percebido, todos os métodos oferecidos na interface do
orquestrador de pré-busca comentados até o momento terminam sempre por serem
repassados aos componentes internos do mecanismo. Isso é feito com o intuito de
evitar que usuários dos serviços de pré-busca precisem tomar conhecimento de
todas as classes internas e de seus funcionamento, podendo interagir apenas com a
classe Prefetcher.
O método getExecutionObjects, oferecido pelo orquestrador, retorna a lista
dos objetos de execução inseridos no plano de pré-busca, já ordenados pelos
respectivos instantes programados de preparação. Esses instantes podem ser
obtidos através de invocações ao método getObjectPrefetchingTime, passando o
objeto como parâmetro. Esses métodos podem ser úteis, principalmente, em
plataformas que permitam reservar recursos antecipadamente, pois evitam que o
processo de negociação da QoS para transmissão do conteúdo seja iniciado
somente no instante que o escalonador (executor) notifica que a preparação deve
ser começada. Os aspectos de negociação e manutenção da QoS nas transmissões
dos conteúdos dos objetos são comentados na próxima seção.
4.2
Orquestração intra-mídia em apresentações hipermídia
O conceito de orquestração da qualidade de serviço está relacionado com a
gerência integrada da alocação dos recursos e do escalonamento de suas
utilizações, quando os mesmos encontram-se distribuídos por mais de um
subsistema (Gomes, 1999). No controle de apresentações de documentos
hipermídia, a questão da orquestração da qualidade de serviço aparece em dois
níveis distintos: orquestração da QoS inter-mídia e orquestração da QoS intramídia.
A orquestração inter-mídia refere-se à manutenção dos relacionamentos de
sincronização, tanto causais como de restrição, sendo responsabilidade do
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
87
orquestrador de apresentação, conforme já discutido no Capítulo 3. Também de
acordo com o que já foi comentado, na tarefa de orquestração inter-mídia, os
mecanismos de adaptação e de pré-busca atuam como importantes colaboradores.
O segundo nível de orquestração de qualidade de serviço, que é justamente o
foco desta seção, é a orquestração intra-mídia. Essa orquestração está diretamente
relacionada com a tarefa de buscar e exibir cada um dos objetos de execução,
procurando fazer com que a qualidade de suas apresentações sejam mantidas. Para
que isso seja possível, recursos devem ser reservados tanto nas estações cliente
(formatador) e servidora de conteúdo, como também no provedor de comunicação
entre essas estações. Caberá ao formatador negociar a QoS necessária junto aos
provedores de comunicação e processamento, dando início ao processo de
orquestração e reserva de recursos, tais como CPU e banda passante.
No formatador, o gerenciador intra-mídia é o módulo responsável por
desempenhar esse papel de negociador. Na realidade, além de negociar a QoS para
as exibições, o orquestrador deve também procurar monitorar se os acordos
estabelecidos estão sendo respeitados, notificando os executores de apresentação e
de pré-busca, sempre que não for possível manter a exibição de um objeto com a
qualidade desejada.
Para cada conteúdo de objeto de execução a ser exibido, o gerenciador deve
solicitar que um orquestrador intra-mídia tente distribuir a reserva de recursos
desde o servidor onde o conteúdo encontra-se no momento gravado, passando
pelo provedor de comunicação, até o buffer do formatador (ou da própria
ferramenta de exibição), que servirá de memória cache para armazenar o conteúdo
localmente. Além disso, se possível, a orquestração e reserva deve também
procurar alocar recursos no sistema operacional da máquina onde executa a
ferramenta de exibição, a fim de garantir que ela terá à sua disposição a
capacidade de processamento necessária. Vale salientar que, nos casos em que a
preparação não coloca previamente em cache todo o conteúdo do objeto, a reserva
dos recursos no caminho até o local original de armazenamento das unidades de
informação deve ser mantida durante a fase de apresentação do objeto de
execução, até que todo o conteúdo do objeto seja obtido.
Note que, para completar o processo de reserva, pode ser necessário que se
faça também uma negociação de alocação de recursos no sistema operacional da
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
88
máquina servidora de conteúdo, para que o processo servidor tenha garantidos,
entre outros parâmetros, o retardo máximo e a banda passante no acesso aos dados
armazenados. Como já colocado na Seção 3.1, a presença do gerenciador intramídia no formatador está condicionada à existência de algum suporte à reserva de
recursos na rede ou nos sistemas operacionais.
A Figura 21 utiliza a proposta do Modelo de Composição de Serviços (SCM
– Service Composition Model), definido em (Colcher, 1999), para ilustrar os
componentes e provedores envolvidos na transmissão e exibição do conteúdo de
um objeto de execução em uma apresentação hipermídia.
Ferramenta
de
Exibição
Mídia
(conteúdo)
Provedores
de
Acesso
Servidor
de Conteúdo
Formatador
Provedor de infra-estrutura
Figura 21 – Visão simplificada da exibição de conteúdos de documentos hipermídia
representada através do modelo de composição de serviços16.
O SCM define dois elementos básicos: os componentes de usuário, que
correspondem às entidades que fazem uso direto dos serviços (na figura,
representados como círculos), e os provedores, que são responsáveis pela provisão
do serviço (representados como nuvens). Uma abstração especial do modelo,
denominada MediaPipe (ilustrada como cilindros), permite capturar a idéia de
uma associação entre componentes de usuário, sobre a qual especificações de QoS
podem ser definidas e gerenciadas. Para que possa ser estabelecido um MediaPipe
entre dois componentes, o provedor poderá ser formado por outros componentes
de serviço (entidades de software ou hardware que implementem o serviço). Esses
16
Para não sobrecarregar o desenho, foi ilustrada a associação apenas entre uma ferramenta e um
conteúdo de objeto.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
89
componentes, por sua vez, provavelmente utilizarão os serviços de um provedor
de nível mais baixo de abstração, formando assim uma estruturação aninhada de
provisão de serviços, que pode se repetir sucessivamente até que sejam alcançados
os recursos físicos propriamente ditos (enlace de comunicação, CPU etc.). Os
provedores do modelo podem ser classificados em provedores de infra-estrutura e
provedores de acesso. O primeiro tipo permite o estabelecimento de MediaPipes
entre componentes localizados em um mesmo nível de abstração, enquanto o
segundo tipo possibilita o estabelecimento dessas associações entre um
componente de usuário do serviço e um componente interno do provedor do
serviço. Nada impede que os componentes de usuário sejam componentes
compostos, constituídos de outros componentes de usuário e provedores
interligando esses componentes.
Na Figura 21, o formatador, ou mesmo a ferramenta, deve conter um
componente responsável por recuperar as unidades de informação do servidor de
conteúdo e armazená-las em um buffer do formatador ou direto da ferramenta.
Essa busca dos dados deve seguir uma implementação de protocolo que o servidor
de conteúdo compreenda, tais como HTTP, RTP etc.
Quando o conteúdo de um objeto de execução encontrar-se armazenado na
mesma máquina onde a ferramenta de exibição executa, o provedor de infraestrutura deixa de existir no processo de busca do conteúdo e os papéis de servidor
e formatador se fundem em um único componente, conforme ilustra a Figura 22.
Nesse caso, embora desenhados como dois provedores de acesso, existirá apenas
um provedor intermediando todas as comunicações, que será justamente o sistema
operacional da máquina.
As duas figuras anteriores retratam o caminho percorrido pelos dados no
serviço de apresentação das mídias. Atuando em um outro plano estão as
orquestrações de QoS inter-mídia e intra-mídia, procurando garantir que o serviço
de apresentação dos conteúdos encontre-se dentro dos limites desejados pelo autor
e pelo usuário. Sendo assim, a orquestração de QoS pode ser considerada como
um meta-serviço que age sobre o serviço de transmissão e exibição dos conteúdos.
Meta-serviços são modelados pelo SCM utilizando os mesmos conceitos de
componentes e provedores, em um plano separado. Através de interfaces meta nos
componentes e provedores do plano de serviços (ou plano de dados), os
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
90
componentes do plano de meta-serviços (ou plano de controle) têm condições de
manipular as entidades que implementam o serviço e suas associações
(MediaPipes). Exemplo de aplicação dos conceitos de plano de meta-serviços e
plano de serviços são encontrados, respectivamente, nas pilhas de controle e de
dados das redes ATM. Outro exemplo são os protocolos de construção de tabelas
de rotas (por exemplo: RIP, OSPF, BGP etc.) que atuam sobre o serviço de
roteamento das informações (por exemplo: IP).
Ferramenta
de
Exibição
Mídia
(conteúdo)
Provedores
de
Acesso
Formatador
Figura 22 – Exibição de conteúdos armazenados localmente, eliminando a figura do
provedor de infra-estrutura.
A Figura 23 ilustra os conceitos de serviço e meta-serviço no projeto de
ambientes de execução hipermídia, estendendo e detalhando as informações
anteriormente apresentadas na Figura 21 e na Figura 22. A figura é também uma
nova visão para a Figura 16, descrita na Seção 3.1, mas com um destaque para o
posicionamento das funções de formatação nos dois planos.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
91
Plano de Serviços
Ferramentas
de Exibição
Mídias
Escalonador de
Apresentação
Plano de
Pré-busca
Escalonador
de Pré-busca
Servidores
Plano de
Execução
Componente
de busca
Base de
Base de Documentos
SMIL
Contextos
NCM
Sistema de
Comunicação
ML
ML
Solicitador/
Conversor
Orquestrador
Intra-mídia
Adaptador
Orq. Pré-busca
Ger. Orq.
Intra-mídia
Orq.
Apresentação
PIC
Gerente de
Contexto
Neg. de Orq.
Inter-mídia
Provisão e Gerência
de QoS
Plano de Meta-Serviços
Figura 23 – Ilustração dos conceitos de serviço e meta-serviço nos ambientes de
execução hipermídia.
A Figura 23 permite rever de uma forma sistemática os procedimentos
desempenhados no controle da apresentação dos hiperdocumentos, enumerados a
seguir. Como alguns dos procedimentos podem ocorrer de maneira concorrente, a
ordem de apresentação não deve ser entendida como uma seqüência de execução.
procedimento 1:
O Solicitador busca um documento (ou parte de um
documento) e, caso seu modelo seja diferente do modelo de execução
esperado pelo formatador, entrega o documento para ser traduzido por
um conversor. Na figura, por simplificação, solicitador e conversor estão
representados em um mesmo componente. Além da tradução, o
solicitador pode também unir à descrição do documento de entrada,
especificações oriundas de outros modelos, como discutido na Figura 3.
procedimento 2:
De posse de uma especificação fiel ao modelo de
execução, contendo as especificações de QoS intrínsecas ao documento
(relacionamentos entre as mídias, parâmetros das características de
exibição de cada objeto etc.), o solicitador passa a requisição da
apresentação de um contêiner para o negociador de orquestração inter-
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
92
mídia. Além das especificações intrínsecas ao documento, restrições de
QoS podem ser impostas pelo próprio usuário leitor, se o ambiente de
navegação assim permitir. Além disso, o pedido deve também informar
o ponto de entrada no contêiner (evento de apresentação) por onde a
exibição deve ser iniciada.
procedimento 3:
O Negociador de Orquestração Inter-mídia (o análogo
de um bandwidth broker intra-mídia, só que para orquestração intermídia) tem como função dividir as responsabilidades de formatação
entre os vários módulos de orquestração (inter-mídia) de apresentação
que estiverem presentes no sistema (cliente, servidor, proxy etc.). Nessa
etapa, o negociador pode, por exemplo, aplicar transformações sobre a
especificação dos documentos, restringindo as possibilidades de
formatação para cada adaptador do sistema. Como este trabalho trata
apenas da formatação no lado cliente, essa etapa foi omitida na Seção
3.1, fazendo com que toda a responsabilidade de orquestração recaia
sempre sobre o orquestrador de apresentação no cliente.
procedimento 4:
O compilador do Orquestrador de Apresentação recebe
a descrição do documento, juntamente com as informações adicionais do
solicitador (ponto de entrada, restrições de QoS do usuário, hora prevista
para iniciar a exibição etc.), e constrói o plano de execução. Para isso, o
orquestrador consulta, com auxílio do proxy de informações contextuais
(componente PIC), os parâmetros que definem o contexto de exibição, e
requisita ao componente Adaptador que implemente os ajustes cabíveis
(normalmente, estáticos), tais como seleção de alternativas e ajuste dos
tempos elásticos. Também pode ser realizada nessa etapa a verificação
da consistência temporal e espacial do documento. Se o mecanismo de
pré-busca estiver presente no formatador, o compilador de apresentação
aciona o compilador do orquestrador de pré-busca (procedimento 5),
caso contrário, essa próxima etapa é ignorada.
procedimento 5:
Considerando a existência de um mecanismo de pré-
busca no formatador, o compilador de pré-busca aplica sua estratégia
para construir o Plano de Pré-Busca, sendo para isso consultadas as
características do Plano de Execução e do Contexto de Exibição.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
procedimento 6:
93
O controle retorna para o orquestrador de apresentação
para encerrar a fase de compilação. Se a hora prevista para iniciar a
exibição tiver sido informada pelo solicitador e mecanismos de reserva
antecipada estiverem disponíveis no formatador, o compilador de
apresentação aciona o gerenciador intra-mídia (procedimento 10),
obviamente, se existir no formatador uma implementação desse
componente. Caso a hora de início não esteja informada, o gerenciador
intra-mídia só é acionado na fase de execução do documento
(procedimento 7). De todo modo, o resultado final é a construção, por
parte do orquestrador de apresentação, das diversas cadeias temporais do
hiperdocumento e o retorno de um identificador que permite disparar a
apresentação propriamente dita a partir do ponto de entrada
originalmente informado pelo solicitador de exibição.
procedimento 7:
O controle da apresentação propriamente dita do
documento inicia sob a demanda do usuário. Isso implica iniciar a
execução do componente Gerenciador Intra-Mídia no plano de metaserviços (se isso ainda não tiver sido feito), do componente Escalonador
(ou Executor) de Apresentação no plano de serviços e do componente
Escalonador (ou Executor) de Pré-busca também no plano de serviços.
Evidentemente, se os mecanismos de pré-busca e orquestração intramídia não estiverem disponíveis, a última iniciação não será feita.
procedimento 8:
Uma vez iniciado, o Escalonador de Apresentação
(plano de serviços) consulta o plano de execução e, sempre que
necessário, instancia uma nova ferramenta de exibição. O escalonador
também controla as transições nos estados dos eventos, avalia os elos e
envia comandos de ação para as ferramentas sempre que a condição de
um elo causal é satisfeita. Ainda como responsabilidade do serviço de
execução da apresentação, encontram-se os envios de comandos para
acelerar ou desacelerar a taxa de exibição das mídias contínuas, quando
algum ajuste estiver programado no plano.
procedimento 9:
O Escalonador de Pré-busca, no plano de serviços, ao
ser iniciado, passa a observar o plano de pré-busca e, toda vez que
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
94
encontra uma nova busca programada, requisita ao componente de busca
que a inicie.
procedimento 10:
O Gerenciador Intra-mídia, no plano de meta-serviços,
consulta o plano de pré-busca, ou mesmo de execução, para descobrir os
momentos programados para iniciar as buscas. Para cada busca, o
gerenciador solicita a um Orquestrador Intra-mídia que negocie a
qualidade de serviço para a sua transferência. No processo de
negociação, o orquestrador intra-mídia pode dividir as responsabilidades
por mais de um orquestrador de QoS (sistema operacional, rede etc.). O
Orquestrador
Intra-mídia
também
permanece
monitorando
os
orquestradores de QoS com os quais estabeleceu negociações, a fim de
identificar qualquer violação (ou possibilidade de violação) no acordo
firmado. Quando uma violação é notificada, primeiro o orquestrador
tenta redistribuir as responsabilidades entre os orquestradores de QoS e,
com isso, sintonizar a QoS intra-mídia. Se isso não for possível, o
orquestrador intra-mídia reporta o problema para o gerenciador que,
provavelmente, repassará a notificação ao orquestrador de pré-busca ou
diretamente ao orquestrador de apresentação.
procedimento 11:
O Executor do Orquestrador de Pré-busca, no plano de
meta-serviços, permanece monitorando o contexto de exibição, o plano
de execução, o plano de pré-busca e o gerenciador intra-mídia. Qualquer
alteração ou violação informada, o orquestrador procura compensar
direto no plano de pré-busca. Se isso não for possível, o orquestrador de
pré-busca notifica o executor do orquestrador de apresentação a respeito
do problema.
procedimento 12:
O Executor do Orquestrador de Apresentação, no plano
de meta-serviços, permanece monitorando o contexto de exibição, o
plano de execução, o orquestrador de pré-busca e o gerenciador intramídia. Qualquer alteração ou violação informada, o executor procura
ajustar o plano de execução. Quando necessário, o executor pode
requisitar também os serviços do componente adaptador.
A próxima seção define a interface para utilização dos serviços de
orquestração intra-mídia no formatador.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
95
4.2.1
Arquitetura para implementação da orquestração intra-mídia
A modelagem proposta nesta seção faz uso do framework de orquestração
de recursos (ou framework de QoS) proposto em (Gomes 1999; Gomes et al.,
2001). As classes preenchidas com a cor cinza, na Figura 24, destacam os
componentes do framework de QoS que influenciaram e foram diretamente
utilizados na proposta de suporte à implementação de mecanismos de
orquestração intra-mídia em formatadores hipermídia. De acordo com o diagrama
de classes da figura, o gerenciador (classe IntraMediaManager) é a fachada do
mecanismo e é definido como sendo composto por um orquestrador intra-mídia
(classe IntraMediaOrchestrator).
O gerenciador intra-mídia oferece em sua interface cinco principais
métodos. O método prepareOrchestration recebe o plano (de busca ou de
execução,
podendo
inclusive
monitorar
ambos)
a
ser
monitorado
e,
opcionalmente, a hora prevista para a chamada ao seu método startOrchestration.
Esse último parâmetro é útil apenas em cenários com suporte à reserva antecipada,
pois permite que o gerenciador tenha conhecimento dos instantes programados
para iniciar as buscas. O método startOrchestration deve ser chamado para
acionar a orquestração intra-mídia; sua chamada pressupõe que o plano passado na
preparação começou a ser executado. O método stopOrchestration encerra o
processo de orquestração intra-mídia e limpa as estruturas de dados do
gerenciador.
Por
fim,
os
métodos
addIntraMediaListener
e
removeIntraMediaListener permitem, respectivamente, acrescentar ou remover
um objeto da lista de observadores do mecanismo de gerência da orquestração
intra-mídia
(objetos
da
classe
IntraMediaOrchestrationListener).
Esses
observadores serão notificados da impossibilidade de estabelecer um novo
contrato (chamada ao método notifyAdmissionFail) ou violações em contratos já
estabelecidos (chamada ao método notifyTuningFail). As chamadas a esses
métodos informam o objeto de execução com o qual o problema foi identificado.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
96
IntraM ediaM anager
IntraM ediaOrchestrationLis tener
prepa reOrc hestrat ion()
s tar tOr c hest rat ion ()
s topOr c hest rat io n()
addIntr aMe diaL is t ener ()
rem oveIntraM ediaListener()
getS t atist ic s()
1..*
n otify Ad miss i onFai l()
n otify Tuni ngFail()
QoS Negotiator
M onitor
IntraM ediaOrchestrator
request()
c onfirm ()
1
1
1
1
getStatis tics ()
lowerLe velTuner
1
sam eLevelTuner
1..*
A dm is s io nContr oller
1..*
adm it()
com m it ()
1
QoSTuner
a lert()
tune()
higherLevelM onitor
Figura 24 – Diagrama de classes para implementação de mecanismos de orquestração
intra-mídia.
A partir de uma análise dos planos, para cada objeto de execução, o
gerenciador deve iniciar, junto ao orquestrador, um processo de negociação de
reserva de recursos. Essa negociação resultará em uma chamada ao método
request do negociador do orquestrador (classe QoSNegotiator). Cabe ao
negociador separar as responsabilidades entre os vários controladores de admissão
(classe AdmissionController) dos provedores que estejam envolvidos na provisão
do serviço e repassar aos mesmos um pedido de admissão. A partir daí, o processo
assume o comportamento recorrente definido pelo framework de orquestração de
recursos (Gomes, 1999; Gomes et al., 2001). O negociador de QoS fica
aguardando que todos os controladores de admissão retornem se foi possível ou
não estabelecer a reserva. Em caso afirmativo, o negociador passa então a esperar
um pedido de confirmação da reserva (chamada ao método confirm) que é então
repassada aos controladores de admissão. Se algum dos controladores de admissão
não conseguir reservar os recursos solicitados, o negociador pode tentar uma nova
distribuição das responsabilidades, até que, sendo impossível concluir a
negociação com sucesso, o gerenciador é informado pelo orquestrador e notifica
seus observadores (objetos da classe IntraMediaOrchestrationListener).
O acionamento da orquestração intra-mídia faz com que seja também
iniciado o monitor intra-mídia (classe Monitor) do orquestrador intra-mídia. Esse
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
97
monitor permanece observando os sintonizadores dos provedores de serviço
(objetos da classe QoSTuner) e é notificado de qualquer violação nos contratos de
QoS já firmados. Essa notificação se dá através de uma chamada ao método
getStatistics do monitor intra-mídia. Isso faz com que o monitor acione o
sintonizador de QoS intra-mídia (chamada ao método alert do objeto da classe
QoSTuner do orquestrador intra-mídia) que deve tentar uma nova distribuição das
responsabilidades de qualidade de serviço entre os provedores. Se isso não for
possível, o sintonizador intra-mídia notifica o gerenciador da violação. Note que o
gerenciador da orquestração intra-mídia no formatador atua como monitor do seu
orquestrador intra-mídia.
Quando informado da violação, o gerenciador pode realizar uma nova
tentativa de negociação sem que seja preciso notificar os orquestradores de prébusca e de apresentação. Caso não tenha sucesso, o orquestrador de pré-busca, ou
o orquestrador de apresentação, deve ser informado, para que as correções sejam
efetuadas diretamente no respectivo plano, pois, nesse caso, para corrigir o erro na
orquestração intra-mídia, a única solução é sintonizar a orquestração inter-mídia.
4.3
Mecanismos de adaptação
Com o intuito de obter uma qualidade próxima da ideal durante a execução
de um documento, as técnicas de pré-busca procuram antecipar as ações e
previamente preparar o sistema e os dados dos conteúdos dos objetos. Nesse
sentido, o principal objetivo da orquestração de pré-busca é ter os eventos de
exibição já preparados, para que, quando necessária, a transição para o estado
ocorrendo seja sempre imediata, ou dentro de limites aceitáveis.
A orquestração intra-mídia aparece como uma segunda funcionalidade,
atuando na gerência dos recursos necessários para manter a exibição, ou mesmo a
preparação, do conteúdo de cada um dos objetos de execução do documento. Mais
uma vez, o objetivo é manter a qualidade da execução dos documentos em níveis
aceitáveis, diminuindo a probabilidade de que as especificações do autor não
venham a ser respeitadas.
Apesar de serem recursos importantes, apenas os mecanismos de pré-busca e
orquestração intra-mídia não são suficientes para garantir a boa qualidade das
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
98
apresentações. Sempre pode haver situações que impeçam continuar a exibição do
documento de modo satisfatório. No caso da pré-busca, a memória cache pode não
ter espaço suficiente para armazenar todos os dados necessários. No caso da
orquestração intra-mídia, a rede e o sistema operacional (provedores de serviços
de comunicação e processamento) podem não conseguir oferecer, ou garantir, a
qualidade de serviço solicitada. Pode ser, inclusive, que algum provedor não
ofereça suporte para que a QoS seja negociada, restando apenas como opção um
serviço de melhor esforço. Em todos esses casos, para que o formatador recupere a
sincronização da apresentação, é necessário que sejam acionadas estratégias de
adaptação para, por exemplo, diminuir a duração (ou a taxa de exibição) de alguns
objetos, substituir objetos por outros de menores exigências de QoS, ou mesmo
descartar alguns objetos.
Conforme já discutido na Seção 2.1, são muitas as motivações para a
existência de mecanismos de adaptação em apresentações hipermídia. A
adaptação pode ser interessante, não apenas como um mecanismo reativo a
situações que possam causar impacto na qualidade da apresentação, como um
mecanismo que, antes de iniciar a apresentação, procura adequar o documento às
informações do contexto de exibição e às especificações do autor.
De acordo com os conceitos apresentados na Seção 4.2, os mecanismos de
adaptação, de um modo geral, podem ser vistos como parte integrante do processo
de orquestração inter-mídia da apresentação. Quando utilizada como um
mecanismo de reação e ajuste a violações no plano de execução originalmente
previsto, a adaptação atua como um auxiliador à estratégia de sintonização,
enquanto que, quando aplicada na fase de compilação, a adaptação apóia a
estratégia de negociação.
O restante desta seção aborda, de maneira mais detalhada, a questão da
adaptação através do ajuste elástico das durações dos objetos. Os aspectos
relacionados à seleção de alternativas não serão tratados, pois foram discutidos no
Capítulo 2 (Seções 2.1 e 2.3.3). Contudo, no final, a seção trata da interface do
adaptador para atuar integrado aos demais componentes do formatador,
oferecendo serviços de ajuste dos tempos elásticos e de seleção de alternativas.
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
99
4.3.1
Ajuste dos tempos elásticos
Mecanismos de ajuste dos tempos elásticos (elastic time computation),
termo formalmente definido em (Kim & Song, 1995), procuram adaptar as
apresentações dos objetos a fim de garantir a consistência temporal dos
documentos. O objetivo é alcançado através de diminuições (shrinking) ou
aumentos (stretching) nas durações ideais dos eventos de apresentação.
Evidentemente, para que se possa aplicar esse tipo de mecanismo de adaptação, é
preciso que o modelo de execução ofereça flexibilidade na especificação das
durações dos eventos.
A especificação da duração, como uma classe extensível no modelo de
execução (Seção 2.3.1.3), permite à arquitetura de formatação explorar a definição
de durações flexíveis para as ocorrências dos eventos não instantâneos (em
particular os de apresentação) e, com isso, aplicar os mecanismos de ajuste
elástico. O diagrama de classes da Figura 25 ilustra as extensões já definidas no
modelo de execução para a classe Duration.
Duration
expected
actual
INDETERMINATE
UnflexibleDuration
value
FlexibleDuration
minValue
maxValue
CostFunctionDuration
idealValue
minValueCost
maxValueCost
getValueCost()
SimpleDiscreteDuration
ConvexPieceW iseLinearCostFunction
Figura 25 – Classes de duração no modelo de execução.
1
LinearSegment
2.. n beginValue
endValue
beginCost
coefficient
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
100
De acordo com a figura, o modelo define uma duração como podendo ser de
dois tipos: inflexível (classe UnflexibleDuration), que não permite que ajustes
sejam feitos sobre o valor esperado, ou flexível (classe FlexibleDuration), que
especifica uma faixa de possíveis valores para escolha do valor esperado. São
justamente as durações derivadas dessa classe (ou de subclasses dela) que devem
ser utilizadas pelos mecanismos de ajuste dos tempos elásticos.
Uma subclasse especial de FlexibleDuration é definida para permitir a
especificação
de
durações
flexíveis
como
funções
de
custo
(classe
CostFunctionDuration). Uma função de custo possui, além dos limites para
escolha do valor esperado, a especificação de pelo menos um valor ideal e
medidas de custos, que permitem inferir a degradação da qualidade quando se
escolhe um valor esperado diferente do ideal. A Figura 26a ilustra graficamente a
descrição de uma instância de CostFunctionDuration com valores mínimo, ideal e
máximo respectivamente iguais a θmin, θid e θmax. No exemplo, o custo do valor
mínimo é dado por c1 e o custo do valor máximo é dado por c2. Na realidade, uma
função desse tipo define dois custos de degradação: um para durações abaixo da
ideal e maiores ou iguais à duração mínima, e outro para durações acima da ideal
e menores ou iguais à duração máxima.
c2
c2
c2
c2
c1
c1
c1
c1
0
θmin
θid
θmax
0
(a)
θmin
θid
θmax
0
θmin
(b)
θid
θmax
0
θid
θmin
(c)
θmax
(d)
Figura 26 – Exemplos de funções de custo. a) Função de custo simples. b) Função de
custo simples, porém discreta. c) Função de custo linear do tipo piece-wise com dois
segmentos. d) Função de custo linear do tipo piece-wise com múltiplos segmentos.
A
Figura
26b
ilustra
um
exemplo
de
instância
da
classe
SimpleDiscreteDuration. A diferença é que, nesse caso, apesar de flexível, a
duração esperada precisa ser escolhida como sendo uma das três opções (mínima,
ideal ou máxima), representando uma função de custo discreta.
O modelo define ainda uma classe ConvexPieceWiseLinearCostFunction,
para representar funções de custo convexas que sejam compostas de múltiplos
segmentos lineares. Cada segmento (classe LinearSegment) possui uma duração
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
101
inicial e uma duração final, o custo da duração inicial e o coeficiente angular do
segmento. Os gráficos da Figura 26c e da Figura 26d são exemplos de funções de
custo lineares, piece-wise e convexas. Novos tipos de durações, e principalmente
de funções de custo, podem ser facilmente incorporados ao formatador através de
extensões das classes apresentadas na Figura 25.
Em certos casos, é útil que alguns dos atributos das durações (por exemplo,
duração ideal, os limites para a duração etc.) sejam especificados como valores
indeterminados. Um nó cujo conteúdo é apresentado até que alguma ação externa
interrompa a sua exibição ou um nó que termina por si próprio a sua apresentação
são exemplos de objetos de execução, cujos eventos de apresentação possuem
durações imprevisíveis. Sendo assim, a classe Duration define uma constante
INDETERMINATE, com um valor negativo, que serve para especificar atributos
da duração como sendo indeterminados.
O objetivo de um mecanismo de ajuste dos tempos elásticos é procurar
calcular as durações esperadas para os eventos de apresentação dos objetos,
respeitando os valores válidos para a duração de cada evento e, ao mesmo tempo,
os relacionamentos impostos pelo autor. Contudo, em algumas situações, o
mecanismo de ajuste pode encontrar mais de uma solução para o problema
colocado. Se as durações forem especificadas como funções de custo, o algoritmo
de ajuste pode tentar aplicar uma função objetiva, que calcule as durações
esperadas para cada objeto, de tal maneira que o custo total dos ajustes seja
minimizado (Bachelet et al., 2000; Buchanan & Zellweger, 1993b; Kim & Song,
1995). No entanto, esse pode não ser o único parâmetro para escolha da melhor
configuração das durações para o documento. Outros critérios que o mecanismo
de ajuste pode levar em conta são:
•
Minimizar o número de objetos com eventos de exibição com duração
esperada diferente da duração ideal. A idéia desse critério é diminuir o
número de objetos que tenham as suas durações modificadas, assumindo
que modificar a duração de um objeto pode impor um custo computacional
elevado na plataforma exibição.
•
Minimizar a soma dos desvios em relação às durações ideais. Quando
houver mais de uma solução para o critério anterior, esse critério pode
servir como um complemento. No entanto, se aplicado como primeiro
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
102
critério, ele tende a ser contrário ao critério anterior, pois a idéia é
distribuir ao máximo as alterações, buscando torná-las o menos perceptível
possível.
O mecanismo de ajuste pode também se guiar por restrições externas ao
documento, como por exemplo, encontrar o menor custo de ajuste a partir de uma
duração total de apresentação que venha a ser definida. Uma aplicação prática
desse tipo de restrição seria na programação de TV, onde os tempos de alguns
programas ou comerciais podem precisar ser ajustados dinamicamente, devido a
atrasos imprevisíveis na grade. Outra restrição externa que pode vir a ser imposta
é o número máximo de objetos que podem ter suas durações recalculadas.
É útil também que uma estratégia de ajuste saiba, não apenas encontrar uma
solução ótima, como também responder qual seria a menor e a maior duração
válida para a exibição do documento, ou de um de seus trechos. Melhor ainda se a
estratégia for capaz de manter essas informações atualizadas, conforme transcorre
a apresentação do documento, pois pode auxiliar quando o ajuste precisar ser feito
em tempo de execução (Seção 3.1).
4.3.2
Arquitetura para implementação de mecanismos de adaptação
O módulo adaptador no formatador (classe DocumentAdapter) responde por
três funções básicas: avaliar as regras de exibição (Seção 2.3.3), definir o objeto
de execução a ser selecionado em um conjunto de alternativas (Seção 2.3.3) e
ajustar as durações dos eventos não instantâneos (Seção 2.3.1.3) contidos em uma
cadeia temporal que seja passada como parâmetro.
As duas primeiras funções podem ser desempenhadas pela própria
implementação do módulo de adaptação, utilizando as informações coletadas do
proxy de informações contextuais (classe ContextManager). O ajuste dos tempos
elásticos, devido a sua maior complexidade e variedade de possibilidades para
realizar a tarefa, é modelado como um ponto flexível, através de uma estratégia
genérica. O adaptador pode, inclusive, possuir estratégias distintas para o ajuste
em tempo de compilação e o ajuste em tempo de execução. O método de ajuste
dos tempos (adjustTimeChain) recebe como parâmetro, além da cadeia temporal,
Pré-busca, Orquestração Intra-Mídia e Adaptação de Apresentações
Hipermídia
103
um atributo que informa se o cálculo deve ser realizado com a estratégia de
compilação (atributo compileTimeStrategy) ou com a estratégia de execução
(atributo
executionTimeStrategy)
do
adaptador.
Além
desses
atributos,
opcionalmente, o método de ajuste pode ser informado sobre a restrição de
duração imposta pelo autor (ou pelo usuário) e o número máximo de objetos que
podem ter suas durações modificadas. O método adjustTimeChain retorna um
valor booleano dizendo se foi possível, ou não, encontrar uma configuração
consistente.
Docum entA dapter
queries
Context Mana ger
s olves
Ex ecutionObjec tA lternatives
evaluateP resentationRule()
selectA l ter native()
adjustTim eChain ()
getParam eterValue()
com pileTim eS trategy
evaluates
executionTim eStrategy
Ti m eCh ain
P resentationRule
getEx pec tedDuration()
getM inim um Duration()
getM axim um Duration()
0..1
0 ..1
Elastic Tim eCom putationS trategy
adjust()
Figura 27 – Diagrama de classes para implementação de mecanismos de adaptação.
Uma vez executada e conseguindo encontrar uma solução para a cadeia
temporal, a estratégia de ajuste deve gravar na cadeia a duração programada para
sua exibição completa. Se possível, a estratégia deve especificar também os
limites mínimo e máximo para a duração da cadeia. Esses valores podem,
posteriormente,
ser
consultados
através
de
chamadas
aos
métodos
getExpectedDuration, getMinimumDuration e getMaximumDuration da própria
cadeia temporal. Da mesma forma, os eventos não instantâneos no modelo
possuem dois atributos adicionais que podem guardar a duração mínima e máxima
para sua ocorrência que não infringe a consistência temporal do documento. Esses
valores, se possível, são calculados pelas estratégias de ajuste e podem se
modificar ao longo da exibição do documento.
Formatador HyperProp
104
5
Formatador HyperProp
Este capítulo descreve a implementação do ambiente de execução do
sistema hipermídia HyperProp (Soares et al., 2000), feita com base no modelo de
execução definido no Capítulo 2 e na arquitetura proposta nos Capítulos 3 e 4.
Com efeito, o trabalho de implementação serviu para refinar e validar as
definições do framework para construção de formatadores hipermídia. Java foi a
linguagem de programação escolhida para o desenvolvimento do ambiente de
execução, buscando uma solução independente de plataforma.
5.1
Conversor NCM
Esta seção comenta os principais aspectos da tradução de documentos NCM
(Casanova et al., 1991; Soares et al., 1995; Soares et al., 2000; Soares et al., 2003)
para o modelo de execução do formatador HyperProp, cuja implementação baseiase no modelo descrito na Seção 2.3. A razão dessa conversão deve-se ao fato do
NCM ser o modelo conceitual utilizado pelos ambientes de autoria e
armazenamento do sistema HyperProp. Uma vez que o modelo de execução
descrito no Capítulo 2 foi diretamente influenciado pelas propostas do modelo
NCM, muitas das entidades são facilmente convertidas, conforme tornar-se-á mais
claro ao longo desta seção.
O NCM é um modelo orientado a objetos, baseado nos conceitos usuais de
nós e elos. Nós representam fragmentos de informação, enquanto elos permitem
estabelecer relacionamentos de sincronização espacial e temporal entre os nós.
Um nó NCM pode ser simples ou composto. O nó simples, denominado nó
de conteúdo (ou nó terminal), representa um nó de mídia usual, podendo ser
especializado em classes como texto, imagem, vídeo, áudio etc. O nó composto,
denominado nó de composição, é utilizado para organizar logicamente os
Formatador HyperProp
105
componentes do documento, sendo útil também para oferecer suporte ao reuso de
partes de um documento17.
A Figura 28 ilustra um exemplo de documento estruturado com o uso de
composições. O nó de composição Coisa de Pele representa o documento, sendo
constituído por duas outras composições, Beth Carvalho e Jorge Aragão, que
organizam a interpretação de uma mesma música (“Coisa de Pele”) por dois
diferentes cantores. A composição Beth Carvalho contém o nó composto Letra,
além de um nó de conteúdo texto música-Beth e um nó de conteúdo vídeo clipBeth; enquanto a composição Jorge Aragão contém a mesma composição Letra e
outros dois nós de conteúdo: o texto música-Jorge e o vídeo clip-Jorge. A
composição Letra possui nós de conteúdo que contêm os versos da música em
fragmentos separados. Relações diferentes das relações de estruturação são
representadas no NCM por elos. Por exemplo, um relacionamento de
sincronização temporal entre os objetos música-Beth e versos-01 é definido
através do elo lb1. O elo NCM é muito similar ao elo do modelo de execução e seu
tratamento será comentado mais adiante.
lb1
lj1
v1
lb2
lb3 v2
lb4
v1
lj2
lj3
lj4
v2
Figura 28 – Exemplo de documento estruturado em composições.
17
O NCM define composição como uma classe abstrata, de onde derivam diversas subclasses
(contexto do usuário, contexto de versões, base privada etc.), que definem diferentes semânticas
para a estruturação dos nós (Soares, 2000). Por simplificação, esta seção tratará os nós compostos
genericamente como composições, a não ser que seja necessário referir-se a uma determinada
especialização.
Formatador HyperProp
106
Como é possível perceber pelo exemplo, o modelo possui um importante
recurso de reuso que permite que um mesmo nó (de conteúdo ou de composição)
esteja contido em mais de uma composição diferente (por exemplo, o nó Letra
contido nas composições Beth Carvalho e Jorge Aragão). Uma vez que o modelo
também permite que nós de composição estejam aninhados em qualquer
profundidade (composição Letra contida na composição Beth Carvalho, que por
sua vez está contida na composição Coisa de Pele), existe definido no NCM o
conceito de perspectiva do nó. Intuitivamente, a perspectiva de um nó identifica
através de que seqüência de nós de composição aninhados uma dada instância de
um nó N é observada, podendo haver diferentes perspectivas para um mesmo nó
N, se esse nó estiver contido em mais de uma composição. Por exemplo, na figura,
o nó versos-01 possui duas perspectivas distintas: P1=/Coisa de Pele/Beth
Carvalho/Letra/versos-01 e P2=/Coisa de Pele/Jorge Aragão/Letra/versos-01.
Essa flexibilidade do modelo de autoria, juntamente com o fato dos elos não
estarem embutidos nos conteúdos dos nós, constitui-se em um suporte à adaptação
estática dos relacionamentos da apresentação, pois os relacionamentos de um
objeto poderão variar em função da perspectiva que o nó estiver sendo
apresentado. No exemplo, dependendo da perspectiva, o relacionamento que o nó
versos-01 participa como condição é diferente (lb4 em P1 e lj4 em P2). Para toda
perspectiva, o modelo denomina o nó mais interno (no caso do exemplo, o nó
versos-01) como sendo o nó base da perspectiva.
De um modo geral, a operação do conversor NCM consiste em receber
como entrada a perspectiva de um nó e retornar um contêiner de execução (Seção
2.3.4). Se o nó base da perspectiva for um nó de conteúdo, o contêiner gerado irá
possuir os objetos de execução criados a partir desse nó18, os elos de restrição
(Seção 2.3.2.2) dos quais o nó participa, os elos causais (Seção 2.3.2.1) nos quais
o nó atua como condição e os objetos de execução derivados a partir das
perspectivas dos nós que ancoram nesses mesmos elos que o nó (e perspectiva)
passado como parâmetro. O processo não é recursivo, ou seja, novos elos que
ancorem nesses outros nós não são analisados nesse momento pelo conversor. Os
objetos de execução derivados desses nós são marcados pelo conversor como
18
Mais adiante ficará claro que um nó NCM pode resultar em mais de um objeto de execução.
Formatador HyperProp
107
parcialmente construídos. Esse tratamento é útil em um processo incremental de
conversão, compilação e execução dos documentos.
Se o nó base da perspectiva for um nó de composição, o conversor irá
estender o procedimento de criar os objetos de execução, elos e objetos de
execução relacionados também para cada nó que esteja contido, ou recursivamente
contido, na composição.
No exemplo da Figura 28, se fosse entregue ao conversor a perspectiva
/Coisa de Pele/Beth Carvalho/música-Beth, o conversor iria gerar os objetos de
execução derivados do nó música-Beth, na perspectiva passada como parâmetro,
iria tratar os elos lb1, lb2 e lb3, e iria gerar objetos de execução parcialmente
construídos para os nós versos-01, versos-02 e versos-03, nas respectivas
perspectivas Coisa de Pele/Beth Carvalho/Letra/versos-01, Coisa de Pele/Beth
Carvalho/Letra/versos-02 e Coisa de Pele/Beth Carvalho/Letra/versos-03. Por
outro lado, se o conversor recebesse a perspectiva /Coisa de Pele, todos os nós,
elos e perspectivas do exemplo seriam tratados pelo conversor.
No processo de conversão, cada nó NCM (simples ou composto) é
diretamente mapeado em um objeto de dados no modelo de execução19. Pelo fato
da perspectiva de um nó condicionar as relações de sincronização das quais ele
participa, a criação dos objetos de execução leva em consideração as perspectivas
dos nós. Para cada perspectiva diferente, o conversor NCM cria um objeto de
execução separado. Vale lembrar que o modelo de execução permite que
diferentes objetos de execução contenham um mesmo objeto de dados.
Além da perspectiva, uma outra entidade fundamental na criação e
diferenciação dos objetos de execução é o descritor NCM. O descritor NCM
reúne as características de apresentação de um nó e é idêntico, em seus atributos,
ao descritor definido no modelo de execução (Seção 2.3.1.2). Todavia, devido à
maneira flexível que o NCM especifica as associações entre nós e características
da apresentação, o processo de criação dos descritores no modelo de execução não
ocorre de maneira direta.
Na realidade, o termo objeto de dados faz parte da definição do NCM, correspondendo a uma
abstração do nó em uma aplicação cliente NCM (Soares, 1998a; Soares, 1998b; Soares, 2003).
Essa definição é útil no esquema de tratamento de versões do modelo. Sendo assim, a conversão é,
na verdade, de um objeto de dados NCM para um objeto de dados de execução.
19
Formatador HyperProp
108
Descritores NCM podem ser definidos como atributos do nó, na composição
que contém o nó ou nas extremidades dos elos (Soares et al., 2000; Soares et al.,
2003). Em todas essas opções, o NCM define, na realidade, uma lista de
descritores alternativos, que pode inclusive encontrar-se vazia. Os descritores de
execução são gerados pelo conversor NCM como uma união dessas
possibilidades, seguindo uma regra de cascateamento explicada a seguir.
Para cada nó (em uma dada perspectiva) que ancora na extremidade de um
elo NCM (por exemplo, o nó música-Beth, na perspectiva /Coisa de Pele/Beth
Carvaho/música-Beth, ancorando no elo lb1), o cascateamento dos descritores é
calculado através da união dos dados contidos no descritor do nó base da
perspectiva (música-Beth), no descritor da composição que diretamente contém o
nó base da perspectiva (Beth Carvalho) e no descritor da extremidade do elo (lb1).
Se, por acaso, dois descritores definirem um mesmo atributo com valores
diferentes, o conversor resolve o conflito considerando que o descritor do elo tem
prioridade sobre o descritor da composição que, por sua vez, tem precedência
sobre o descritor do nó. Os atributos do descritor resultante são então utilizados
para compor o descritor do objeto de execução. Quando em qualquer uma das
opções (elo, composição ou nó), não houver um descritor definido, a opção é
simplesmente ignorada no cascateamento. Por outro lado, se em qualquer uma
delas, houver uma lista de descritores com mais de uma opção, ao invés de criar
um único objeto de execução, o conversor utiliza cada alternativa de descritor para
gerar um descritor de execução distinto e, conseqüentemente, criar objetos de
execução diferentes. Nesse caso, o conversor cria também uma alternativa de
objetos de execução (Seção 2.3.3) reunindo as várias possibilidades de objetos de
execução geradas. As regras de exibição da alternativa de objetos são obtidas dos
atributos de teste definidos para cada descritor NCM (Muchaluat-Saade, 2003;
Soares et al., 2003). Se houver no cascateamento mais de uma lista com mais de
uma opção, o conversor gera objetos de execução para todas as combinações
possíveis. Evidentemente, esse comportamento pode levar a uma explosão no
número de objetos de execução. Uma solução seria resolver a escolha do descritor
estaticamente no próprio conversor. Contudo, isso dificultaria que uma mesma
conversão fosse reusada em plataformas distintas, por mais de uma vez e por mais
de um usuário. Como, na prática, apenas o nó possui descritor definido e, além
Formatador HyperProp
109
disso, dificilmente encontra-se uma lista com mais de dois descritores, a
implementação atual de conversor NCM não se preocupa com essa questão.
Um outro suporte a alternativas que o NCM oferece são as alternativas de nó
(nó de composição do tipo switch) (Muchaluat-Saade, 2003; Soares et al., 2003).
Esse nó especial de composição contém uma lista ordenada de nós, com atributos
de teste associados. A idéia é que os testes sejam analisados na ordem dos nós e o
primeiro nó que tiver o teste satisfeito seja selecionado, oferecendo semântica
idêntica à do elemento switch da linguagem SMIL (W3C, 2001a). Esses nós
alternativos NCM são mapeados diretamente e na mesma ordem em alternativas
de objetos de execução, com os atributos de teste sendo convertidos nas regras de
exibição a serem associadas aos objetos de execução. Quando um primeiro nó
NCM é encontrado em um nó switch sem um atributo de teste associado, esse nó é
traduzido no objeto de execução default. A partir desse ponto os nós NCM
restantes são ignorados pelo conversor. Se, por acaso, uma das alternativas de nó
NCM em um nó de composição switch tiver uma lista de descritores com mais de
uma alternativa, a conversão desse nó resultará em uma alternativa de objetos de
execução, que por sua vez será inserida na alternativa de objetos de execução
sendo construída para os nós. Nesse caso, o resultado no documento de execução
será um aninhamento de alternativas.
O ponto de partida do processo de tradução feito pelo conversor é a análise
dos elos NCM que ancoram no nó base da perspectiva que lhe foi passada como
parâmetro. No caso do nó base ser uma composição, a análise feita também se
estende aos elos NCM que ancoram nos nós recursivamente contidos na
composição (sempre considerando a perspectiva de cada nó). O resultado dessa
etapa é a criação dos elos de execução e dos objetos de execução (podendo esses
objetos serem alternativas de objetos de execução) que participam dos
relacionamentos, com as suas inserções no contêiner de resposta do conversor.
Evidentemente, essa análise também identifica os eventos envolvidos nas
sincronizações e os insere na lista de eventos de cada objeto de execução.
O elo NCM é definido como estando contido em um nó de composição e
sendo constituído por um conector e um conjunto de associações entre os nós e o
conector (Muchaluat-Saade & Soares, 2001; Muchaluat-Saade et al., 2002;
Muchaluat-Saade, 2003). O conector contém a expressão do relacionamento e as
Formatador HyperProp
110
associações representam as extremidades dos elos, identificando os seus
participantes. Essa separação permite que um mesmo conector seja reusado em
mais de um elo, favorecendo a autoria e manutenção das relações nos documentos
hipermídia (Muchaluat-Saade & Soares, 2001). O modelo NCM define dois tipos
de conector: conector causal e conector de restrição. Elos NCM que usam
conectores causais são convertidos em elos de execução causais (Seção 2.3.2.1),
enquanto os que usam conectores de restrição são transformados em elos de
execução de restrição (Seção 2.3.2.2). As informações contidas no conector são
utilizadas pelo conversor para construir o ponto de encontro do elo de execução. A
perspectiva do nó de composição que contém o elo juntamente com os dados das
associações são utilizados pelo conversor para criar os objetos de execução e
respectivos eventos que participam de um relacionamento.
Toda associação em um elo NCM contém a identificação de um nó NCM, a
definição de uma seqüência de nós de composição recursivamente contidos na
composição que contém o elo20 e a especificação de uma lista de descritores
alternativos. Dessas informações deriva ao menos um objeto de execução. O
objeto de dados de execução é obtido diretamente do nó NCM, o descritor de
execução é extraído da regra de cascateamento dos descritores NCM explicada
anteriormente e, por fim, o identificador único do objeto de execução (Seção
2.3.1) deriva de uma concatenação de identificadores. A concatenação é formada
pelos identificadores dos nós NCM que compõem a perspectiva do nó de
composição que contém o elo, seguidos dos identificadores dos nós que formam o
mapeamento, seguidos do identificador do nó NCM que participa do elo, seguido
dos identificadores dos descritores que compõem o descritor resultante (resultado
do cascateamento). Sendo assim, dois objetos de execução são considerados
diferentes pelo conversor, se tiverem alguma distinção na perspectiva ou no
cascateamento de descritores. Para todo objeto de execução criado pelo conversor,
ele cria também um evento de apresentação que é inserido na lista de eventos do
objeto. Esse evento representa a exibição do conteúdo do objeto como um todo.
20
O NCM permite que uma composição defina mapeamentos de suas âncoras (pontos de interface)
para âncoras de nós que estejam nela contidos. Se esses nós forem composições, o processo pode
se repetir em vários níveis de aninhamento. Isso obriga que elos apontem para nós contidos, ou
recursivamente contidos, em composições apenas através de pontos de interface bem definidos,
garantindo a propriedade de composicionalidade do modelo.
Formatador HyperProp
111
Retornando ao exemplo da Figura 28 para ilustrar as definições
apresentadas, o elo lb1 está contido no nó de composição Beth Carvalho, que
possui uma única perspectiva no documento dada por Coisa de Pele/Beth
Carvalho. O elo possui ainda duas associações, uma com o nó música-Beth e
outra com o nó versos-01, sendo que essa última associação passa por um
mapeamento definido entre o nó de composição Letra e o nó de conteúdo versos01. Assumindo que para esses nós de conteúdo existam apenas dois descritores
definidos no documento: desc-beth como atributo do nó música-Beth e descversos-01 como atributo do nó versos-01, os identificadores dos objetos de
execução relacionados pelo elo de execução, resultado da tradução do elo NCM
lb1, seriam: Coisa de Pele+Beth Carvalho+música-Beth+desc-Beth e Coisa de
Pele+Beth Carvalho+Letra+versos-01+desc-versos-01.
Além do nó, dos mapeamento para alcançar o nó e da lista de descritores,
toda associação no elo NCM possui também a especificação de um tipo de evento
(exibição, clique do mouse, atribuição etc.) e o identificador de uma âncora, ou de
um atributo, do nó NCM. O conversor utiliza essas informações para descobrir o
evento de execução (Seção 2.3.1.3) que deve participar do elo. Em seguida, caso o
evento ainda não exista, o conversor o insere na lista de eventos do objeto de
execução21.
Após a análise de todos os elos e criação dos objetos de execução e eventos,
o conversor percorre todas as perspectivas de nós que devam ser tratadas pelo
conversor, e cria os objetos de execução (ou alternativas de objetos de execução),
para cada nó base de perspectiva, aplicando a mesma regra de cascateamento
apresentada anteriormente, porém, desconsiderando a lista de descritores dos elos.
Essa etapa pode, ou não, resultar na inserção de mais alguns objetos de execução
no contêiner a ser respondido.
21
Os eventos NCM também são baseados em máquinas de estados e seus tipos e máquinas são
traduzidos diretamente nas classes de evento e máquinas de estados definidas no modelo de
execução. A única exceção são os eventos de preparação NCM, que no modelo de execução são
tratados como fazendo parte da máquina de estados do evento de apresentação.
Formatador HyperProp
112
5.1.1
Suporte à apresentação de documentos descritos em outros
modelos de autoria
O conversor NCM implementado junto ao formatador cria uma nova
possibilidade para o controle de apresentações hipermídia no sistema HyperProp.
Documentos definidos em outros modelos de autoria podem ser apresentados pelo
ambiente de execução do sistema HyperProp, se houver um mapeamento do
modelo em questão para o NCM. Seguindo essa lógica de integração, foram
desenvolvidos e implementados um conversor de documentos SMIL versão 1.0
(W3C, 1998) para documentos NCM (Rodrigues et al., 1999; Rodrigues, 2000;
Rodrigues et al., 2002) e um conversor da linguagem NCL para documentos NCM
(Antonacci et al., 2000; Rodrigues et al., 2002; Muchaluat-Saade, 2003).
A principal vantagem de efetuar a conversão entre os modelos no nível da
autoria é permitir que as funcionalidades de um modelo com maior poder de
expressão sejam acrescidas ainda na fase de edição dos documentos (Rodrigues et
al., 2002). Evidentemente, entidades que não possam ser mapeadas de um modelo
para o outro geram uma perda de características e recursos na conversão. Outra
vantagem da conversão nesse nível é explorar as ferramentas de edição
disponíveis para um determinado modelo, na autoria de documentos descritos em
modelos diferentes. Nesse caso, o ideal é que a conversão entre modelos possa ser
feita nos dois sentidos, novamente estando sujeita à perda de expressividade na
passagem de um modelo para o outro.
Existe, por outro lado, uma desvantagem em termos de eficiência quando a
conversão para apresentação é primeiro feita no nível de autoria, pois duas
conversões em seqüência precisam ser aplicadas para simplesmente exibir (sem
editar) um documento descrito em um modelo diferente do NCM. Por essa razão,
como trabalho futuro, pretende-se desenvolver um conversor que faça diretamente
a tradução de documentos escritos na versão 2.0 da linguagem SMIL (W3C,
2001a) para o modelo de execução definido nesta tese. Obviamente, a arquitetura
possibilita que outros conversores também sejam desenvolvidos, desde que exista
um mapeamento das características básicas para o modelo de execução.
Formatador HyperProp
113
5.2
Compilador e executor do orquestrador de apresentação do
formatador HyperProp
Os dois principais componentes do formatador no controle da apresentação
são o compilador de apresentação e o executor de apresentação, denominados
simplesmente de compilador e executor. Esses componentes implementam as
funções tanto do plano de serviços como do plano de meta-serviços descritas na
Seção 4.2 e ilustradas na Figura 23.
O compilador HyperProp é o ponto de entrada no processo de orquestração
das apresentações no sistema. O compilador dispõe de um método que espera
como parâmetros um contêiner de execução, a identificação de um objeto de
execução contido no contêiner e a identificação de um evento de apresentação
contido no objeto de execução. O contêiner informa para o compilador a descrição
do documento, enquanto o objeto de execução e o evento permitem que seja
conhecido o ponto de entrada a partir do qual o documento será iniciado.
Futuramente, pretende-se estender a interface para permitir que o usuário informe
o tempo máximo permitido para que a compilação seja feita e o instante
programado para que a execução do documento seja iniciada.
De posse das informações recebidas, o compilador constrói as cadeias
temporais do documento, que são implementadas como grafos temporais, onde os
nós representam transições nas máquinas de estados dos eventos e as arestas são
relações síncronas e previsíveis entre os nós. Cada aresta possui associada uma
informação de duração, que é modelada como uma função de custo do tipo piece
wise convexa e linear em todas as suas subdivisões (Seção 4.3.1).
O compilador HyperProp também analisa os elos causais e registra cada elo
como observador dos eventos que estejam associados a condições de transição em
seu ponto de encontro. Isso faz com que as transições nas máquinas de estados só
exijam a avaliação dos elos que realmente dependam daquele evento.
Outro tipo de associação de observação que o compilador estabelece é entre
a propriedade de transição e o seu evento. Isso permite que quando a transição
ocorra, a propriedade registre o instante da ocorrência para posterior avaliação por
parte dos elos. O controle de deslocamento utilizando os atributos minDelay e
maxDelay das expressões de propriedades (Seção 2.3.2.1) ainda é um ponto em
Formatador HyperProp
114
aberto na implementação do formatador, sendo os valores desses atributos
desconsiderados na implementação atual. A única exceção é para as expressões de
propriedades de transição. Nesse caso, o formatador sabe como manter a
semântica estabelecida pelo modelo de execução.
Na fase de construção do plano de execução, o compilador avalia todas as
alternativas de objetos de execução que podem ser resolvidas estaticamente e o faz
com o auxílio do proxy de informações contextuais. Na implementação corrente,
esse proxy é uma implementação simples de gerente de contexto que mantém
informações da plataforma, carregadas a partir de arquivos locais. Como trabalho
futuro, pretende-se integrar esse componente a um mecanismo real de gerência do
contexto de exibição e incluir a manutenção de informações a respeito do usuário.
Após a construção do plano de execução, o compilador inicia, se estiverem
presentes, as tarefas de ajuste dos tempos elásticos e compilação do plano de prébusca, que serão comentadas mais adiante. A funcionalidade de gerência da
orquestração intra-mídia é outro recurso que não está implementado e que deve
ser abordado futuramente.
Durante a apresentação do documento, o executor identifica e instancia as
ferramentas de exibição. Esse controle é feito com o auxílio do gerenciador de
ferramentas (Seção 3.2). O gerenciador obtém do proxy de informações
contextuais a relação das ferramentas disponíveis no sistema e os tipos MIME
(Freed & Borenstein, 1996) que as ferramentas sabem tratar. Quando um objeto de
execução precisa ser exibido, o gerenciador de ferramentas verifica primeiro se
existe uma ferramenta especificada no descritor. As ferramentas devem ser
identificadas pelo nome da classe Java que contém a implementação propriamente
dita. Se não houver uma ferramenta especificada no descritor, ou se a ferramenta
especificada não estiver disponível na plataforma, o gerenciador consulta o tipo
MIME do conteúdo em procura de uma ferramenta que saiba lidar com o formato
identificado. Se não for possível exibir o conteúdo, o gerenciador retorna o erro e,
na implementação atual, o executor simplesmente desabilita o objeto de execução
no documento. A maneira como está implementada a descoberta e instanciação
das ferramentas permite que sejam instaladas novas ferramentas na plataforma,
sem precisar que o gerente de ferramentas seja recompilado.
Formatador HyperProp
115
Para a disposição espacial das ferramentas, o executor utiliza um gerente de
layout, que converte as informações descritas nas janelas e regiões do layout do
documento (Seção 2.3.1.2) para janelas (classe javax.swing.JFrame) e painéis
(classe javax.swing.JPanel) oferecidos pela plataforma Java 2. O gerenciador
mantém também uma janela e uma região default que são utilizadas para exibir os
objetos que não apresentem a identificação correta da região em seus descritores.
O executor permanece como um observador dos elos causais, sendo
notificado toda vez que uma condição é satisfeita. O executor então coordena o
disparo das ações, cuidando de requisitar os serviços do gerenciador de
ferramentas, quando for necessário instanciar um novo exibidor. Se o executor
percebe que um objeto de execução parcialmente construído precisa ter o evento
de apresentação do seu conteúdo preparado, ou mesmo ter sua ocorrência iniciada,
o executor gera uma notificação ao formatador, que a repassa para objetos que
tenham se registrado como interessados nessa notificação. O formatador fica então
esperando que um novo contêiner lhe seja entregue contendo o objeto de execução
em questão completamente construído. A princípio, essa espera é independente do
transcorrer do restante da apresentação.
O executor possui implementado um elemento que monitora o início da
ocorrência dos eventos de apresentação e registra no plano de execução o instante
efetivo. O próximo passo do trabalho é desenvolver estratégias de ajuste que
corrijam o plano quando diferenças significativas entre os tempos programados e
os tempos efetivamente ocorridos forem percebidas. No entanto, é importante
destacar que, apesar de não dispor de adaptações e ajustes dos tempos na fase de
execução, o fato do plano de execução não ser um simples timeline, o fato do
disparo das ações ser baseado em um modelo de observação dos eventos e a
maneira como as ferramentas de exibição monitoram as máquinas de estados (o
monitoramento será explicado no final da próxima seção) já oferecem um suporte
a uma execução adaptativa das apresentações.
É também função do executor observar se as ações a serem disparadas
devem iniciar a execução de uma cadeia temporal parcial. Nesse caso, o executor
realiza a junção dessa cadeia auxiliar à cadeia principal do documento.
O formatador HyperProp oferece em sua interface botões que permitem
controlar a exibição como um todo. É permitido pausar, retomar e encerrar a
Formatador HyperProp
116
exibição a qualquer momento. O próximo passo é investigar a viabilidade de
dispor o formatador de meios para avançar ou adiantar o ponto da apresentação,
sem que isso comprometa em demasia a qualidade da apresentação.
5.3
Integração entre as ferramentas de exibição e o formatador
O sistema HyperProp possui implementadas ferramentas de exibição para
tratar o conteúdo dos principais tipos de mídia (texto, imagens, áudio e vídeo)
(Rodrigues, 2000; Rodrigues et al., 2001). A Figura 29 ilustra um resumo do
diagrama de classes para implementação das ferramentas de exibição. Todas as
ferramentas herdam, direta ou indiretamente, os atributos e métodos definidos na
classe PresentationTool, apresentada no Capítulo 3.
O sistema dispõe de uma ferramenta para exibição de texto HTML (classe
HtmlTextPresentationTool) que, para realizar a interpretação e formatação dos
conteúdos, utiliza as classes HTMLEditorKit e HTMLDocument, disponíveis nos
pacotes javax.swing.text.html e javax.swing.text.html.parser da plataforma padrão
Java 2 (J2SE). Além disso, a ferramenta implementa a interface HyperlinkListener
que lhe permite ser avisada sempre que ocorre algum evento de interação sobre
uma âncora HTML (elemento <a> da linguagem HTML) (W3C, 1999c).
<<Int erface>>
Controller
addControllerListener()
<<Interface>>
observation
realiz e()
ControllerList ener
prefetc h()
0..*
0..*
stop()
controllerUpdate()
setM ediaTime()
setStopTime()
deallocat e()
close()
PresentationTool
ExecutionObject
1..*
1
ImagePresentationTool
JmfPresentationTool
<<Int erface>>
Player
1
HtmlTextPresentationTool
1
1
1
1
FixedEventMonitor
start()
eventTable
Event
1
MediaPlayer
JmfAudioPresentat ionTool
JmfVideoPresentationTool
AdjustableEventMonitor
granularity
Figura 29 – Diagrama de classes das ferramentas de exibição.
event Table
Formatador HyperProp
117
Na etapa de preparação do objeto de execução, a ferramenta utiliza os
atributos posição e string das âncoras textuais contidas nos eventos relacionados a
ações do usuário (eventos das classes MouseClickEvent, MouseOverEvent e
FocusEvent – Seção 2.3.1.3), para identificar no conteúdo as regiões do texto que
devem estar sensíveis às respectivas interações. A ferramenta então insere,
dinamicamente, no conteúdo, as marcações HTML que oferecem os pontos de
interação. Essas marcações são incluídas no texto da seguinte forma: <a href =
”hprop://eventId”>âncora textual</a>. Toda vez que ocorre uma ação sobre
âncora, a ferramenta é sinalizada por uma chamada à sua implementação do
método hyperlinkUpdate, definido na interface HyperlinkListener. A ferramenta
então identifica o evento que foi selecionado (eventId) e gera em sua máquina de
estados a transição correspondente. A partir daí, o mecanismo de observação dos
elos faz com que o executor seja notificado da transição e, caso um ou mais elos
causais tenham suas condições satisfeitas, as ações dependentes dessa interação
sejam disparadas.
Essa abordagem permite reusar conteúdo HTML e inserir elos de outros
modelos, sem que seja necessário editar o conteúdo do objeto (Rodrigues &
Soares, 1998). A forma como os elos são colocados no nó também permite que
uma mesma página, dependendo da perspectiva (ou seja, do objeto de execução),
apresente diferentes regiões selecionadas ou mesmo diferentes ações para a
mesma região. A Figura 30 ilustra a interface da ferramenta de exibição para a
mídia texto, onde a palavra cantor(a) é uma âncora HTML inserida
dinamicamente pela ferramenta.
Textos podem ser exibidos com duração pré-definida, bastando para isso
que o evento de apresentação do conteúdo como um todo tenha uma duração
estipulada. Nesses casos, a ferramenta utiliza um monitor que controla os tempos
dos eventos de apresentação e gera as transições quando transcorre a duração
estipulada. Monitores de eventos serão discutidos em mais detalhes na descrição
das ferramentas para exibição de mídias contínuas.
Para imagens estáticas, o sistema possui uma ferramenta (classe
ImagePresentationTool), que utiliza o suporte da classe Image, presente no pacote
java.awt, para controlar a exibição das figuras. A ferramenta permite que sejam
definidas âncoras espaciais e temporais (Seção 2.3.1.1) e monitora a máquina de
Formatador HyperProp
118
estados para os eventos correspondentes. Da mesma forma que a ferramenta de
texto, imagens também podem ser apresentadas com durações pré-definidas,
sendo, para isso, utilizado o mesmo tipo de monitor citado anteriormente.
Trecho do código HTML
correspondente. Em
itálico e negrito está o
código inserido
dinamicamente pela
ferramenta
...
<p align=“right”>
<a href=“hprop://1>cantor(a)</a>
...
Figura 30 – Ferramenta de exibição de texto no formato HTML.
Para mídias contínuas, as ferramentas do sistema foram implementadas
utilizando exibidores JMF (Java Media Framework), disponíveis no framework
oferecido pela Sun Microsystems (Sun, 1999). O JMF é um pacote de classes e
interfaces que oferece suporte à apresentação dos principais formatos de conteúdo
dinâmico (PCM, MPEG-1, MP3 etc.).
Foi criada no sistema uma classe, chamada JmfPresentationTool, que reúne
as características comuns às ferramentas baseadas nos exibidores JMF. Essa classe
herda
da
classe
PresentationTool
e
dela
herdam
duas
subclasses:
JmfAudioPresentationTool (para exibição de áudio) e JmfVideoPresentationTool
(para exibição de vídeo). Como essas ferramentas utilizam os próprios exibidores
JMF (os players JMF), as respectivas classes atuam, na verdade, como
adaptadores para a API oferecida pelo framework da Sun, realizando o
mapeamento entre a interface definida na Seção 3.3.1 e a API oferecida pelo JMF.
A Figura 31 ilustra a ferramenta de exibição JMF exibindo um vídeo no formato
MPEG-1.
Formatador HyperProp
119
Figura 31 – Ferramenta de exibição integrada a exibidores JMF.
No diagrama da Figura 29, as classes e interfaces com fundo cinza fazem
parte do pacote da Sun. A interface Player é implementada pelos exibidores JMF
(classes que herdam de MediaPlayer). A função de um Player é processar um
fluxo de dados de uma mídia contínua e apresentá-lo nos dispositivos de saída,
eventualmente oferecendo alguns componentes gráficos para permitir que o
usuário interaja com a apresentação. Todo Player estende a interface Controller.
Um Controller define uma máquina de estados, ilustrada na Figura 32, que
descreve o funcionamento do exibidor JMF e, por conseqüência, o evento de
apresentação do conteúdo do objeto de execução sendo exibido. Transições na
máquina de estados são notificadas para aqueles que tenham se registrado como
observadores
do
exibidor
JMF,
através
da
chamada
ao
método
addControllerListener. Todo observador deve ser instância de uma classe que
implemente a interface ControllerListener, pois as notificações ocorrem através de
chamadas
ao
método
controllerUpdate.
Dessa
forma,
a
classe
JmfPresentationTool implementa a interface ControllerListener, já que, como um
adaptador, ela necessita monitorar o estado do exibidor JMF.
Formatador HyperProp
realize
Unrealized
deallocate
120
RealizeCompleteEvent
Realizing
prefetch
Realized
PrefetchCompleteEvent
Prefetching
deallocate
setMediaTime
start
Prefetched
Started
stop
StopEvent
Figura 32 – Máquina de estados de um exibidor JMF
Quando um exibidor JMF é criado, ele se encontra no estado unrealized. A
chamada ao método realize, faz com que o exibidor passe para o estado realizing,
iniciando o processo de verificação e alocação de alguns dos recursos necessários.
Ao final desse processo, seu estado torna-se realized, onde já possui informação
sobre o tipo de mídia que irá apresentar. O método prefetch leva o exibidor para o
estado prefetching, onde é iniciado o processo de carregamento do conteúdo a ser
apresentado. Ao passar para o estado prefetched, o exibidor está pronto para
iniciar a apresentação da mídia. No momento em que o método start é invocado, o
exibidor passa para o estado started, quando efetivamente começa a apresentação.
Um exibidor JMF no estado started retorna ao estado prefetched quando o método
stop é chamado, quando atinge o fim da apresentação ou quando a transmissão dos
dados é interrompida. Além de notificar as transições em seus estados, um
exibidor também notifica seus observadores quando é destruído e quando ocorrem
alterações nos valores de seus atributos, tais como duração e taxa de exibição.
Além dos métodos que geram transições na máquina de estados (realize,
prefetch, start e stop), o exibidor JMF oferece outros dois importantes métodos
em sua interface: setMediaTime, que permite alterar a posição corrente no fluxo da
mídia, e setStopTime, que possibilita estabelecer a posição no fluxo da mídia onde
a apresentação será interrompida22.
Como pode ser percebido, é grande a semelhança entre a máquina de estados
dos eventos de apresentação (Figura 8) e a máquina de estados de um exibidor
JMF. Conseqüentemente, são também similares os métodos oferecidos pela classe
PresentationTool (Tabela 4) e pela interface Controller. A Tabela 5 resume a
22 Os métodos setMediaTime, setStopTime e stop são, na realidade, definidos na interface Clock,
da qual deriva a interface Controller. Porém, essa e algumas outras interfaces e classes do JMF
foram omitidas para que os diagramas não ficassem sobrecarregados.
Formatador HyperProp
121
maneira como é feita a conversão entre as duas interfaces, destacando apenas os
métodos definidos na Seção 3.3.1 relevantes para o mapeamento.
Métodos de PresentationTool
Métodos correspondentes para o exibidor JMF
initialize(exObj)
realize()
prepare(exObj, evt)
setMediaTime(Ti) + setStopTime(Tf) + prefetch()
start(exObj, evt)
start()
stop(exObj, evt)
stop() + setMediaTime(Ti)
pause(exObj, evt)
stop()
resume(exObj, evt)
start()
abort(exObj, evt)
stop() + setMediaTime(Ti)
Unprepare(exObj, evt)
deallocate() + close()
Ti = instante de início da apresentação de E, Tf = instante de término da apresentação de E
Tabela 5 – Mapeamento entre ações solicitadas pelo formatador e os métodos invocados
no exibidor JMF.
A iniciação da ferramenta JMF reflete na preparação do exibidor JMF,
representada pela chamada ao seu método realize. A ação prepare resulta na
chamada a três métodos do exibidor. O método setMediaTime estabelece a
posição no fluxo de mídia onde a apresentação será iniciada, enquanto o método
setStopTime especifica a posição de término da apresentação. Chamadas a esses
dois métodos são realizadas com base nos instantes de início e término do evento
passado como parâmetro na preparação (ou mesmo pedido de disparo da
exibição). Se o evento for o objeto inteiro e a duração não estiver explicitada, os
métodos setMediaTime e setStopTime não precisam ser chamados, fazendo com
que a apresentação seja conduzida do princípio do conteúdo até o seu término
natural, ou até que seja interrompida pelo usuário. Após a definição das posições
de início e fim da apresentação, o método prefetch é acionado para disparar a
busca do conteúdo. A ação start causa uma chamada ao método start do exibidor
JMF, enquanto a ação stop gera uma chamada ao método stop do exibidor,
seguida de uma chamada ao método setMediaTime, para recolocar a exibição em
seu ponto inicial, pois o método stop do JMF possui a semântica de simples pausa.
Por esse motivo, a ação pause gera apenas uma chamada ao método stop do
exibidor. Por sua vez, a ação resume reinicia a exibição a partir do ponto onde ela
foi interrompida, através de uma nova chamada ao método start do exibidor JMF.
A ação abort finaliza a apresentação, de modo semelhante à ação stop, porém
fazendo com que os eventos que estejam no estado ocorrendo ou suspenso passem
Formatador HyperProp
122
instantaneamente pelo estado abortado antes de retornar ao estado preparado. Por
fim, a ação unprepare libera os recursos ocupados pelo exibidor, sendo ignorada
se algum evento estiver ocorrendo ou suspenso. Para os métodos unprepare, stop,
pause, resume e abort o evento passado como parâmetro pode ser nulo, pois o
mesmo não é considerado. Essas ações são sempre aplicadas em todos os eventos
passíveis de terem em suas máquinas de estados as respectivas transições
realizadas.
Outra função importante da ferramenta/adaptador JMF é interceptar as
notificações geradas pelo exibidor JMF e efetuar a tradução para o modelo de
máquinas de estados de eventos utilizado pelo formatador. Os principais tipos de
notificação gerados pelos exibidores JMF são: final do carregamento do conteúdo
necessário para iniciar a exibição (PrefetchCompleteEvent); início da exibição
(StartEvent); suspensão da exibição por chamada explícita ao exibidor
(StopByRequestEvent); final da exibição por alcance do tempo de término
previamente estabelecido (StopAtTimeEvent); final da exibição por término
natural (EndOfMediaEvent); e destruição do exibidor (ControllerClosedEvent). A
Tabela 6 apresenta o mapeamento dos diferentes tipos de sinalizações dos
exibidores JMF para as transições correspondentes na máquina de estados dos
eventos de apresentação.
Sinalizações do exibidor JMF
Transições no estado do evento de apresentação
PrefetchCompleteEvent
preparando preparado
StartEvent
preparado | suspenso ocorrendo
StopByRequestEvent
em resposta ao método stop
ocorrendo | suspenso preparado
em resposta ao método pause
ocorrendo suspenso
em resposta ao método abort
ocorrendo | suspenso abortado preparado
StopAtTimeEvent
ocorrendo preparado
EndOfMediaEvent
ocorrendo preparado
ControllerClosedEvent
ocorrendo | suspenso abortado preparado
Tabela 6 – Mapeamento entre notificações do exibidor JMF e transições de estado do
evento de apresentação
Nesse ponto cabe destacar uma importante distinção entre a API JMF e a
interface para integração com formatadores proposta neste trabalho. Enquanto as
ferramentas de exibição devem controlar uma máquina de estados para cada
Formatador HyperProp
123
evento/âncora do objeto sendo exibido, de uma forma mais limitada, os exibidores
JMF trabalham com apenas uma máquina de estados, correspondendo, na maioria
das vezes, ao objeto como um todo. As ferramentas JMF implementadas no
formatador HyperProp utilizam monitores temporais, descritos a seguir, para
alcançar esse controle mais granular das exibições dos objetos.
5.3.1
Monitorando os tempos dos eventos de apresentação
Enquanto um evento de apresentação, definido por um intervalo temporal I
(evento externo), permanece no estado ocorrendo, outros eventos de apresentação
do mesmo objeto, definidos em subintervalos de I (eventos internos), podem
ocorrer também. Uma funcionalidade que deve estar presente nas ferramentas de
exibição, principalmente as de mídia contínua, é a capacidade de sinalizar o início
e o fim da exibição de todos os eventos de apresentação que venham a ocorrer na
exibição de um objeto. Isso permite definir relações de sincronização entre subregiões temporais dos objetos, conforme ilustrado no Exemplo 1 da Seção 2.3.2.1.
No exemplo, a apresentação do vídeo V1 corresponde ao evento externo, enquanto
ev1 corresponde a um evento interno. Entretanto, esse controle granular, que é
oferecido de uma forma simples pela interface proposta nesta tese, não é trivial de
ser obtido através da API dos exibidores JMF. Sendo assim, efetuar essa
adaptação
constitui-se
em
uma
tarefa
importante
para
a
classe
JmfPresentationTool e uma das principais contribuições dessa implementação. De
fato, é essa adaptação que permite transformar a máquina de estados única do JMF
nas várias máquinas de estados dos eventos de um objeto de execução.
Quando iniciada, a ferramenta percorre a lista de eventos do objeto de
execução e identifica as âncoras dos eventos de apresentação que precisam ter
suas ocorrências controladas. A maneira como são especificados os tempos que
delimitam o intervalo da âncora de um evento de apresentação pode variar e é
importante que seja tratada pela ferramenta. Os delimitadores da região podem
definir explicitamente unidades de tempo medidas em relação ao início da
apresentação do objeto como um todo, sem levar em consideração variações na
taxa de exibição da mídia (eventos fixos – âncoras da classe TimeIntervalAnchor,
definida na Seção 2.3.1.1). Nesse caso, a ferramenta precisa guiar-se apenas pelo
Formatador HyperProp
124
relógio do sistema (relógio da máquina em que estiver executando). De uma outra
forma, as extremidades da região temporal podem estar associadas a unidades de
informação específicas do conteúdo, como por exemplo quadros de um vídeo ou
amostras
de
um
áudio
(eventos
ajustáveis
–
âncoras
da
classe
SampleIntervalAnchor, definida na Seção 2.3.1.1). Nesse modo de definição, a
ferramenta deve ter um controle exato sobre a taxa de apresentação da mídia, pois
variações devem refletir em atualizações nos instantes de delimitação do intervalo
temporal que o evento especifica.
Para auxiliar no controle dos eventos de apresentação, a ferramenta
JmfPresentationTool possui dois monitores (Figura 29). O monitor não ajustável
(FixedEventMonitor) auxilia no controle dos eventos fixos do objeto, enquanto o
monitor ajustável (AdjustableEventMonitor) controla os eventos ajustáveis.
Ambos os monitores constróem tabelas com registros que contêm as seguintes
informações: a identificação do evento, o tipo da transição (início ou fim da
apresentação da região em questão), o instante de tempo esperado para que a
transição aconteça e se a transição está ou não habilitada. As tabelas de eventos
têm seus registros ordenados de forma crescente pelos instantes de tempo
esperados para as transições.
A habilitação de uma transição depende do ponto em que o conteúdo do
objeto começa a ser exibido, pois dependendo do evento de apresentação inicial,
algumas máquinas de estados não devem ser consideradas pela ferramenta de
exibição. A Tabela 7 resume as regras adotadas pelos monitores das ferramentas
JMF para decidir quais transições devem ou não estar habilitadas na tabela de
eventos. Essas regras são baseadas nas relações entre o intervalo do evento
solicitado para ser apresentado (evento α) e o intervalo de qualquer outro evento
de apresentação do objeto (evento β). Na tabela, é considerado que os eventos α e
β possuem intervalos de duração [Tαi, Tαf] e [Tβi, Tβf], respectivamente.
Os monitores de eventos são implementados como threads, disparadas pela
própria ferramenta. O monitor não ajustável possui um funcionamento bastante
simples. Quando iniciado, ele procura o primeiro registro na tabela que esteja
habilitado e consulta o tempo esperado para a transição. Em seguida, ele se coloca
para dormir até que esse instante seja alcançado. Quando acorda, o monitor
simplesmente coloca o evento no estado adequado (ocorrendo se for uma
Formatador HyperProp
125
transição de início e preparado se for uma transição de fim), procura na tabela o
próximo registro habilitado e volta a dormir até que o novo instante de tempo
previsto seja atingido.
Relação
Temporal
Ilustração da Relação
Tαi > Tβi
α
OU
β
β
α permanecerão habilitadas. As
α
β
α
β
As transições de início e de fim de
α
α
α
Tαf ≤ Tβi
β
Regra
β
transições
α
do
evento
β
serão
desabilitadas, pois a máquina de
β
estados
de
β
deverá
ser
desconsiderada.
Tαi ≤ Tβi < Tαf
Todas as transições permanecerão
α
E
α
β
habilitadas. No entanto, o fim da
β
ocorrência de α irá causar o corte
Tαf < Tβf
na apresentação de β. Dessa forma,
o evento β retornará para o estado
preparado prematuramente.
Tαi ≤ Tβi
E
Tαf ≥ Tβf
β
α
β
α
β
α
α
Todas as transições permanecerão
β
habilitadas e serão notificadas se
não houver uma intervenção externa
do usuário.
Tabela 7 – Regras para habilitação dos eventos de apresentação.
O monitor ajustável possui um funcionamento mais elaborado. Essa maior
complexidade vem do fato da taxa de exibição do objeto de mídia poder variar por
fatores imprevisíveis, tais como atrasos nos sistemas de comunicação e
operacional ou interações diretas do usuário com os botões de controle da
ferramenta (barra de controle inferior na Figura 31). Isso torna impossível para o
monitor estimar, de maneira precisa, o tempo que deve dormir até uma próxima
transição. Além disso, a API JMF não oferece uma forma para que os
observadores de seus exibidores se registrem para serem notificados quando
pontos internos da exibição do objeto forem atingidos. Por essas razões, o monitor
ajustável realiza sucessivas verificações junto ao exibidor JMF para saber o
instante de exibição corrente do conteúdo. O intervalo entre verificações é dado
pela variável granularity do monitor, que pode ser configurada. Evidentemente, se
Formatador HyperProp
126
a freqüência de verificação for alta, ocorrerá uma sobrecarga na utilização da
CPU. Por outro lado, se a freqüência for baixa, poderá haver uma imprecisão nos
instantes de notificação. Quando a ferramenta tem a taxa de apresentação da mídia
alterada, tanto pela ação do usuário como do formatador, a granularidade
configurada no monitor é também modificada proporcionalmente.
Após cada verificação, o monitor ajustável procura por transições
habilitadas cujo tempo esperado tenha sido alcançado, ou mesmo ultrapassado, e
que ainda não tenham sido sinalizadas para o formatador. Se houver alguma, o
monitor efetua a transição correspondente na máquina de estados do evento, da
mesma forma que o monitor não ajustável.
Os monitores também observam alguns aspectos imprevisíveis da
apresentação para corrigir suas posições correntes nas tabelas, recalcular os
tempos em que devem dormir e acertar os estados dos eventos que estão sendo
monitorados. Um caso que exige correção é quando o usuário modifica o ponto de
apresentação da mídia.
Os monitores oferecem métodos que permitem que eles sejam pausados,
retomados no controle ou tenham sua execução encerrada. Esse controle é feito
pela ferramenta JMF, respondendo a chamadas aos seus métodos pause, resume,
abort e stop.
Por uma questão de simplificação, quando a apresentação de um evento
acaba de ser preparada pela ação prepara, todos os eventos de apresentação cujas
transições permaneceram habilitadas são também colocados no estado preparado.
Isso permite que, à medida que as suas regiões sejam apresentadas, os eventos
associados passem diretamente do estado preparado para o estado ocorrendo.
Por fim, cabe mencionar que as ferramentas de exibição desenvolvidas
também são capazes de tratar os eventos de seleção em regiões espaciais dos
objetos, assim como a especificação de eventos que combinam apresentação e
seleção. Maiores detalhes podem ser obtidos na referência (Rodrigues, 2000).
Formatador HyperProp
127
5.4
Mecanismo de pré-busca
Uma instanciação simplificada do framework apresentado na Seção 4.1.1 foi
realizada com o intuito de incorporar mecanismos de pré-busca ao formatador do
sistema HyperProp (Rodrigues & Soares, 2002).
O trabalho de instanciação do framework resultou nas implementações de
estratégias de compilação e de escalonamento para o plano de pré-busca e de um
módulo que estima os parâmetros para o cálculo dos tempos de busca
simplificado. O formatador HyperProp dispõe de duas estratégias de compilação
da pré-busca: uma que não leva em consideração o paralelismo das buscas e outra
que coloca as buscas em série e impõe um retardo inicial para o início da
apresentação do documento, para compensar as latências de exibição excedentes
já antevistas pelo compilador de pré-busca. A heurística para o cálculo das
durações de busca leva em conta, não apenas os tempos gastos na transmissão e
carregamento em memória dos conteúdos, mas também o custo de criação e
preparação das próprias ferramentas (principalmente os players JMF). Na
implementação atual, o plano de pré-busca leva em consideração apenas a cadeia
temporal principal, não prevendo a busca para os objetos inseridos nas cadeias
auxiliares.
A execução da pré-busca é feita com um escalonador que opera sinalizando
para o executor HyperProp os momentos para requisitar a instanciação (se for o
caso) de uma ferramenta e a preparação do evento de apresentação correspondente
ao conteúdo do objeto que deve ser buscado.
Os próximos passos do trabalho envolvem a integração do módulo que
estima os parâmetros de busca com um suporte real de gerência de contexto, a
implementação dos mecanismos de ajuste do plano de pré-busca em tempo de
execução, a integração com mecanismos de reserva e, futuramente, a investigação
do uso de mecanismos de reserva antecipada. Esses dois últimos pontos envolvem
também a implementação do módulo de gerência de orquestração intra-mídia no
formatador.
Ainda como trabalhos futuros, pretende-se incluir no formatador HyperProp
estratégias que construam o plano de pré-busca levando em consideração a
Formatador HyperProp
128
probabilidade de navegação do usuário e que desempenhem uma gerência da
ocupação dos buffers.
5.5
Ajuste dos tempos elásticos e escolha das alternativas
O principal recurso de adaptação disponível na implementação atual do
formatador HyperProp é o ajuste das durações flexíveis, feito em tempo de
compilação. Para desempenhar essa tarefa, o compilador de adaptação possui uma
estratégia de ajuste que utiliza um programa externo, integrado ao formatador em
um projeto de cooperação que vem sendo desenvolvido com o grupo francês de
pesquisa em otimização da Universidade Blaise Pascal (Bachelet et al., 2000).
O compilador HyperProp constrói as cadeias temporais e as entrega, uma a
uma, para o módulo adaptador, que repassa o pedido de adaptação para a
estratégia de ajuste de tempo de compilação (Seção 4.3.2). A estratégia de ajuste
então utiliza as relações impostas pelo autor e as funções de custo definidas para
as durações dos eventos para obter as durações esperadas. O cálculo é feito de tal
maneira que o custo total para deslocar as durações dos seus valores ideais seja
minimizado.
A implementação da estratégia de adaptação é, na verdade, dividida em duas
partes:
um
programa
executável
(ferramenta
solve_tension.exe)23,
que
efetivamente calcula a solução ótima para as durações, e uma classe Java, que faz
a ponte entre a ferramenta externa e o formatador HyperProp. A troca dos dados
entre esses dois componentes é feita através de dois arquivos, um que contém a
descrição do grafo esperado pela ferramenta e outro que possui os resultados da
otimização. As informações obtidas são então utilizadas pela classe Java para
iniciar o valor esperado das durações dos eventos não instantâneos e até mesmo
dos tempos de espera para execução das ações dos elos causais (Seção 2.3.2.1).
A ferramenta de otimização utilizada pelo formatador HyperProp resolve o
problema de minimização do custo total de reduzir ou aumentar a duração dos
objetos como um problema de custo mínimo em um grafo de tensões (Bachelet et
al., 2000). A ferramenta espera as informações de duração nas arestas do grafo,
23
http://www.nawouak.net/?doc=bpp_library+ch=bpp_tools
Formatador HyperProp
129
que devem ser descritas como funções de custo lineares, piece-wise e do tipo
convexa. O grafo construído pela classe Java que realiza a comunicação com a
ferramenta é uma simplificação de cada uma das cadeias temporais. Cada nó do
grafo representa a transição na máquina de estados de um evento não interativo
(normalmente, eventos de apresentação, mas outros eventos como os de atribuição
também podem estar presentes). Para cada objeto de execução que deve ser
exibido, apenas o evento de apresentação mais externo (Seção 5.3.1) é inserido no
grafo, sendo colocada uma aresta entre as transições de início e fim da ocorrência,
contendo a função de custo que descreve a duração do evento. Arestas entre
transições relacionadas como condições e ações de elos causais, ou entre
transições que façam parte de uma mesma restrição temporal, também são
acrescentadas ao grafo.
A estratégia de ajuste dos tempos elásticos também pode receber,
opcionalmente, uma função de custo para a duração da cadeia como um todo.
Quando presente, essa informação resulta na inserção de uma aresta paralela ao
grafo inteiro.
A utilização do algoritmo de ajuste como uma ferramenta externa e
dependente de plataforma limita a portabilidade do formatador. Além disso, a
necessidade de iniciar um processo externo e trocar os dados através de arquivos
impõe retardos que provavelmente inviabilizarão o uso do algoritmo para ajustar
as durações em tempo de execução. Por outro lado, ter a ferramenta em código
executável diminui o tempo de resposta do cálculo. Como nesse primeiro estágio,
o foco do trabalho era a integração das pesquisas e a colocação do formatador
como uma aplicação usuária das propostas de otimização desenvolvidas no projeto
de cooperação, os objetivos iniciais foram alcançados. A perda da portabilidade é
minimizada com a disponibilidade do código da ferramenta e das bibliotecas
utilizadas, que podem ser compiladas para outras plataformas alvo.
Como próximo passo na integração das implementações, está a eliminação
dos arquivos como meio para troca dos dados entre os dois sistemas e a inclusão
de uma API implementada em Java pela ferramenta de otimização para receber os
dados e devolver o resultado do ajuste. Outra modificação para favorecer o ajuste
em tempo de execução é procurar manter a ferramenta de otimização em memória,
sem que um novo processo tenha que ser iniciado a cada vez. Finalmente, cabe
Formatador HyperProp
130
uma tentativa de implementar uma versão da ferramenta em Java e estabelecer
uma comparação da eficiência com a abordagem utilizando código nativo.
Além do ajuste dos tempos elásticos, o módulo de adaptação oferece um
método para realizar a seleção de uma alternativa de objeto de execução. As regras
de exibição são avaliadas com base nos valores de parâmetros retornados pelo
proxy de informações contextuais. Na versão atual, os parâmetros são mantidos de
maneira estática, mas com a integração ao mecanismo de gerência de contexto,
espera-se que seja possível realizar adaptações dinâmicas, sem que isso implique
em modificações na estrutura e implementação do formatador.
Trabalhos Relacionados
131
6
Trabalhos Relacionados
Este capítulo busca oferecer uma visão das pesquisas relacionadas ao tema
desta tese e compará-las com as proposições que foram colocadas ao longo deste
trabalho. Com o objetivo de organizar as comparações, o capítulo as divide em
quatro seções. A primeira seção comenta os trabalhos que tratam da questão da
estruturação dos formatadores e orquestração das apresentações de uma maneira
geral. As outras três seções tratam das características mais específicas do projeto
de ambientes de execução: a segunda seção comenta os esforços para a integração
de ferramentas de exibição em ambientes de apresentação hipermídia; a terceira
seção apresenta uma comparação com os trabalhos que focam nos mecanismos de
pré-busca para exibição de hiperdocumentos; e, por fim, a quarta e última seção
do capítulo comenta a respeito dos trabalhos que oferecem suporte à adaptação
das apresentações, com interesse maior no ajuste dos tempos elásticos.
6.1
Formatadores multimídia/hipermídia
Para praticamente todos os modelos, linguagens e sistemas citados no
princípio do Capítulo 2 (Seção 2.1.1.1), existe pelo menos um protótipo de
formatador implementado. No entanto, como são diversas propostas na literatura,
esta seção restringiu os comentários e comparações apenas às propostas cujas
idéias contribuíram diretamente para a constituição da arquitetura definida nesta
tese.
O sistema Firefly (Buchanan & Zellweger, 1992; Buchanan & Zellweger,
1993a; Buchanan & Zellweger, 1993b) foi desenvolvido com o objetivo de
fornecer facilidades para criação, edição, manutenção e apresentação de
documentos multimídia/hipermídia. Pioneiro na definição do termo formatador
como denominação ao controlador das apresentações, o sistema trouxe várias
contribuições para esta tese.
Trabalhos Relacionados
132
O sistema é baseado em um modelo constituído por objetos de execução
(media items), compostos por um conteúdo, um conjunto de procedimentos e uma
lista de eventos. Os eventos podem ser síncronos ou assíncronos e são sempre
instantâneos, correspondendo, na maioria das vezes, às transições do modelo de
execução definido no Capítulo 2. Para cada par de eventos adjacentes, o sistema
permite definir durações como funções de custo lineares do tipo piece-wise, com
apenas dois segmentos, similar à função ilustrada na Figura 26c. Os
relacionamentos no modelo são definidos como restrições temporais entre
eventos, podendo ser especificados como equações ou inequações. Além disso,
cada evento pode ter a ele associada uma lista de operações que permitem
controlar os aspectos de apresentação do objeto de execução.
A arquitetura do formatador Firefly separa o controle da apresentação em
duas fases, uma de compilação e outra de execução e estabelece a noção de
cadeias temporais, sendo uma principal (main schedule) e as outras auxiliares
(auxiliary schedules). Cada cadeia relaciona todos os eventos síncronos
associados por alguma restrição temporal, ou pertencentes a um mesmo objeto de
execução que tenha tido algum evento inserido na cadeia. Conforme já
comentado, essa proposta exerceu influência sobre a definição da arquitetura de
formatação e dos planos de execução descritos neste trabalho.
O compilador, com base nas restrições temporais e nas funções de custo das
durações, calcula os tempos esperados para ocorrência de cada evento. Isso é feito
para cada cadeia de maneira independente.
Uma vez iniciada a apresentação, o módulo de execução inicia um
escalonador e um tratador de eventos. O escalonador monitora a cadeia principal
e, com base em um relógio de execução, envia comandos para as ferramentas de
exibição (media managers), quando os tempos programados pelo compilador são
alcançados. O tratador de eventos observa as sinalizações dos eventos informados
pelas ferramentas e, quando percebe que uma cadeia auxiliar deve ser iniciada,
requisita ao escalonador a sua junção com a cadeia principal. O escalonador
também realiza, baseado nas listas de operações, um controle de ativação e
desativação dos eventos, mantendo o tratador informado para que não seja
solicitada uma junção a partir de eventos que não estejam ativos no momento.
Trabalhos Relacionados
133
Como pode ser percebido, uma vez iniciada a apresentação do documento, o
plano de execução torna-se um timeline das ações a serem desempenhadas. A
arquitetura simples do formatador não dispõe de componentes para ajustar a
exibição em função de variações na banda passante, por exemplo. O modelo de
documentos também não prevê adaptações diferentes do ajuste elástico dos
tempos, tais como seleção de alternativas. Módulos para pré-busca dos conteúdos
também não são considerados como fazendo parte do formatador.
Madeus (Jourdan et al., 1998a; Jourdan et al., 1998b; Sabry-Ismail et al.,
1999) é um sistema para autoria e apresentação de documentos multimídia com
interatividade, baseado em um modelo de restrições temporais e espaciais entre os
objetos de execução (media objects).
As restrições espaciais utilizam os operadores alinhar, centralizar e
deslocar tanto em relação ao eixo horizontal como o eixo vertical, enquanto as
restrições temporais baseiam-se nas relações de Allen (Allen, 1983). O modelo
permite que os objetos sejam sincronizados simultaneamente no tempo e no
espaço. O modelo também oferece hiper-elos para a especificação de
relacionamentos de navegação tradicionais entre os objetos.
Todo objeto tem a ele associada uma duração flexível, que informa limites
inferior e superior para a sua apresentação. O ambiente de execução do sistema
Madeus possui um formatador (Sabry-Ismail et al., 1999) que calcula, em uma
fase de compilação, o valor esperado para a duração de cada objeto, denominada
duração nominal. O modelo define como objetos incontroláveis aqueles que não
podem ter a sua duração esperada conhecida até que sua exibição termine. De
maneira oposta, os objetos que possuem uma duração nominal calculada pelo
compilador são classificados como controláveis.
A compilação e o controle da execução do documento são feitos a partir da
construção de um grafo temporal, denominado HTSP (Hypergraph of Simple
Temporal Problems), que funciona como o plano de execução do formatador
Madeus (Jourdan et al., 1998a).
Na fase de execução, o formatador observa os tempos efetivos das durações
e os compara com as durações programadas. Quando alguma variação que cause
uma perda de sincronização na apresentação é identificada, o formatador aplica
um algoritmo de ajuste. O executor Madeus também observa os instantes em que
Trabalhos Relacionados
134
os objetos incontroláveis terminam de ser exibidos para verificar se isso resulta na
necessidade de algum ajuste das durações.
O formatador Madeus não aborda as questões relacionadas à orquestração da
pré-busca. O mecanismo de adaptação do formatador permite recuperar o
sincronismo da apresentação sempre que percebe alguma divergência com o plano
programado, no entanto, esse ajuste é feito buscando restabelecer o sincronismo o
mais rapidamente possível, sem que seja utilizada qualquer medida de qualidade.
Outras técnicas de adaptação orientada ao contexto, como seleção de alternativas,
não são comentadas nas referências citadas.
O formatador CMIFed, denominado CMIFed player, é o elemento
responsável pelo controle da apresentação de documentos CMIF (CWI Multimedia
Interchange Format) (van Rossum et al., 1993; Hardman et al., 1993b). As
entidades presentes nesse modelo são praticamente as mesmas da linguagem
SMIL (W3C, 1998; W3C, 2001a), e o seu formatador deu origem a um dos
principais formatadores SMIL (ou player SMIL): o sistema GRiNS da Oratrix
(Oratrix, 2002). Além do GRiNS, outro exemplo de formatador implementado
para a linguagem SMIL versão 2.0 é a plataforma RealOne, da RealNetworks.
Existe ainda um suporte oferecido pelo browser Internet Explorer 6.0 à proposta
de padrão XHTML+SMIL Profile (W3C, 2001b), também baseada na linguagem
SMIL. A comparação nesta seção será feita com relação às funcionalidades do
formatador CMIFed.
Quando um usuário requisita a exibição de um documento CMIF, o
formatador entra em uma fase de compilação, onde um grafo de dependências
temporais é construído. No grafo, os nós representam transições em estados dos
eventos de apresentação (pontos de sincronização) e as arestas são relações
temporais entre os eventos. Inicialmente, o grafo é construído percorrendo a
hierarquia do documento em profundidade, utilizando apenas as restrições
temporais especificadas pelas composições paralelo e seqüencial oferecidas pelo
modelo de documentos (van Rossum et al. 1993; W3C, 1998; W3C, 2001a). Em
um passo seguinte, arestas representando os relacionamentos especificados por
sync arcs (do modelo CMIF) são acrescidas. Quando um arco de sincronismo é
definido utilizando uma marcação que não seja o início ou fim de um evento, um
novo nó e novas arestas ligando a marcação a outras marcações do mesmo evento
Trabalhos Relacionados
135
são acrescidos ao grafo. Finalmente, dois nós especiais são definidos no plano de
execução (grafo), o start node e o end node. O start node é conectado, através de
uma aresta com duração nula, ao nó representando o início do primeiro evento a
ser exibido no documento. Da mesma forma, uma aresta também com duração
nula liga o nó que define o fim do último evento ao end node.
Construído o grafo, o formatador entra na fase de execução. Um relógio
interno é disparado e a execução feita utilizando um algoritmo que percorre o
grafo criado. Inicialmente, o start node é marcado. Quando um nó é marcado,
todas as arestas que partem desse nó recebem o valor do relógio de execução no
momento da marcação. Quando a duração especificada na aresta é completada, a
aresta é marcada. Quando todas as arestas que chegam em um nó são marcadas, o
nó é marcado. A execução termina quando o end node é marcado.
Ao simular uma execução e percorrer o grafo de dependências temporais, o
sistema é capaz de descobrir erros na especificação temporal, através da detecção
de caminhos fechados, e também conflitos por recursos. O grafo também permite
que o formatador faça pré-busca do conteúdo dos objetos. O formatador CMIF
realiza uma pré-busca simplificada, utilizando os momentos em que o formatador
encontra-se ocioso. A utilização de heurísticas de busca para eventos gerados por
pontos de sincronização imprevisíveis, bem como negociações de QoS para busca
dos conteúdos não são abordados na implementação. O sistema também não
aborda a questão dos ajustes das durações, trabalhando com tempos inflexíveis nas
arestas dos arcos. Na versão mais recente da linguagem SMIL (versão 2.0), essa
limitação foi eliminada com a introdução de um intervalo para especificação das
durações. No entanto, da mesma forma que no sistema Madeus, essa flexibilidade
não carrega consigo métricas para direcionar a qualidade do ajuste.
6.2
Integração entre formatadores e ferramentas de exibição
Os principais browsers WWW possuem uma API (Application Program
Interface) para programação de plug-ins, originalmente proposta pela Netscape
(Netscape, 1998), que permite que aplicações externas sejam incorporadas ao
ambiente de navegação da Web, principalmente para que formatos não
reconhecidos pelo browser sejam tratados em um ambiente único. Porém, plug-ins
Trabalhos Relacionados
136
não são ferramentas de exibição hipermídia e sim apenas ferramentas de exibição,
pois a sua API não oferece suporte para definição de relacionamentos entre
objetos apresentados em diferentes plug-ins, e até mesmo entre plug-ins e páginas
HTML. Na realidade, existem alguns mecanismos, como LiveConnect e ActiveX,
que permitem a integração de páginas HTML com plug-ins, e até mesmo com
outras tecnologias como scripts e applets. No entanto, esses mecanismos são
dependentes do browser utilizado (Netscape ou Internet Explorer) e baseados em
códigos de programação não triviais que devem ser embutidos nos próprios
objetos de mídia. Uma outra limitação da tecnologia é o fato do plug-in ter seu
ciclo de vida amarrado ao ciclo de vida da página HTML que o contém.
Bouvin e Schade (Bouvin & Schade, 1999) propõem extensões à API de
plug-ins com o principal objetivo de permitir a criação de elos entre objetos e subregiões desses objetos, independente da ferramenta (plug-in) que os exibe. Uma
vez que não era possível alterar a API utilizada pelos browsers existentes, os
autores implementaram um sistema, denominado Mimicry, utilizando applets Java
para emular os relacionamentos. Um proxy específico do sistema, chamado
DHMProxy, encarrega-se de substituir as marcações de plug-ins das páginas
(EMBED e OBJECT) por referências aos applets do sistema Mimicry. No entanto,
os elos que o sistema permite criar são sempre elos de interatividade, não havendo
suporte para a definição de relacionamentos de sincronização temporal entre os
objetos. Além disso, os autores não abordam os aspectos relacionados ao
desenvolvimento das ferramentas e suas integrações com o formatador hipermídia,
como foi feito com o framework apresentado no Capítulo 3 desta tese.
O modelo de execução do sistema Madeus (Jourdan et al., 1998a) define os
objetos de execução como sendo a própria ferramenta de exibição, adotando um
mecanismo de plugin para permitir a integração com objetos que devam ser
apresentados por aplicações externas. No entanto, a interface para comunicação é
uma simplificação da interface padrão para os objetos de execução que o ambiente
de execução sabe controlar. Essa simplificação obriga que os objetos de execução
controlados por plugins sejam tratados como objetos com durações imprevisíveis
(objetos incontroláveis), dificultando a manutenção das relações de restrição
temporal que o Madeus utiliza.
Trabalhos Relacionados
137
Diferente dos trabalhos anteriormente mencionados, esta tese propôs um
modelo de interface, genérico e adaptável, para integração de ferramentas de
exibição e formatadores hipermídia, que permite tratar igualmente todos os
objetos sendo exibidos, independente da aplicação exibidora que os controla. O
framework de integração das ferramentas permite que novas ferramentas de
exibição venham a ser incorporadas, e outras tantas existentes possam ser
adaptadas, funcionando de maneira integrada entre si e com o formatador
hipermídia. A construção de adaptadores para ferramentas que utilizam o JMF foi
apenas um exemplo de como o framework apresentado pode ser aplicado. No
momento, encontram-se, também em desenvolvimento, especializações para
integrar o formatador HyperProp a exibidores QuickTime e RealOne.
6.3
Mecanismos de pré-busca
Jeong et al. (Jeong et al., 1997) desenvolveram um mecanismo para efetuar
o pré-escalonamento de apresentações multimídia. O módulo de pré-busca,
denominado EPS (Event Pre-Scheduler), estima os tempos máximos para
recuperação de cada um dos objetos por inteiro e constrói um plano de pré-busca
para que todos os objetos estejam prontos antes de suas exibições. O algoritmo
para construção do plano de pré-busca retarda o início da apresentação do
documento como um todo, para evitar que durante a exibição ocorram “gaps” e
perdas de sincronização. A estrutura de dados do plano de execução, utilizada
como entrada para a construção do plano de pré-busca, baseia-se na divisão dos
objetos de mídia em segmentos mínimos que satisfazem, entre si, a condição de
igualdade (equals) de Allen (Allen, 1983). Durante a execução, existe um monitor
que compara o tempo de pré-busca de cada objeto com o tempo previsto no plano.
Sempre que esse tempo ultrapassa o limite previsto, um procedimento para
recalcular as durações de apresentação dos objetos é disparado a fim de manter a
sincronização dos segmentos. Quando necessário, o algoritmo sacrifica as mídias
estáticas, reduzindo suas durações. O aspecto interessante desse algoritmo é que
ele serve também para corrigir atrasos que tenham sido causados não apenas pelo
sistema operacional, mas pelo próprio processamento do mecanismo de pré-busca.
Trabalhos Relacionados
138
O EPS é um trabalho interessante porque apresenta, de uma maneira prática,
vários dos requisitos que devem ser considerados na elaboração de uma estratégia
de pré-busca. No entanto, a proposta considera apenas objetos com exibições
previsíveis e todos os conteúdos devem estar armazenados localmente (em disco)
e de maneira contígua, não sendo abordados aspectos referentes a transmissões na
rede. Além disso, o mecanismo funciona sempre carregando o conteúdo inteiro
dos objetos em memória antes das exibições, não existindo a possibilidade da
ferramenta de exibição consumir os dados em paralelo com a busca do conteúdo.
A proposta também limita o reajuste, em tempo de execução, apenas do plano de
execução do documento, não sendo previsto pela estratégia a possibilidade de
realizar correções no próprio plano de pré-busca.
Khan e Tao (Khan & Tao, 2001a; Khan & Tao, 2001b) estabelecem um
modelo que permite determinar a melhor seqüência de pré-busca para páginas
compostas na Web. Páginas compostas são aquelas que incluem, além do
tradicional texto HTML, referências a outros objetos como imagens, applets,
animações, vídeo, áudio etc. Essas páginas compostas são denominadas
composições hipermídia. Os autores definem uma classificação em três perfis para
os conteúdos dos elementos de uma composição, considerando os aspectos de
transmissão na rede: objetos de taxa constante (mídia CBR: áudio, vídeo etc.),
objetos de uma única rajada (mídia impulsiva: página HTML, imagens estáticas,
applets JAVA etc.) e objetos de múltiplas rajadas (mídia impulsiva em série:
documentos PDF de várias páginas, animações, apresentações em slides etc.). Um
modelo matemático permite calcular, para cada composição hipermídia, a
quantidade mínima de dados que deve ser trazida antes de sua exibição.
Juntamente com a informação de probabilidade de navegação em cada elo, o
trabalho demonstra qual é a melhor escolha para a construção do plano de
escalonamento, ou seja, qual a melhor ordem de busca para as páginas compostas.
Um algoritmo divide a largura de banda da rede para que as requisições de prébusca convivam com as requisições dos conteúdos sendo efetivamente
apresentados, sem que o desempenho dessas últimas requisições seja prejudicado.
O trabalho, no entanto, não contempla, a possibilidade de existirem
relacionamentos de sincronização temporal entre as mídias, na construção do
plano de pré-busca.
Trabalhos Relacionados
139
É importante observar que tanto o EPS como a proposta de Khan e Tao
poderiam ser implementados como instanciações do framework de pré-busca
definido nesta tese. As propostas poderiam estar presentes principalmente nas
implementações das estratégias de construção dos planos de pré-busca e de
estimativa do tempo de busca.
Em (Revel et al., 1996) foi desenvolvida a implementação de um módulo de
pré-busca, denominado Prefetcher, para copiar antecipadamente, do disco para a
memória principal, o conteúdo das aplicações multimídia, em especial vídeos
MPEG. O Prefetcher é implementado como um módulo integrado ao sistema
operacional, oferecendo uma interface para que as aplicações multimídia possam
descrever o padrão de acesso aos dados (tamanho dos quadros, taxa em que os
quadros serão consumidos, padrão de repetição dos quadros I, P e B etc.) e o
instante de tempo em que os dados serão necessários. A proposta permite que as
aplicações multimídia, após agendarem a apresentação, utilizem chamadas
tradicionais de entrada e saída para ter acesso aos dados. Internamente, o
Prefetcher cuida de enviar chamadas assíncronas ao sistema operacional, que
resultam numa pré-busca dos dados pelo próprio sistema operacional. Contudo, a
interface oferecida é bastante limitada, não prevendo chamadas para aplicações
que possuam uma quantidade mais variada de tipos de conteúdo e que permitam
exibições imprevisíveis. Além disso, o estudo da extensão da arquitetura para
ambientes distribuídos em rede é deixado como trabalho futuro.
Diferente da proposta desta tese, nenhum dos trabalhos comentados nesta
seção aborda a questão de integrar o mecanismo de pré-busca a funções de
provisão e gerência de QoS. Um outro ponto identificado é, com exceção do EPS,
as outras duas propostas não mencionam a possibilidade de que os resultados das
pré-buscas realimentem os planos de execução dos documentos.
6.4
Mecanismos de adaptação
Propostas para computação dos tempos elásticos em apresentações
multimídia/hipermídia têm sido endereçadas na literatura (Buchanan & Zellweger,
1993a; Kim & Song, 1995; Sabry-Ismail et al., 1999).
Trabalhos Relacionados
140
O algoritmo de ajuste do formatador Firefly (Buchanan & Zellweger, 1993a)
realiza o cálculo das durações ótimas através de programação linear e fazendo uso
do método simplex. No modelo de documentos utilizado pelo sistema, as durações
são definidas como funções de custo lineares, similares à exemplificada na Figura
26c.
Abordagem semelhante é utilizada pelo formatador do sistema Isis (Kim &
Song, 1995). No entanto, o cálculo de otimização das durações acrescenta a noção
de justiça na distribuição dos ajustes pelos objetos de mídia, procurando soluções
que minimizem o quanto cada objeto tem sua duração modificada, em troca de
uma maior quantidade de objetos tendo seus tempos de apresentação ajustados. O
mecanismo de ajuste também permite que o usuário imponha uma restrição de
duração global para uma cadeia temporal e é capaz de retornar não apenas a
solução ótima como também os limites de tempo mínimo e máximo possíveis para
a duração da apresentação da cadeia.
Tanto o formatador Firefly como o formatador Isis realizam o ajuste dos
tempos elásticos apenas na fase de compilação do documento. Além disso, a
utilização do método simplex de maneira eficiente para o cálculo da solução,
normalmente requer o uso de bibliotecas que necessitam de uma grande
quantidade de memória e disco, o que dificulta sua integração à aplicação. Outro
ponto a ser considerado é que pode ser que o aumento do número de objetos que
têm suas durações modificadas não seja uma boa estratégia, podendo ser mais
interessante em termos de esforço computacional, manter os ajustes em uma
quantidade mínima de elementos.
Diferente das abordagens anteriores, a ferramenta de ajuste utilizada pelo
formatador HyperProp não é baseada em programação linear, mas sim na
utilização de algoritmos para distribuir, com um custo mínimo, tensões e fluxos
em grafos de tensões (Bachelet et al., 2000). Essa abordagem faz com que as
estruturas de dados e bibliotecas necessárias para o cálculo sejam bem inferiores
às normalmente exigidas pela programação linear, com o custo de uma eficiência
aproximadamente duas vezes pior (Bachelet et al., 2000).
Apesar do pior desempenho, a utilização de grafos de tensão para modelar o
problema de ajuste dos tempos elástico trouxe uma nova visão e novas
perspectivas de algoritmos para solução do problema. Os métodos out-of-kilter
Trabalhos Relacionados
141
(Fulkerson, 1961) e dual cost scaling (Ahuja et al., 2000) são atualmente
suportados pela ferramenta utilizada no formatador HyperProp. Além disso, o uso
de novos métodos para os documentos com topologia do tipo série-paralelo
(Duffin, 1965) estão sendo investigados. Acredita-se que essa abordagem viabilize
a aplicação dos ajustes durante a execução dos documentos. Para isso, é preciso
que a estratégia de ajuste seja capaz de identificar nas cadeias temporais estruturas
que respeitem essa topologia.
O formatador do sistema Madeus (Sabry-Ismail et al., 1999) descreve uma
solução para ajuste em tempo de execução (on-the-fly) Uma vez que as durações
dos objetos são flexíveis, mas não dispõem de métricas de custo de alteração, a
estratégia de ajuste utiliza uma abordagem diferente. Quando o formatador
percebe uma violação nos tempos programados, o algoritmo de correção é
acionado para tentar encontrar uma nova configuração que reestabeleça os tempos
originalmente programados o mais rapidamente possível. A idéia da estratégia é
minimizar o período que o documento se encontra fora do sincronismo idealmente
imposto pelo autor, respeitando os limites para duração de cada objeto.
A característica de adaptação através de seleção de alternativas é possível de
ser encontrada nos formatadores SMIL, explorando o uso do elemento switch da
linguagem (W3C, 1998; W3C, 2001a), no formatador CMIFed, explorando o
conceito de canais e a possibilidade de torná-los habilitados ou não (Hardman et
al., 1993a; Hardman et al., 1993b; van Rossum et al., 1993) e na aplicação CardioOP (Klas et al., 1999), explorando os elementos de adaptação switch e query do
modelo de documentos ZyX (Boll & Klas, 1999).
Conclusões
142
7
Conclusões
Esta tese apresenta uma análise detalhada das principais questões envolvidas
no projeto e implementação de sistemas para controle de apresentações
hipermídia. Primeiramente (Capítulo 1), o trabalho posiciona a função de controle
da execução (formatação) dentro da arquitetura dos sistemas hipermídia. Em
seguida (Capítulo 2), a tese conduz um estudo das características comuns e
também das características desejáveis de serem encontradas nos modelos para
definição de hiperdocumentos. Foi possível constatar que, não somente a
descrição dos documentos, mas também informações contextuais externas aos
documentos são desejáveis de estarem disponíveis no momento da execução da
apresentação, pois é natural que a formatação dos documentos seja tratada como
uma aplicação orientada a contexto. A partir dos requisitos levantados, foi
definido um modelo de documentos orientado à máquina de controle
(formatador), baseado nos conceitos de eventos e elos. O modelo proposto permite
que as especificações dos documentos sejam flexíveis, buscando favorecer a
exploração das informações contextuais e a aplicação de técnicas de adaptação. O
modelo também procura ser genérico e extensível para acomodar o controle de
apresentações descritas em modelos de autoria hipermídia.
O passo seguinte do trabalho foi levantar os requisitos para o ambiente de
execução hipermídia e, em especial, as funcionalidades desejáveis de serem
encontradas nas implementações de formatadores. Nesse sentido, os Capítulos 3 e
4 discutem a estruturação dos componentes de formação, a integração entre
ferramentas de exibição e formatadores, a integração entre ferramentas de
diferentes desenvolvedores, a incorporação de mecanismos de pré-busca, a
orquestração da qualidade de serviço das apresentações, tanto inter-mídia como
intra-mídia, e o projeto e implementação de mecanismos de ajuste temporal dos
componentes de um hiperdocumento.
Conclusões
143
As análises realizadas e a modelagem proposta para o projeto de ambientes
de execução hipermídia são as duas principais contribuições desta tese. O
resultado final foi uma arquitetura que integra três tipos de orquestração
(orquestração da apresentação propriamente dita, orquestração da pré-busca e
orquestração intra-mídia), mecanismos de adaptação das apresentações e
mecanismos de consulta a informações contextuais. Todos esses aspectos de
controle estão organizados de maneira modular e independentes das ferramentas
responsáveis por exibir os conteúdos. O objetivo é facilitar a integração de
formatadores, tanto a novas ferramentas de exibição que venham a ser
desenvolvidas, como a adaptadores para exibidores que já existam e sejam
utilizados em outros sistemas de apresentação hipermídia. A arquitetura proposta
para o ambiente de execução também procura viabilizar a integração entre
ferramentas de diferentes desenvolvedores (Rodrigues et al., 2001).
De um modo mais detalhado, é possível desmembrar as duas principais
contribuições descritas no parágrafo anterior nos seguintes itens:
•
especificação de um modelo hipermídia de execução propício à
implementação de estratégias de adaptação;
•
modelagem de um ambiente de execução hipermídia genérico;
•
definição de uma API para integração de formatadores com exibidores
genéricos;
•
análise dos requisitos e modelagem de uma arquitetura genérica para
mecanismos de pré-busca;
•
análise dos requisitos e modelagem de uma arquitetura genérica para
mecanismos de orquestração intra-mídia, integrada ao framework de
orquestração de QoS proposto em (Gomes, 1999; Gomes et al., 2001);
•
análise dos requisitos e modelagem de uma arquitetura genérica para
mecanismos de adaptação dos documentos. O módulo de adaptação
proposto prevê a incorporação de estratégias de ajuste dos tempos elásticos
e de adaptação dos objetos em função das características da plataforma de
exibição. Conforme discutido no Capítulo 2, o foco da pesquisa foi a
adaptação em relação à infra-estrutura, mas adaptações simples orientadas
ao perfil do usuário também podem ser aplicadas.
Conclusões
144
Adicionalmente, esta tese contribui com a implementação de um formatador
hipermídia e de ferramentas de exibição para o sistema HyperProp (Capítulo 5).
Essa implementação foi útil na validação das propostas desta pesquisa e, ao
mesmo tempo, permitiu refinar as análises com uma visão das questões práticas
no desenvolvimento de um ambiente de execução. Da mesma maneira que nas
contribuições anteriores, é possível enumerar de modo mais detalhado os
resultados obtidos com a implementação:
•
implementação de ferramentas de exibição para os tipos básicos de mídia.
No caso das mídias contínuas foram desenvolvidos adaptadores para o
Java Media Framework da Sun;
•
implementação de um módulo conversor que faz a tradução do modelo de
documentos NCM para o modelo hipermídia de execução definido para o
formatador;
•
implementação de módulos conversores que fazem a tradução das
linguagens NCL e SMIL (versão 1.0) para o modelo de documentos NCM;
•
implementação de um módulo de pré-busca para melhorar a qualidade das
apresentações hipermídia. Nesse caso, foram desenvolvidas estratégias
para a compilação dos planos e escalonamento das ações;
•
implementação de um módulo de adaptação integrado a um conjunto de
algoritmos para cálculo de ajuste dos tempos elásticos, desenvolvidos em
um projeto de cooperação com o grupo de pesquisa em otimização da
Universidade Blaise Pascal.
A pesquisa realizada nesta tese também contribuiu para o refinamento do
Modelo de Contextos Aninhados (Soares et al., 1998a; Soares et al., 1998b;
Soares et al., 1999; Soares et al., 2000; Soares et al., 2003) e para a definição de
um conjunto de módulos para autoria declarativa de documentos hipermídia
(Antonacci et al., 2000; Muchaluat-Saade et al., 2002; Muchaluat-Saade, 2003;
Rodrigues, 2002a). Além disso, o trabalho realizado colaborou para o estudo do
uso de model checker na verificação formal da consistência temporal de
apresentações (Felix et al., 2002) e para a definição de heurísticas para o ajuste
das apresentações em tempo de execução (Medina et al., 2001).
Conclusões
145
Como trabalho futuro, pretende-se implementar um módulo gerente da
orquestração intra-mídia, integrado a mecanismos de orquestração da QoS em
sistemas operacionais e redes. Nesse sentido, o próximo passo é efetuar a junção
com o controlador de admissão para sistemas operacionais Linux, desenvolvido
por (Moreno, 2002), e também com a API para reserva de recursos em redes
TCP/IP, definida em (Mota, 2001). Pretende-se também explorar o recurso da
orquestração de pré-busca para integrar o formatador HyperProp a provedores
com suporte à reserva de recursos antecipada (Berson et al., 1998; Degermark et
al., 1995; Wolf et al., 1995).
Outro trabalho futuro é a atualização do conversor SMIL para oferecer
suporte a especificações realizadas na versão 2.0 da linguagem (W3C, 2001a) e
para tradução dos documentos diretamente no modelo de execução. Nessa linha,
esforços também podem ser feitos para implementar conversores para outros
modelos de entrada.
Um terceiro trabalho interessante é a implementação do proxy de
informações contextuais do formatador HyperProp como um usuário de um
mecanismo de gerência de contexto externo.
Ainda em termos de implementação, com a concretização dos serviços de
informação contextual, estratégias mais precisas para a estimativa dos tempos de
preparação podem ser desenvolvidas e incorporadas ao mecanismo de pré-busca
do formatador HyperProp. Pretende-se também, embutir no formatador, técnicas
de ajuste do plano de pré-busca em tempo de execução e estratégias que, na
construção do plano, considerem as probabilidades de interatividade do usuário e
a gerência do espaço em memória no cliente para armazenamento prévio dos
conteúdos.
Dando continuidade à cooperação com o grupo de otimização da
Universidade Blaise Pascal, pretende-se investigar o uso, na prática, dos diversos
algoritmos propostos e implementados para ajuste otimizado dos tempos elásticos,
não só em compilação, como também durante a execução dos documentos. Os
estudos futuros pretendem considerar, além da minimização dos custos, outros
critérios, como o número de objetos modificados e a distribuição dos ajustes entre
os objetos. Uma investigação dos mecanismos de construção dos grafos de tensão
também se faz necessária. É preciso estender a função geradora do grafo para que
Conclusões
146
considere não apenas os eventos externos, como também eventos de apresentação
internos a um objeto. Outro aspecto que requer um estudo maior é o mapeamento
das condições e restrições compostas, previstas pelo modelo de execução do
formatador, nos nós e arestas do grafo de tensões. Talvez também seja preciso
fazer uso no formatador de algoritmos que decomponham a cadeia temporal em
estruturas que respeitem a topologia série-paralelo.
Ligada à questão da adaptação, está também o estudo da adequação do
framework de formatação proposto nesta tese para acomodar técnicas de
adaptação dos documentos orientadas ao usuário e orientadas à manipulação da
quantidade de informação, discutidas na Seção 2.1.1.1.
Em andamento, encontra-se o projeto para realizar uma nova instanciação
do framework para construção de ambientes de execução adequados para
equipamentos receptores (set-top boxes) de sinais de televisão digital, a fim de
utilizar os vários mecanismos de orquestração definidos nesta tese no controle de
programas de TV interativa. Da mesma forma, poderia ser realizado um estudo da
adequação do framework de formatação para instanciar formatadores que
controlem a apresentação em clientes distribuídos, isto é, clientes cujos
dispositivos de entrada e saída encontram-se espalhados em mais de uma estação,
interligadas por um sistema de comunicação.
A idéia de distribuir os mecanismos de controle das apresentações
hipermídia pode ser estendida, colocando o formatador como um conjunto de
mecanismos que executam cooperativamente na plataforma cliente, na plataforma
servidora e também em possíveis elementos intermediários (proxies, caches etc.).
Esse tipo de generalização é um tópico em aberto, que merece um estudo mais
detalhado. No entanto, espera-se que os resultados obtidos com este trabalho
possam contribuir na busca de soluções para essa questão.
Por fim, espera-se que, com o refinamento dos componentes e das interfaces
definidas na arquitetura proposta nesta tese, seja possível obter uma plataforma
aberta para teste de novos algoritmos envolvidos no controle de apresentações de
hiperdocumentos.
Referências
147
8
Referências
AHUJA, R.K.; HOCHBAUM, D.; ORLIN, J.B. Solving the Convex Cost
Integer Dual Network Flow Problem. Management Science, 2000.
ALLEN, J.F. Maintaining Knowlegde about Temporal Intervals.
Communications of the ACM, v. 26, n. 11, Novembro de 1983, p. 832-843.
ANDERSON, K.M. Integrating Open Hypermedia Systems with the World
Wide Web. VIII ACM International Hypertext Conference, Southampton,
1997, p. 157-166.
ANDREWS, K.; KAPPE, F.; MAURER, H. Serving Information to the Web
with Hyper-G. Computer Networks and ISDN Systems, v. 27, n. 6, 1995, p.
919-926.
ANTONACCI, M.J. et al. Improving the Expressiveness of XML-Based
Hypermedia Authoring Languages. VII Multimedia Modeling Conference
- MMM’2000, Nagano, Japão, Novembro de 2000, p. 71-88.
BACHELET, B. et al. Elastic Time Computation for Hypermedia Documents.
VI Simpósio Brasileiro em Sistemas Multimídia e Hipermídia SBMídia’2000, Natal, Brasil, Junho de 2000, p. 47-62.
BERNERS-LEE, T.J. et al. The World-Wide Web. Communications of the
ACM, v. 37, n. 8, Agosto de 1994, p. 76-82.
BERNERS-LEE, T.J.; MASINTER, L.; MCCAHILL, M. Uniform Resource
Locators (URL). IETF Request for Comments (RFC) 1738, Dezembro de
1994.
BERSON, S.; LINDELL, R.; BRADEN, R. An Architecture for Advance
Reservations in the Internet. Relatório Técnico, USC Information
Sciences Institute, Julho de 1998.
BHATTI, N.; BOUCH, A.; KUCHINSKY, A. Integrating User-Perceived
Quality into Web Server Design, WWW Conference, 2000.
BOLL, S.; KLAS, W. ZYX – A Semantic Model for Multimedia Documents
and Presentations. VIII IFIP Conference on Data Semantics, 1999.
Referências
148
BOLL, S.; KLAS, W.; WANDEL, J. A Cross-Media Adaptation Strategy for
Multimedia Presentation. ACM Multimedia, Orlando, EUA, Outubro de
1999.
BOLL, S.; KLAS, W.; WESTERMANN, U. Multimedia Document Models –
Sealed Fate or Setting Out for New Shores? IEEE International
Conference on Multimedia Computing and Systems (ICMCS), Florença,
Itália, Junho de 1999.
BOUVIN, N.O.; SCHADE, R. Integrating Temporal Media and Open
Hypermedia on the World Wide Web. VIII International World Wide
Web Conference, 1999, p. 375-387.
BRADEN, R. et al. Resource ReSerVation Protocol (RSVP): Version 1
Functional Specification. IETF Request for Comments (RFC) 2205,
Setembro de 1997.
BRUSILOVSKY, P. Methods and Techniques of Adaptive Hypermedia.
Journal of User Modelling and User-Adaptive Interaction, v. 6, n. 2-3, 1996,
p. 87-129.
BUCHANAN, M.C.; ZELLWEGER, P.T. Specifying Temporal Behavior in
Hypermedia Documents. European Conference on Hypertext - ECHT'92,
Milão, Itália, Dezembro de 1992.
BUCHANAN, M.C.; ZELLWEGER, P.T. Automatic Temporal Layout
Mechanisms. ACM International Conference on Multimedia, Anaheim,
EUA, 1993, p. 341-350.
BUCHANAN, M.C.; ZELLWEGER, P.T. Automatically Generating Consistent
Schedules for Multimedia Documents. ACM Multimedia Systems Journal,
v. 1, n. 2, Springer-Verlag, Setembro de 1993, p. 55-67.
CASANOVA, M.A. et al. The Nested Context Model for Hyperdocuments.
Hypertext’91, San Antonio, EUA, Dezembro de 1991, p. 193-201.
CHEN, G.; KOTZ, D. A Survey of Context-Aware Mobile Computing
Research. Department of Computer Science. Dartmouth College,
Novembro de 2000.
COHEN, E.; KAPLAN, H. Prefetching the Means for Document Transfer: A
New Approach for Reducing Web Latency. IEEE INFOCOM 2000, TelAviv, Israel, Março de 2000.
COLCHER, S. Um Meta Modelo para Aplicações e Serviços de Comunicação
Adaptáveis e com Qualidade de Serviço. Tese de Doutorado,
Departamento de Informática, PUC-Rio, Rio de Janeiro, Brasil, Novembro
de 1999.
Referências
149
COULSON, G.; BLAIR, G. Architectural Principles and Techniques for
Distributed Multimedia Application Support in Operating Systems.
ACM Operating System Review, v. 29, n. 4, Outubro de 1995, p. 17-24.
DEGERMARK, M. et al. Advance Reservation for Predictive Service. 5th
International Workshop on Network and Operating System Support for
Digital Audio and Video, Durham, Abril de 1995.
DEY, A.K.; SALBER, D.; ABOWD, G.D. A Conceptual Framework and a
Toolkit for Supporting the Rapid Prototyping of Context-Aware
Applications. Human-Computer Interaction (HCI) Journal - special issue on
Context-Aware Computing, v. 16, n. 2-4, 2001, p. 97-166.
DÍAZ, P.; AEDO, I.; PANETSOS, F. Modeling the Dynamic Behavior of
Hypermedia Applications. IEEE Transactions on Software Engineering, v.
27, n. 6, Junho de 2001, p. 550-572.
DUDA, A.; KERAMANE, C. Structured Temporal Composition of
Multimedia Data. Proceedings of the IEEE International Workshop on
Multimedia Database Management Systems, Blue Mountain Lake, EUA,
Agosto de 1995.
DUFFIN, R.J. Topology of Series-Parallel Graphs. J. Math. Anal. Appl., vol.
10, 1965, p. 303-318.
ELSON J.; CERPA, A. (eds.). ICAP the Internet Content Adaptation Protocol.
ICAP White Paper V1.01, ICAP Forum, 2001.
FELDMANN, A. et al. Performance of Web Proxy Caching in Heterogeneous
Bandwidth Environments. IEEE INFOCOM’99, 1999.
FELIX, M.F.; HAEUSLER, E.H.; SOARES, L.F.G. Validating Hypermedia
Documents: a Timed Automata Approach. Monografia em Ciência da
Computação, Departamento de Informática, PUC-Rio, Rio de Janeiro,
Brasil, 2002.
FREED, N.; BORENSTEIN, N. Multipurpose Internet Mail Extensions
(MIME) Part One: Format of Internet Message Bodies. IETF Request
for Comments 2045, Novembro de 1996.
FULKERSON, D.R. An Out-of-Kilter Method for Minimal Cost Flow
Problems. SIAM Journal on Applied Math., vol. 9, 1961, p. 18-27.
GAMMA, E. et al. Design Patterns: Elements of Reusable Object-Oriented
Software. Addison Wesley, 1995.
GOMES, A.T.A. Um Framework para Provisão de QoS em Ambientes
Genéricos de Processamento e Comunicação. Dissertação de Mestrado,
Departamento de Informática, PUC-Rio, Rio de Janeiro, Brasil, Maio de
1999.
Referências
150
GOMES, A.T.A.; COLCHER, S.; SOARES, L.F.G. Modeling QoS provision on
Adaptable Communication Environments. International Conference on
Communications - ICC2001, Helsinque, Finlândia, Junho de 2001.
GORINI, R.A.C. Um Ambiente de Suporte à Autoria Cooperativa de
Documentos Hipermídia. Dissertação de Mestrado, Departamento de
Informática, PUC-Rio, Rio de Janeiro, Brasil, Setembro de 2001.
GRØNBAEK, K.; BOUVIN, N.O.; SLOTH, L. Designing Dexter-based
hypermedia services for the World Wide Web. VIII ACM International
Hypertext Conference, Southampton, 1997, p. 146-156.
GUDGIN, M. et al. SOAP Version 1.2. W3C Working Draft, 2001.
HALASZ, F.; SCHWARTZ, M. The Dexter Hypertext Reference Model.
Communications of the ACM, v. 37, n. 2, Fevereiro de 1994.
HALL, W.; DAVIS, H.C.; HUTCHINGS, G.A. Rethinking hypermedia: the
Microcosm approach. Kluwer Academic Press, Amsterdam, Holanda,
1996.
HARDMAN, L.; BULTERMAN, D.C.A.; VAN ROSSUM, G. The Amsterdam
Hypermedia Model: extending hypertext to support real multimedia.
Hypermedia Journal, v. 5, n. 1, 1993, p. 47-69.
HARDMAN, L.; VAN ROSSUM, G.; BULTERMAN, D.C.A. Structured
Multimedia Authoring. Proceedings of ACM Multimedia’93, Anaheim,
EUA, Agosto de 1993, p. 283-289.
HOMESITE
5.
Macromedia,
2001.
Disponível
em
http://www.macromedia.com/software/homesite/. Acesso em 2 jul. 2003
ISO/IEC - Information Technology. Hypermedia/Time-based Structuring
Language (HyTime). International Standard (IS) 10744, 1992.
ISO/IEC - Information Technology. Coding of Multimedia and Hypermedia
Information – Part 6: Support for Enhanced Interactive Applications.
International Standard (IS) 13522-6, 1996.
ITU - International Telecommunications Union. One-way transmission time.
Recomendação G.114, Fevereiro de 1996.
JEONG, T.; HAM, J.; KIM, S. A Pre-scheduling Mechanism for Multimedia
Presentation Synchronization. IEEE International Conference on
Multimedia Computing and Systems, Ottawa, Canadá, 1997, p. 379-386.
JOURDAN, M. et al. Madeus, an Authoring Environment for Interactive
Multimedia Documents. ACM Multimedia Conference 98, Inglaterra,
Setembro de 1998, p. 267-272.
Referências
151
JOURDAN, M.; ROISIN, C.; TARDIF, L. Multiviews Interfaces for
Multimedia Authoring Environments. V Conference on Multimedia
Modeling, Lausanne, Suiça, Outubro de 1998, p. 72-79.
KHAN, J.; TAO, Q. Partial Prefetch for Faster Surfing in Composite
Hyprmedia. USENIX Symposium on Internet Technology and Systems,
São Francisco, EUA, Março de 2001.
KHAN, J.; TAO, Q. Prefetch Scheduling for Composite Hypermedia. IEEE
International Conference on Communications - ICC 2001, Helsinque,
Finlândia, Junho de 2001.
KIM, M.; SONG, J. Multimedia Documents with Elastic Time. Proceedings of
ACM Multimedia’95, São Francisco, EUA, Novembro de 1995.
KLAS, W.; GREINER, C.; FRIEDL, R. Cardio-OP – Gallery of Cardiac
Surgery. IEEE International Conference on Multimedia Computing and
Systems (ICMS’99), Florença, Itália, Junho de 1999.
KROEGER, T.; LONG, D.D.E.; MOGUL, J. Exploring the Bounds of Web
Latency Reduction from Caching and Prefetching. USENIX Symposium
on Internet Technology and Systems, Monterey, Dezembro de 1997, p. 319328.
LEMLOUMA, T.; LAYAÏDA, N. The Negotiation of Multimedia Content
Services in Heterogeneous Environments. VIII Multimedia Modeling:
Modeling Multimedia Information and Systems, Amsterdam, Holanda,
Novembro de 2001, p. 187-206.
LITTLE, T.; GHAFOOR, A. Synchronization and Storage Models for
Multimedia Objects. IEEE Journal Selected Areas of Communications, v.
8, n. 3, Abril de 1990, p. 413-427.
LUTUS, P. Arachnophilia 5.0. Paul Lutus Copyright, 2002. Disponível em
http://www.arachnoid.com/arachnophilia/index.html. Acesso em 2 jul. 2003.
MEDINA, M.T.; RIBEIRO, C.C.; SOARES, L.F.G. Automatic Scheduling of
Hypermedia Documents with Elastic Time. Monografias em Ciência da
Computação – MCC08/01, Departamento de Informática, PUC-Rio, Rio de
Janeiro, Brasil, 2001.
MORENO, M.F. Framework para Provisão de Qualidade de Serviço em
Sistemas Operacionais. Dissertação de Mestrado, Departamento de
Informática, PUC-Rio, Rio de Janeiro, Brasil, Agosto de 2002.
MOTA, O.T.J. Uma Arquitetura Adaptável para Provisão de QoS na
Internet. Dissertação de Mestrado, Departamento de Informática, PUC-Rio,
Rio de Janeiro, Brasil, Maio de 2001.
Referências
152
MOURA, M.S.A. Relações Espaciais em Documentos Hipermídia. Dissertação
de Mestrado, Departamento de Informática, PUC-Rio, Rio de Janeiro,
Brasil, Agosto de 2001.
MUCHALUAT-SAADE, D.C. Browsers e Trilhas para Documentos
Hipermídia Baseados em Modelos com Composições Aninhadas.
Dissertação de Mestrado, Departamento de Informática, PUC-Rio, Rio de
Janeiro, Brasil, Março de 1996.
MUCHALUAT-SAADE, D.C. Relações em Linguagens de Autoria
Hipermídia: Aumentando Reuso e Expressividade. Tese de Doutorado,
Departamento de Informática, PUC-Rio, Rio de Janeiro, Brasil, Março de
2003.
MUCHALUAT-SAADE, D.C. et al. Graphical Structured-Editing of
Multimedia Documents with Temporal and Spatial Constraints. IV
Multimedia Modeling Conference - MMM’97, Cingapura, Cingapura,
Novembro de 1997.
MUCHALUAT-SAADE, D.C.; RODRIGUES, R.F.; SOARES L.F.G. WWW
Fisheye-View Graphical Browser. V Multimedia Modeling Conference MMM98, Lausanne, Suiça, Outubro de 1998, p. 80-89.
MUCHALUAT-SAADE, D.C.; RODRIGUES, R.F.; SOARES L.F.G.
XConnector: Extending XLink to Provide Multimedia Synchronization.
II ACM Symposium on Document Engineering – DocEng’2002, McLean,
EUA, Novembro de 2002, p. 49-56.
MUCHALUAT-SAADE, D.C.; SOARES, L.F.G. Hypermedia Spatio-Temporal
Synchronization Relations Also Deserve First Class Status. VIII
Multimedia Modeling Conference - MMM2001, Amsterdam, Holanda,
Novembro de 2001, p. 73-90.
NETSCAPE Communications Corporation. Plug-in Guide. 1998. Disponível em
http://developer.netscape.com/docs/manuals/communicator/plugin/index.htm.
Acesso em 2 jul. 2003.
OHTO, H.; HJELM, J. CC/PP exchange protocol based on HTTP extension
framework. W3C Note, 1999.
OLIVEIRA, J.C. TVS: Um Sistema de Videoconferência. Dissertação de
Mestrado, Departamento de Informática, PUC-Rio, Rio de Janeiro, Brasil,
Agosto de 1996.
ORATRIX. GRiNS Pro Editor for SMIL 2.0: Reference Manual. Oratrix
Development, Fevereiro de 2002.
OREN, N. A Survey of Prefetching Techniques. Relatório Técnico, Julho de
2000. Disponível em http://citeseer.nj.nec.com/334350.html. Acesso em 2
jul. 2003.
Referências
153
PÉREZ-LUQUE, M.J.; LITTLE, T.D.C. A Temporal Reference Framework for
Multimedia Synchronization. IEEE Journal on Selected Areas in
Communications (Special Issue: Synchronization Issues in Multimedia
Communication), v. 14, n. 1, Janeiro de 1996, p. 36-51.
REVEL, D. et al. An Architecture for Flexible Multimedia Prefetching.
Workshop on Resource Allocation Problems in Multimedia Systems,
Washington DC, EUA, Novembro de 1996.
RODRIGUES, L.M. et al. Improving SMIL Documents with NCM Facilities.
VI Multimedia Modeling Conference - MMM99, Ottawa, Canadá, Outubro
de 1999, p. 19-38.
RODRIGUES, L.M. Integração de Documentos SMIL ao Sistema HyperProp
e Desenvolvimento de Ferramentas para Exibição de Objetos com
Relacionamentos de Sincronização. Dissertação de Mestrado,
Departamento de Informática, PUC-Rio, Rio de Janeiro, Brasil, Novembro
de 2000.
RODRIGUES, L.M. et al. Improving SMIL with NCM Facilities. Journal of
Multimedia Tools and Applications, Kluwer Academic Publishers, v. 16, n.
1, Janeiro de 2002, p. 29-54.
RODRIGUES, R.F. Documentação Eletrônica (Javadoc) da Implementação na
Linguagem Java do Modelo de Execução Hipermídia, Relatório Técnico,
Laboratório TeleMídia, PUC-Rio, Rio de Janeiro, Março de 2003.
Disponível em http://www.telemidia.puc-rio.br. Acesso em 2 jul. 2003.
RODRIGUES, R.F.; RODRIGUES, L.M.; SOARES, L.F.G. A Framework for
Event-Driven Hypermedia Presentation Systems. VIII Multimedia
Modeling Conference - MMM’2001, Amsterdam, Holanda, Novembro de
2001, p. 169-185.
RODRIGUES, R.F.; SOARES, L.F.G. Integração dos Sistemas HyperProp e
WWW, IV Simpósio Brasileiro em Sistemas Multimídia e Hipermídia SBMídia’98, Rio de Janeiro. Maio de 1998, p. 175-186.
RODRIGUES, R.F.; SOARES, L.F.G. A Framework for Prefetching
Mechanisms in Hypermedia Presentations. IEEE 4th International
Symposium on Multimedia Software Engineering, Newport Beach, EUA,
Dezembro de 2002.
RODRIGUES, R.F.; SOUZA, G.L.; SOARES, L.F.G. Authoring and
Formatting of Documents Based on Event-Driven Hypermedia Models.
IEEE International Conference on Protocols for Multimedia Systems and
Multimedia Networking - Proms-MmNet’97, Santiago, Chile, Novembro de
1997, p.74-83.
RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Modeling
Language: Reference Manual. Addison-Wesley, 1999.
Referências
154
SABRY-ISMAIL, L.; LAYAÏDA, N.; ROISIN, C. Dealing with uncertain
durations in synchronized multimedia presentations. Multimedia Tools
and Applications Journal, Kluwer Academic Publishers, 1999.
SANTOS, C. et al. Design Methodology and Formal Validation of
Hypermedia Documents. ACM Multimedia 98, Bristol, Inglaterra, Outubro
de 1998.
SANTOS, C. et al. Formal Specification and Verification of Hypermedia
Documents based on the Nested Context Model. V Multimedia Modeling
Conference - MMM98, Lausanne, Suiça, Outubro de 1998.
SCHILIT, B.; ADAMS, N.; WANT, R. Context-aware computing applications.
IEEE Workshop on Mobile Computing Systems and Applications, Santa
Cruz, EUA, Dezembro de 1994, p. 85-90.
SMILGen. RealNetworks, 2002. Disponível em http://www.smilgen.org. Acesso
em 2 jul. 2003.
SOARES, L.F.G. et al. Versões de Representação em Modelos com
Composições Aninhadas. IV Simpósio Brasileiro de Sistemas Multimídia e
Hipermídia – SBMídia’98, Rio de Janeiro, Brasil, Maio de 1998, p. 225236.
SOARES, L.F.G. et al. Propagação e Proliferação de Versões em Modelos
Conceituais Hipermídia com Composições. Simpósio Brasileiro de Banco
de Dados – SBBD’98, Maringá, Brasil, Outubro de 1998, p. 351-365.
SOARES, L.F.G. et al. Versioning Support in the HyperProp System. Journal
of Multimedia Tools and Applications, v. 8, n. 3, Kluwer Academics, Maio
de 1999, p. 325-339.
SOARES, L.F.G.; CASANOVA, M.A.; RODRIGUEZ, N.L.R. Nested Composite
Nodes and Version Control in an Open Hypermedia System. IEEE
Transaction on Information Systems, v. 20, n. 6, Elsevier Science Ltd, GrãBretanha, 1995, p. 501-519.
SOARES, L.F.G.; RODRIGUES, R.F.; MUCHALUAT-SAADE, D.C. Authoring
and Formatting Hypermedia Documents in the HyperProp System.
ACM Multimedia Systems Journal, v. 8, n. 2, Springer-Verlag, Março de
2000, p. 118-134.
SOARES, L.F.G.; RODRIGUES, R.F.; MUCHALUAT-SAADE, D.C. Modelo de
Contextos Aninhados – versão 2.3. Relatório Técnico, Laboratório
TeleMídia,
PUC-Rio,
Março
de
2003.
Disponível
em
http://www.telemidia.puc-rio.br. Acesso em 2 jul. 2003.
SOUZA, G.L. Sincronismo na Modelagem e Execução de Apresentações de
Documentos Multimidia. Tese de Doutorado, Departamento de
Informática, PUC-Rio, Rio de Janeiro, Brasil, Setembro de 1997.
Referências
155
SUN Microsystems. Java Media Framework, v2.0 API Specification. 1999.
Disponível em http://java.sun.com/products/java-media/jmf/. Acesso 2 jul.
2003.
VAN ROSSUM, G. et al. CMIFed: A Presentation Environment for Portable
Hypermedia Documents. ACM Multimedia’93, Anaheim, EUA, Agosto de
1993.
VAZIRGIANNIS, M. Interactive Multimedia Documents. Lecture Notes in
Computer Science, n.1564, Springer-Verlag, 1999.
VAZIRGIANNIS, M.; MOURLAS, C. An Object Oriented Model for
Interactive Multimedia Applications. The Computer Journal, v. 36, n. 1,
British Computer Society, Janeiro de 1993.
VILLARD, L.; ROISIN, C.; LAYAÏDA, N. An XML-based multimedia
document processing model for content adaptation. VIII International
Conference on Digital Documents and Electronic Publishing, Setembro de
2000.
W3C - World-Wide Web Consortium. Cascading Style Sheets, level 1. W3C
Recommendation, Dezembro de 1996.
W3C - World-Wide Web Consortium. Cascading Style Sheets, level 2. W3C
Recommendation, Maio de 1998.
W3C - World-Wide Web Consortium. Synchronized Multimedia Integration
Language (SMIL) 1.0 Specification. W3C Recommendation, Junho de
1998.
W3C - World-Wide Web Consortium. Composite Capability/Preference
Profiles (CC/PP): A user side framework for content negotiation. W3C
Note, Junho de 1999.
W3C - World-Wide Web Consortium. Resource Description Framework
(RDF) Model and Syntax Specification. W3C Recommendation,
Fevereiro de 1999.
W3C - World-Wide Web Consortium. HyperText Markup Language (HTML)
4.01. W3C Recommendation, Dezembro de 1999. Disponível em
http://www.w3.org/TR/html4/. Acesso em 2 jul. 2003.
W3C - World-Wide Web Consortium. Extensible Markup Language (XML)
1.0 – (Second Edition). W3C Recommendation, Outubro de 2000.
Disponível em http://www.w3c.org/TR/2000/REC-xml-20001006. Acesso
em 2 jul. 2003.
W3C - World-Wide Web Consortium. Synchronized Multimedia Integration
Language (SMIL 2.0) Specification. W3C Recommendation, Agosto de
2001. Disponível em http://www.w3.org/TR/smil20. Acesso em 2 jul. 2003.
Referências
156
W3C - World-Wide Web Consortium. XHTML+SMIL Profile. W3C Working
Draft, Agosto de 2001. Disponível em http://www.w3.org/TR/2001/WDXHTMLplusSMIL-20010807/. Acesso em 2 jul. 2003.
WILLRICH, R. et al. Towards Hypermedia Documents Design. XIV Simpósio
Brasileiro em Redes de Computadores, Fortaleza, Brasil, Maio de 1996, p.
473-491.
WOLF, L. et al. Issues of Reserving Resources in Advance. Proc. 5th
International Workshop on Network and Operating System Support for
Digital Audio and Video, Abril de 1995.

Documentos relacionados