Um Modelo Formal para Verificação da Consistência de - PUC-Rio

Transcrição

Um Modelo Formal para Verificação da Consistência de - PUC-Rio
Um Modelo Formal para Verificação da Consistência de Documentos Hipermídia NCM
C.A.S. Santos1
J-P. Courtiat1
G.L. de Souza2
L.F.G. Soares3
[email protected]
[email protected]
[email protected]
[email protected]
1
LAAS-CNRS, 7 avenue du Colonel Roche, 31400 Toulouse Cedex, France
DIMAp, UFRN, Campus Universitário, Lagoa Nova, 59072-970 - Natal-RN, Brazil
3
Dept. Informática, PUC-Rio, R. Marquês S. Vicente 225, 22453-900 - Rio de Janeiro, Brazil
2
Resumo
Este artigo apresenta uma metodologia para especificação e validação da estrutura lógica e temporal do
modelo NCM, desenvolvido e implementado no ambiente de autoria e execução de documentos HyperProp. A
idéia básica é mostrar como uma técnica de descrição formal de propósito geral como LOTOS (na verdade uma
extensão temporal de LOTOS, chamada RT_LOTOS), pode ser usada para formalizar os comportamentos
temporais de documentos que podem ser expressos pelo modelo NCM. A validação de documentos é então
realizada através da identificação de inconsistências temporais potenciais através da aplicação de técnicas de
validação desenvolvidas e implementadas para RT-LOTOS. A noção de consistência dos documentos considera,
além de suas restrições lógicas e temporais, restrições impostas pela plataforma multimídia onde ele será
exibido, permitindo verificar se um documento intrinsecamente consistente pode ser apresentado
adequadamente em uma dada plataforma.
Abstract
This paper presents a methodology for formally specifying and validating the temporal and logical structure of
the Nested Context Model designed and implemented in the HyperProp authoring and execution environment. It
shows how a general-purpose formal description technique like LOTOS (in fact a temporal extension of LOTOS,
called RT-LOTOS), may easily and consistently be used for formalizing the highly complex temporal behaviors
that may be expressed using the NCM model. Validating a hypermedia document looking for potential temporal
inconsistencies is then performed using standard validation techniques that have been developed and
implemented for RT-LOTOS. The notion of consistency is generalized to a multimedia platform by assessing
whether a document, consistent per se, can effectively be presented on that platform.
1. Introdução
O problema central na concepção de um documento multimídia é a definição da sua estrutura
lógico-temporal, ou seja, a definição das relações de cooperação e coordenação entre as
diversas mídias que o compõem [BlSt96]. Define-se por sincronização multimídia, o conjunto
de ações executadas para controlar estas relações durante a apresentação de um documento.
Diversos modelos para especificação da estrutura temporal de documentos multi e hipermídia
foram propostos. Destacam-se, entre outros, os modelos de sincronização baseados em
intervalos temporais [WaRo94], os de descrição hierárquica das sincronizações [LiGh90], os
baseados em pontos de referência [BuZe93] e os baseados em redes de Petri Temporizadas
[WiSS97].
O presente trabalho propõe uma metodologia para contruir uma especificação baseada na
extensão temporal da Técnica de Descrição Formal (ou FDT) LOTOS [BoBr87] denominada RT-LOTOS [CoOl94] - para formalizar e validar documentos multi/hipermídia
construídos a partir do modelo NCM [SoSo96]. A idéia central da proposta é esconder dos
autores de documentos toda a complexidade envolvida no uso de uma FDT para especificar os
documentos que são por eles editados. Para tal, propõe-se um esquema de mapeamento direto
das entidades NCM (nós, elos e ancoras) em processos RT-LOTOS. Cabe ressaltar que o
mapeamento pode ser automatizado e integrado às ferramentas de autoria do sistema
HyperProp [SoCa95]. A metodologia é genérica, hierárquica e, dado que está baseada numa
FDT, a consistência temporal do documento pode ser garantida a partir da análise da
especificação obtida. Mais ainda, o mesmo princípio pode ser aplicado para representar outros
modelos multi/hipermídia baseados em eventos.
A obtenção de uma descrição formal RT-LOTOS de um documento NCM permite definir
uma semântica precisa para esse modelo, evitando descrições ambíguas do comportamento da
apresentação de um documento. Além disso, esta descrição permitirá a aplicação das técnicas
desenvolvidas e implementadas na ferramenta RTL [CoOl95] para verificação da consistência
de um documento, seja em relação as suas restrições temporais intrínsecas, seja em relação às
restrições adicionais relativas à plataforma onde o documento vai ser apresentado. No escopo
deste trabalho, um documento é dito ser consistente quando sua apresentação termina
decorrido um tempo finito após seu início [CoOl96, SCSS97].
O artigo está divido em quatro seções: a primeira define rapidamente os conceitos do modelo
NCM; a segunda trata da metodologia desenvolvida para gerar a especificação formal de um
documento NCM; a terceira mostra um exemplo de aplicação e os resultados obtidos. Por fim,
as conclusões gerais dos resultados do trabalho são apresentadas.
2. O Modelo NCM
Um documento hipermídia é definido no modelo NCM a partir dos conceitos usuais de nós e
elos. Os nós são constituídos de fragmentos de informação e os elos são usados para exprimir
todas as possíveis relações entre os diferentes nós que constituem o documento. Existem duas
classes básicas de nós: os nós terminais e os nós de composição, sendo estes últimos o ponto
central do modelo.
Um nó terminal (ou nó de conteúdo) contém um conjunto de dados, cuja estrutura interna é
dependente da aplicação, como no caso dos nós hipermídia tradicionais. A classe de nós
terminais pode ser especializada em outras classes (por ex., texto, gráfico, áudio, vídeo),
conforme requerido pelas aplicações. Um nó de composição contém uma coleção de elos e
nós, de conteúdo ou de composição, inter-relacionados. Dado que os nós de composição
podem ser aninhados em qualquer profundidade (desde que a restrição de um nó não conter
recursivamente a si mesmo seja obedecida) e que diferentes composições podem conter um
mesmo nó, é necessário introduzir o conceito de perspectiva. A perspectiva identifica de
forma única a seqüência de nós de composição aninhados correspondente a instância do nó
que está sendo observada.
Um elo é caracterizado como uma relação m:n entre um conjunto de pontos terminais origem
e destino. Os pontos terminais origem e destino especificam eventos, os quais podem ser a
exibição ou seleção de um conjunto não vazio de unidades de informação1 e ainda, a mudança
de um atributo de um objeto componente do documento, chamado evento de atribuição. O elo
possui ainda um ponto de encontro que define uma lista de condições e ações, especificando
relações entre os eventos que o caracterizam. Assim, condições devem ser satisfeitas em
eventos de origem para que ações sejam aplicadas nos eventos de destino. Normalmente, as
condições são descritas como algo do tipo “um evento E ocorreu ou está ocorrendo, …”, e as
ações como “inicie um evento, modifique a apresentação de um nó em exibição, …”.
Outra característica do NCM é que para cada nó, o qual passa a ser denominado nó objeto de
dados, é associado um objeto descritor. Um descritor especifica como um nó objeto de dados
1 A noção exata do que se constitui uma unidade de informação é parte da definição do tipo de mídia do objeto componente do documento.
será exibido, detalhando como será iniciado (métodos de exibição), qual dispositivo de E/S
será utilizado e quais mudanças ocorrerão no seu comportamento durante sua exibição, caso
elas existam. O descritor contém adicionalmente toda a informação necessária à obtenção do
nó objeto de dados associado, tais como o custo de transferência (retardo, banda passante,
etc). A agregação de um descritor a um nó objeto de dados dá origem a um nó objeto de
representação, ou simplesmente, objeto de representação. O identificador do descritor, a ser
associado a um nó objeto de dados, pode ser definido em um atributo do próprio nó a partir do
qual o objeto de representação será criado. Os elos também podem possuir um conjunto de
identificadores de descritores, como no Modelo Dexter, que contém informações para o
modelo de apresentação indicando como os objetos de representação devem ser criados. Os
nós de composição também possuem, para cada um dos seus nós componentes, um atributo
onde pode ser definido o identificador do descritor que deve ser utilizado na criação do objeto
representação do componente.
3. Especificação Formal do modelo NCM
A idéia central desta seção é não só apresentar uma descrição formal para o exemplo
específico utilizado neste trabalho, mas também definir uma metodologia geral para mapear
qualquer documento hipermídia baseado no modelo NCM numa Técnica de Descrição Formal
(FDT). Entre as diversas vantagens apresentadas por esse tipo de abordagem, pode-se
destacar:
•
Simplificação da tarefa de elaborar uma especificação formal do documento. A
metodologia permite que qualquer usuário capaz de editar um documento utilizando
ferramentas de autoria de alto nível obtenha uma especificação formal, mesmo nao tendo
o conhecimento básico que seria necessário para produzi-la diretamente;
•
Aplicação das técnicas de verificação sobre a especificação (obtida através da tradução do
modelo de autoria numa FDT) do documento para analisar suas propriedades,
particularmente, a consistência temporal e a consistência em relação a plataforma utilizada
para a sua apresentação.
A escolha do RT-LOTOS como método formal para o mapeamento é plenamente justificada
pela ênfase deste método à composição hierárquica de processos (similar ao sistema de nós de
composição do NCM), por sua semântica formal, sua habilidade para expressar tanto o nãodeterminismo como as restrições temporais dos sistemas e, finalmente, pela disponibilidade e
confiabilidade da ferramenta RTL (RT-LOTOS Laboratory) para verificação e simulação de
sistemas [CoOl95].
3.1. O FDT Real Time LOTOS
Um sistema descrito em LOTOS é visto como um processo composto por diversos subprocessos. Esses sub-processos são também processos LOTOS que podem ser, de maneira
semelhante, decompostos hierarquicamente [BoBr87]. Um processo é composto de uma lista
de ações externas (ou observáveis) e de uma lista de ações internas (ou não-observáveis). As
ações externas são mapeadas sobre um conjunto de portas de comunicação que são utilizadas
para as interações do processo com o ambiente externo e, consequentemente, com outros
processos. Estas interações dão origem às sincronizações que são a base das especificações
LOTOS. Se dois ou mais processos se sincronizam sobre uma ação (ou sobre uma porta), esta
ação tem que ser executada ao mesmo tempo por todos os processos envolvidos. Além disso,
dado que uma sincronização pode envolver a troca de valores, estabelece-se que ao fim desta
operação os valores oferecidos pelas portas envolvidas devem ser os mesmos. Vale lembrar
também que a execução das ações é considerada instantânea.
Dado que o padrão LOTOS não tem a capacidade de expressar restrições temporais, algumas
extensões a seus operadores têm sido propostas (dentre as quais o RT-LOTOS [CoOl94]), as
quais atualmente convergem para uma versão comum a ser padronizada, denominada (ELOTOS). A lista parcial dos operadores RT-LOTOS adicionada ao padrão LOTOS é
mostrada a seguir:
Atraso fixo
Atraso aleatório
Validade Temporal da ação
delay(d) B
delay(dmin,dmax) B
g{t} O1…On;B
Figura 1 – Principais operadores RT-LOTOS
B corresponde a uma expressão de comportamento genérica LOTOS. O operador de atraso
retarda a execução de B de um valor fixo d, ou de um valor aleatório compreendido entre dmin
e dmax de unidades de tempo. Enfim, o operador de validade temporal limita o tempo de oferta
da ação ao ambiente. Ele é, por definição, “∞” no caso de ações externas e “0” para as
internas.
3.2. Mapeamento dos Objetos NCM
O mapeamento dos objetos NCM sobre processos RT-LOTOS é baseado no fato de que é
possível encontrar uma relação direta entre a hierarquia de composições do modelo NCM e a
hierarquia de processos de uma especificação RT-LOTOS. Mais ainda, é possivel construir
uma biblioteca de processos básicos que especifiquem os objetos de base da estrutura NCM,
como por exemplo, os elos e os nós de conteúdo. A proposta é suficientemente geral para que
possa ser automatizada e incorporada dentro do sistema de autoria de documentos.
O modelo NCM tem como estrutura principal o Nó de Composição (Composite Node), cuja
tradução em RT-LOTOS é mostrada na Figura 4. A característica principal deste processo é a
possiblidade de instanciá-lo com diferentes versões (ou descritores) e de maneira recursiva.
Cada nó de composição possui uma lista de parâmetros que correspondem aos descritores dos
nós, elos e âncoras pertencentes às composições que estão no nível hierárquico inferior em
relação à perspectiva.
Um nó é identificado por seu parâmetro nodeID. Cada nó tem um conjunto de portas start e
end caracterizando o início e o fim da apresentação, user associada à interação com o usuário
sobre uma âncora, e trigger correspondendo a ação decorrente da interação do usuário sobre
uma âncora que pertence a outro nó, mas que modifica a apresentação do nó em questão. As
portas possuem parâmetros que asseguram a correta sincronização das ações com os seus
respectivos nós (nodeID) e âncoras (anchorID).
process compositeNode[start,end,user,trigger]
(nodeID:nat, nodeList:nodeDescriptorList, anchorList:anchorDescriptorList, linkList:linkDescriptorList ) :=
hide endRequest in
start !nodeID?version:nat;
( ( ( nodeBody[user,endRequest](version,nodeList,anchorList,linkList) [> end{0}!nodeID!version; exit )
|[endRequest,end]| terminationNode[endRequest,end](nodeID, version, nodeList) )
|||
compositeNode[start,end,user,trigger] (nodeID, nodeList,anchorList,linkList) ) [] exit
where
process nodeBody[user,endRequest]
(version:nat, nodeList:nodeDescriptorList,anchorList:anchorDescriptorList,linkList:linkDescriptorList) :=
hide start,end,trigger in
nodePresentations[start,end,user,trigger](version,nodeList,anchorList,linkList)
|[start,end,trigger]|
nodeConstraints[start,end,trigger](version,linkList)
where
process nodePresentations[start,end,user,trigger]
(version:nat, nodeList:nodeDescriptorList,anchorList:anchorDescriptorList, linkList:linkDescriptorList) :=
nodeStructure[start,end,user,trigger] (version,nodeList,anchorList,linkList)
|||
nodeInteractions[user,trigger] (version,anchorList)
where
process nodeStructure[start,end,user,trigger] (version:nat,nodeList:nodeDescriptorList,
anchorList:anchorDescriptorList,linkList:linkDescriptorList) := ...endproc
process nodeInteractions[user,trigger] (version:nat, anchorList:anchorDescriptorList) :=
interactionsCapture[user,trigger] (anchor_1)
||| … ||| interactionsCapture[user,trigger] (anchor_i)
||| … ||| interactionsCapture[user,trigger] (anchor_n)
endproc
endproc
process nodeConstraints[start,end,trigger] (version:nat, linkList:linkDescriptorList) :=
link[start,end] (descriptorLink_1)
|[…]| … |[…]| link[trigger,end] (descriptorLink_i)
|[…]| … |[…]| link[trigger,start] (descriptorLink_n)
endproc
endproc
endproc
Figura 2 – O Processo CompositeNode Genérico
Quando um processo CompositeNode com algum nodeID é instanciado, ele recebe um valor
correspondente a versão (version) que deve ser apresentada. Através destes parâmetros, os
valores dos descritores dos nós, elos e âncoras da composição podem ser obtidos nas listas de
descritores que são passadas como parâmetro ao processo. Desta forma, diferentes versões de
um mesmo nó podem ser facilmente implementadas, somente com a mudança de seus
parâmetros.
Uma vez que a sincronização com a ação start é realizada, o comportamento do processo
passa a ser descrito pelo processo nodeBody e pelas restrições de finalização do nó (processo
terminationNode).
O processo nodeBody descreve a estrutura interna da composição, a qual é composta de uma
parte correspondente aos objetos de apresentação, modelada pelo processo nodePresentaions,
e outra relativa às restrições destas apresentações, pelo processo nodeConstraints.
O processo nodePresentations é descrito com a composição paralela dos processos
nodeStructure e nodeInteractions. O primeiro corresponde ao conjunto de nós de conteúdo e
de composição que pertencem ao nó de composição em questão, e o segundo, ao conjunto de
âncoras visíveis e destinadas a capturar as interações do usuário durante a apresentação desse
nó. As âncoras são modeladas pelos processos interactionCapture, os quais expressam todos
as possíveis eventos relacionados às interações com o usuário (múltiplas interações
consecutivas, tempo máximo disponível para uma interação, etc).
O processo nodeConstraints corresponde a uma composição paralela com sincronização dos
processos link pertencentes a esta perspectiva do nó e que modelam as interações entre os
diversos processos da composição. Os processos link são constituídos por uma ação de
entrada e outra de saída que é oferecida após um retardo e durante um intervalo limitado de
tempo. A composição de diversos processos link (não apresentada no trabalho) permite a
construção de operadores lógicos tais como AND, OR ou XOR.
4. Exemplo
O exemplo utilizado neste trabalho trata de uma composição NCM, que representa a estrutura
lógica de parte de um documento hipermídia sobre o Carnaval. A composição C contém
quatro nós, V, A, AT e I, e três elos l3, l4 e l5. Ela tem também dois pontos de entrada, através
dos elos l1 e l2, chegando de outras partes do documento. O nó de conteúdo V contém uma
sequência de vídeo mostrando a construção de uma alegoria, A contém um samba a ser
executado durante a apresentação e o nó I contém uma imagem relacionada ao povo da
favela, representando a verdadeira essência do Carnaval. Por fim, o nó AT é um nó de
conteúdo que pode ser apresentado como texto ou com áudio, dependendo do descritor
utilizado. O fim da apresentação de I marca o fim da apresentação da composição C, levandoa, através de l6, para outra parte do documento Carnaval.
O elo l1 inicia a apresentação simultânea dos nós V e AT, fornecendo também a versão do nó
de composição que foi iniciada, especificando (i) que o nó AT deve ser apresentado como um
áudio durante d1 segundos e (ii) que o nó V deve ser apresentado como um vídeo durante d2
segundos.
De maneira similar, o elo l2 especifica que V e A devem começar ao mesmo tempo, além de
fornecer as versões corretas dos nós a ser apresentada (duração de d2 segundos para V, e d5
segundos para A). Este exemplo ilustra como o NCM permite diferentes formas de
apresentação de uma mesma composição, dependendo do contexto externo, ou seja, de como
é feita a navegação até o nó. Assim, pode-se ter a apresentação de C com uma música de
fundo (se a navegação foi feita através do elo l2) ou sem música (se a navegação foi feita
através do elo l1). O link l3 contém uma informação temporal relacionada ao início da
apresentação de AT, impondo que ela deve começar d3 segundos após o início de A. Ele
fornece também a versão do nó a ser executada, o que determinará o descritor a ser utilizado
na apresentação de AT. Este descritor vai definir se AT será apresentado como um áudio (com
duração d1) ou como um texto (com duração d4). O elo l4 especifica que a imagem I deve ser
apresentada logo após o fim de AT e que ela permanece indefinidamente sendo apresentada.
Como consequência, o fim da apresentação de I deve ser definido por uma outra restrição. O
elo l5 tem esta finalidade, determinando que I deve acabar sua apresentação tão logo a
apresentação de V esteja terminada. Considera-se ainda que I tem uma duração mínima de
apresentação d6 . O elo l6 dispara quando I termina.
a2
a1
l1
l2
V
l5
l6
I
A
l3
AT
l4
C
Figura 3 – Parte do documento Carnaval
d2
d2
l1
V
l2
V
d5
d1
A
l5
AT
l4
d6
l6
I
l5
d4
l3
AT
l4
d3
d6
l6
I
Figura 4a – Navegação através do elo l1
Figura 4b – Navegação através do elo l2
d2
d2
V
l2
A
d3
d5
A
l5
d1
l3
V
l2
d5
l3
AT
l4
d3’
I
Figura 5a - Deadlock na apresentação de C causado
por uma inconsistência temporal
l5
d1
AT
l4
d6
I
l6
Figura 5b - Apresentação de C com consistência
temporal mas com inconsistência de plataforma
4.1 – Verificação da Consistência Temporal Intrínseca
A Figura 4a ilustra por meio de linhas de tempo o que acontece quando a navegação é feita
através de l1, assumindo que d 1 + d 6 ≤d 2 . A Figura 4b mostra uma outra possibilidade quando
a navegação é feita através de l2, assumindo que AT é apresentado como texto e que
d 3 + d 4 + d 6 ≤d 2 . Ambos os casos não apresentam inconsistência temporal. Observa-se
também a grande vantagem dos modelos de autoria baseados em eventos, como o caso do
NCM em relação ao tradicional modelo baseado em timelines. Neste exemplo, seriam
necessários duas representações em timeline para modelar o comportamento de um único nó
de composição.
Seja agora, uma navegação através do elo com o nó AT sendo apresentado como áudio e não
como texto e, com d 3 + d 1 > d 2 (Figura 5a). Neste caso, pode-se notar que a apresentação de I
nunca chegará ao fim, porque o nó V acaba antes do início de I. Consequentemente, a
apresentação de C nunca acabará, caracterizando uma indesejável situação de deadlock.
00
11
18
18
11
tt
i(start<C,0>)
i(start<C,0>)
i(user)
i(user)
33
i(trigger<anchor2>)
i(trigger<anchor2>)
16
16
i(start<A,2>)
i(start<A,2>)
i(start<V,0>)
i(start<V,0>)
22
i(user)
i(user)
41
42
41
42
i(start<AT,1>)
i(trigger<anchor1>) i(start<AT,1>)
i(trigger<anchor1>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
43
43
i(start<V,0>)
i(start<V,0>)
12
12
17
17
39
39
tt
13
13
39
39
39
39
i(start<AT,1>)
i(start<AT,1>)
i(timeout<anchor1>)i(timeout<anchor1>)
i(timeout<anchor1>)
i(timeout<anchor1>)
40
40
38
38
tt
38
38
i(end<V,0>)
i(end<V,0>)
19
19
i(start<AT,1>)
i(start<AT,1>)
10
10
44
tt
14
14
14
14
tt
i(start<I,0>)
i(start<I,0>)
i(endRequest<I,0>)
i(endRequest<I,0>)
11
15
11
15
i(endRequest<V,0>)
i(endRequest<V,0>)
i(end<A,2>)
i(end<A,2>)
37
20
37
20
i(endRequest<A,2>)
i(endRequest<A,2>)
44
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(end<AT,1>)
i(end<AT,1>)
i(start<A,2>)
i(start<A,2>)
tt
44
44
44
44
tt
i(start<AT,1>)
i(start<AT,1>)
i(timeout<anchor2>)
i(timeout<anchor2>)
i(sync<0,0>)
i(sync<0,0>)
55
15
15
tt
i(end<I,0>)
i(end<I,0>)
66
i(endRequest<C,0>)
i(endRequest<C,0>)
tt
77
21
20
21
20
i(endRequest<V,0>)
i(endRequest<V,0>)
23
22
23
22
i(end<V,0>)
i(sync<0,0>)
i(end<V,0>)
i(sync<0,0>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(endRequest<AT,1>)
34
34
31
31
i(endRequest<V,0>)
i(endRequest<V,0>)
i(end<AT,1>)
i(end<AT,1>)
35
32
35
32
i(endRequest<V,0>)
i(endRequest<V,0>)
i(start<I,0>)
i(start<I,0>)
i(end<V,0>)
i(end<V,0>)
i(end<AT,1>)
i(end<AT,1>)
i(end<V,0>)
i(end<V,0>)
i(start<I,0>)
i(start<I,0>)
33
36
33
36
i(endRequest<V,0>)
i(endRequest<V,0>)
28
28
i(sync<0,0>)
i(sync<0,0>)
i(end<AT,1>)
i(end<AT,1>)
29
29
i(sync<0,0>)
i(sync<0,0>)
i(start<I,0>)
i(start<I,0>)
30
30
i(end<V,0>)
i(end<V,0>)
24
24
88
i(exit)
i(exit)
99
i(end<AT,1>)
i(end<AT,1>)
25
25
27
27
i(start<I,0>)
i(start<I,0>)
26
26
i(sync<0,0>)
i(sync<0,0>)
i(end<C,0>)
i(end<C,0>)
tt
tt
27
26
27
26
i(endRequest<I,0>)
i(endRequest<I,0>)
Figura 6 – Grafo de alcançabilidade da apresentação de C com deadlock e durações: d1=50,
d2=60, d3=10 e d6=5s.
A situação de deadlock pode ser facilmente identificada através da verificação da
especificação formal RT-LOTOS derivada do modelo NCM da composição C. O grafo de
alcançabilidade2 gerado a partir da ferramenta RTL para esta situação é mostrado na Figura 6.
A transição marcada mostra que apenas a ação temporal t pode ser executada após o estado
27, ou seja, a apresentação de C iniciada por l2 ficará bloqueada indefinidamente na imagem
I, pois a ação end<I,0> nunca será executada. Por outro lado, a parte correspondente a
apresentação de C iniciada pelo elo l1 continua consistente, como era de se esperar [CoOl96].
Vale notar ainda que não fosse especificado um tempo mínimo de apresentação para I, a
composição C seria ainda consistente para as durações utilizadas. Neste caso porém, o nó I
não seria apresentado (ou teria um tempo nulo de execução).
Para tornar a apresentação de C consistente para ambos os casos, pode-se pensar em (i)
aumentar o tempo de apresentação de V (duração d2), (ii) reduzir o tempo de apresentação de
AT (d1) ou (iii) o atraso antes da sua apresentação (d3). Adotando-se a última solução, com
d3’=2s (d3’<< d3), o documento torna-se consistente em relação ao tempo, como mostra a
Figura 5b. Entretanto, como será visto a seguir, ele pode ser inconsistente, dependendo da
plataforma utilizada para sua apresentação.
2 O prefixo i significa que a ação é interna ou não-observável.
4.2 – Verificação da Consistência em Relação à Plataforma de Apresentação
Uma vez verificada a consistência intrínseca do documento, pode-se pensar em verificar se o
documento é ainda consistente, em relação à plataforma na qual ele será apresentado.
A utilização simultânea da tela por diferentes nós de conteúdo do tipo texto ou imagem não
deve causar maiores problemas em relação à consistência global do documento, a não ser a
nível do posicionamento ou área ocupada por uma janela durante a apresentação. Entretanto,
em se tratando dos recursos necessários para a apresentação de vídeos ou áudios, a situação é
bastante diferente. Um canal de áudio por exemplo, ficará alocado por um determinado nó de
conteúdo até que sua apresentação acabe. O mesmo acontece para a apresentação de um
vídeo.
Duas modificações bastante simples na estrutura do processo genérico CompositeNode
permitem analisar a consistência de um documento, de acordo com as características da
plataforma utilizada para sua apresentação. A primeira consiste em adicionar duas portas,
denominadas lock e unlock, na lista de portas dos processos RT-LOTOS ContentNode (e
consequentemente, dos processos CompositeNode que os contêm), para modelar a
sincronização da apresentação de cada nó de conteúdo com cada uma das mídias da
plataforma. A segunda, modifica a condição de terminação de uma composição (processo
terminationNode) de maneira a assegurar que todos os recursos utilizados por ela sejam
liberados antes do seu fim.
Para verificar a consistência intríseca da composição C, descrita na seção 4, foi suposto que
sua apresentação seria realizada em uma plataforma sem restrições de recursos e que tempo
de resposta dos dispositivos seria nulo. Assim, considerou-se que um nó de conteúdo
começaria a ser apresentado imediatamente após suas restrições lógico-temporais serem
satisfeitas e que um número infinito de mídias está a disposição dos nós durante a
apresentação. Apesar de permitir a verificação da consistência intrínseca de documentos, este
cenário não se verifica em aplicações reais, onde, além da limitação natural do número de
recursos, diferentes plataformas vão apresentar dispositivos com diferentes tempos de
resposta. Nesse caso, um documento intrinsicamente consistente em termos lógicos e
temporais pode se tornar inconsistente devido as características da plataforma utilizada.
Para os casos com consistência temporal (Figuras 4a e 4b) descritos anteriormente, pode-se
obter o grafo de alcançabilidade de C sob uma plataforma sem restrições (Figura 7). Verificase que a apresentação de C chegará sempre ao fim para ambos os casos, dado que a ação
end<C,0> é sempre alcançável a partir do início da apresentação [CoOl96]. A ação lock
marca o início da utilização da mídia e a ação unlock, sua liberação. Os parâmetros a, v, i, t
representam as mídias áudio, vídeo, imagem e texto correspondentes aos nós de conteúdo
apresentados.
00
11
i(start<C,0>)
i(start<C,0>)
66
88
i(lock<A,2,a>)
i(lock<A,2,a>)
i(start<V,0>)
i(start<V,0>)
99
i(start<A,2>)
i(start<A,2>)
i(start<V,0>)
i(start<V,0>)
77
i(lock<A,2,a>)
i(lock<A,2,a>)
44
i(user)
i(user)
i(user)
i(user)
i(start<V,0>)
i(start<V,0>)
49
49
i(start<A,2>)
i(start<A,2>)
tt
29
29
i(start<I,0>)
i(start<I,0>)
i(lock<I,0,i>)
i(lock<I,0,i>)
74
74
i(start<I,0>)
i(start<I,0>)
tt
76
77
76
77
i(endRequest<I,0>)
i(endRequest<I,0>)
69
69
i(lock<AT,1,a>)
i(lock<AT,1,a>)
70
69
70
69
i(end<AT,1>) i(endRequest<AT,1>)
i(end<AT,1>)
i(endRequest<AT,1>)
tt
72
72
i(endRequest<V,0>)
i(endRequest<V,0>)
68
68
77
77
i(end<V,0>)
i(end<V,0>)
66
66
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(sync<0,0>)
i(sync<0,0>)
i(sync<0,0>)
i(sync<0,0>)
67
67
60
60
51
51
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(end<I,0>)
i(end<I,0>)
i(end<I,0>)
i(end<I,0>)
36
36
36
36
i(unlock<AT,2,t>)
i(unlock<AT,2,t>)
tt
i(endRequest<I,0>)
i(endRequest<I,0>)
i(endRequest<C,0>)
i(endRequest<C,0>)
52
59
63
61
52
59
63
61
65
65
i(unlock<V,0,v>) i(endRequest<C,0>)
i(unlock<V,0,v>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(endRequest<C,0>)
37
37
i(unlock<V,0,v>) i(unlock<V,0,v>)
i(unlock<V,0,v>) i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<V,0,v>)
tt
54
54
53
53
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
64
64
i(endRequest<C,0>)
i(endRequest<C,0>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(exit)
i(exit)
18
18
i(endRequest<C,0>)
i(endRequest<C,0>)
i(exit)
i(exit)
58
58
56
56
i(endRequest<C,0>)
i(endRequest<C,0>)
i(exit)
i(exit)
23
23
55
55
i(exit)
i(exit)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
57
57
13
13
i(end<C,0>)
i(end<C,0>)
i(exit)
i(exit)
16
16
i(unlock<I,0,i>)
i(unlock<I,0,i>)
62
62
i(sync<0,0>)
i(sync<0,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
20
20
i(end<I,0>)
i(end<I,0>)
i(end<I,0>)
i(end<I,0>)
i(unlock<V,0,v>)
i(endRequest<C,0>) i(unlock<I,0,i>)
i(unlock<V,0,v>)
i(endRequest<C,0>)
i(unlock<I,0,i>)
11
19)
21
11
19)
21
25
25
i(endRequest<C,0>)
i(endRequest<C,0>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
12
12
24
22
24
22
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(endRequest<C,0>)
i(endRequest<C,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
17
17
50
50
i(lock<I,0,i>)
i(lock<I,0,i>)
28
37
28
37
i(endRequest<V,0>)
i(endRequest<V,0>)
i(end<V,0>)
i(end<V,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
27
26
27
26
10
10
71
71
i(lock<I,0,i>)
i(lock<I,0,i>)
76
76
32
32
i(unlock<AT,2,t>)
i(unlock<AT,2,t>)
i(start<I,0>)
i(start<I,0>)
i(start<I,0>)
i(start<I,0>)
33
34
33
34
i(unlock<AT,2,t>)
i(unlock<AT,2,t>)
i(sync<0,0>)
i(sync<0,0>)
79
79
i(lock<AT,1,a>)
i(lock<AT,1,a>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(unlock<AT,1,a>) i(unlock<AT,1,a>)
i(unlock<AT,1,a>)
i(unlock<AT,1,a>) i(unlock<AT,1,a>)
i(unlock<AT,1,a>)
38
39
38
39
i(unlock<A,2,a>) i(end<A,2>)
i(end<A,2>)
i(unlock<A,2,a>)
i(lock<I,0,i>)
i(lock<I,0,i>)
46
46
tt
73
73
75
75
i(endRequest<AT,2>)
i(endRequest<AT,2>)
30
30
31
31
i(end<AT,2>)
i(end<AT,2>)
35
35
i(start<AT,1>)
i(start<AT,1>)
i(lock<V,0,v>)
i(lock<V,0,v>)
41
42
42
41
42
42
i(start<AT,2>)
i(lock<AT,2,t>)
tt
i(lock<AT,2,t>)
i(start<AT,2>)
i(endRequest<A,2>)
i(endRequest<A,2>)
29
29
i(start<AT,1>)
i(start<AT,1>)
i(start<V,0>)
i(start<V,0>)
47
48
78
47
48
78
i(start<AT,1>)
i(start<AT,1>)
i(lock<AT,1,a>)
i(lock<AT,1,a>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
tt
40
40
45
45
i(trigger<anchor1>)
i(trigger<anchor1>)
33
i(trigger<anchor2>)
i(trigger<anchor2>)
43
44
43
44
i(lock<A,2,a>)
i(start<A,2>)
i(lock<A,2,a>)
i(start<A,2>)
40
40
22
55
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
11
tt
i(exit)
i(exit)
14
14
i(end<C,0>)
i(end<C,0>)
15
15
i(exit)
i(exit)
00
Figura 7 – Grafo de alcançabilidade de C sob uma plataforma sem limitação de recursos.
Seja a apresentação do mesmo trecho do documento Carnaval anterior, mas sob uma
plataforma P contando apenas com um canal de áudio, uma placa de descompressão de vídeo,
além de obviamente, um monitor. Fazendo uma nova verificação do documento C sob a
plataforma proposta, observa-se que sua apresentação iniciada através do elo l2 ocasionará
uma situação de deadlock, dependendo dos valores d5 e d4. Isto se deve ao conflito na
utilização do canal de áudio causado pela tentativa apresentação simultânea dos nós A e AT,
conforme mostra o resultado da simulação da Figura 8. Note que o recurso áudio está ocupado
com a apresentação do nó A quando o nó AT começa a ser apresentado. A ação seguinte,
nesse caso, corresponderia a atribuição do recurso a AT, mas como isso não é possível, a
apresentação de AT ficará bloqueada à espera do recurso áudio e a apresentação de C não
chegará ao fim. Mais ainda, pelos valores definidos para d2, d3 e d1, o documento seria
consistente do ponto de vista temporal, pois d 3 + d 4 + d 6 ≤d 2 (Figura 5b). Entretando, pode-se
verificar que ele é inconsistente em relação a sua plataforma de apresentação.
00
11
i(start<C,0>)
i(start<C,0>)
i(start<V,0>)
i(start<V,0>) i(lock<A,2,a>)
i(lock<A,2,a>) i(start<A,2>)
i(start<A,2>)
88
66
44
99
11
tt
22
i(user)
i(user)
i(user)
i(user)
25
25
58
58
24
24
i(trigger<anchor1>)
i(trigger<anchor1>)
i(lock<AT,1,a>)
i(start<AT,1>)
i(start<AT,1>) i(lock<AT,1,a>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
26
26
57
57
27
27
i(start<AT,1>)
i(start<AT,1>) i(lock<AT,1,a>)
i(lock<AT,1,a>)
i(lock<V,0,v>)
i(lock<V,0,v>) i(lock<V,0,v>)
i(lock<V,0,v>) i(lock<V,0,v>)
i(lock<V,0,v>)
33
i(trigger<anchor2>)
i(trigger<anchor2>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(start<V,0>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(start<A,2>)
i(lock<A,2,a>)
i(lock<A,2,a>) i(start<A,2>)
20
20
77
99
55
tt
20
20
tt
20
20
tt
i(end<AT,1>)
i(start<I,0>)
i(start<I,0>) i(end<AT,1>)
i(lock<I,0,i>)
i(lock<I,0,i>)
50
50
49
49
48
48
52
52
i(endRequest<AT,1>)
i(endRequest<AT,1>)
i(unlock<AT,1,a>)
i(unlock<AT,1,a>) i(unlock<AT,1,a>)
i(unlock<AT,1,a>) i(unlock<AT,1,a>)
i(unlock<AT,1,a>)
i(lock<V,0,v>)
i(lock<V,0,v>) i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
i(lock<V,0,v>)
23
23
i(start<A,2>)
i(start<A,2>)
22
22
i(lock<A,2,a>)
i(lock<A,2,a>)
i(start<AT,1>)
i(start<AT,1>)
54
54
55
55
56
56
tt
11
11
19
19
i(endRequest<A,2>)
i(endRequest<A,2>)
10
10
i(endRequest<V,0>)
i(endRequest<V,0>)
tt
tt
55
55
53
53
51
51
i(lock<I,0,i>)
i(lock<I,0,i>) i(start<I,0>)
i(start<I,0>)
i(endRequest<V,0>)
i(endRequest<V,0>)
56
56
47
47
45
45
46
46
i(end<V,0>)
i(end<V,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(sync<0,0>)
i(sync<0,0>)
i(sync<0,0>)
i(sync<0,0>)
i(endRequest<C,0>)
i(endRequest<C,0>)
18
18
40
40
39
39
32
32
44
44
30
30
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(end<I,0>)
i(end<I,0>)
i(unlock<A,2,a>)
i(unlock<A,2,a>)
i(unlock<V,0,v>) i(end<I,0>)
i(unlock<I,0,i>) i(unlock<V,0,v>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(unlock<I,0,i>) i(unlock<I,0,i>)
i(end<I,0>)
10
10
i(unlock<V,0,v>)
i(unlock<V,0,v>)
33
33
42
42
41
41
31
31
35
35
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(unlock<I,0,i>)
i(unlock<I,0,i>)
i(end<A,2>)
i(end<A,2>)
i(end<V,0>)
i(end<V,0>)
12
12
tt
i(endRequest<I,0>)
i(endRequest<I,0>)
21
21
21
21
48
48
28
28
29
29
i(start<AT,1>)
i(start<AT,1>) i(lock<AT,1,a>)
i(lock<AT,1,a>)
i(endRequest<C,0>)
i(endRequest<C,0>)
i(endRequest<C,0>) i(endRequest<C,0>)
17
17
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(sync<0,0>)
i(sync<0,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
43
43
16
16
i(exit)
i(exit)
i(end<C,0>)
i(end<C,0>)
15
15
34
34
i(endRequest<C,0>)
i(endRequest<C,0>)
i(unlock<V,0,v>)
i(unlock<V,0,v>)
i(exit)
i(exit)
14
14
13
13
37
37
i(exit)
i(exit)
i(sync<0,0>)
i(sync<0,0>)
i(exit)
i(exit)
36
36
i(unlock<I,0,i>)
i(unlock<I,0,i>)
38
38
Figura 8 – Grafo de alcançabilidade de C sob a plataforma P com restrição de recursos e
parâmetros: d2=60s, d5=25s, d3=2s, d6=3s e d1=45 s.
5. Conclusões
O trabalho propõe um modelo formal que permite organizar de maneira hierárquica, simular o
comportamento e verificar a consistência lógico-temporal intrínseca de um documento. Uma
extensão ao modelo básico permitiu ainda verificar consistência dos documentos em relação à
plataforma de apresentação. Tal análise permitiu verificar, por exemplo, a existência ou não
de super-posições de imagens, se a plataforma disponível suporta o documento a ser
apresentado, ou se existe conflito na utilização de recursos durante uma apresentação.
Embora os resultados obtidos sejam simples, deve-se notar que a mesma metodologia pode
ser utilizada para análises detalhadas de apresentações sobre modelos complexos de
plataforma, sem que seja necessário alterar a especificação que modela a estrutura o
documento. Isto ocorre porque os processos correspondentes à plataforma e ao documento só
se relacionam através da sincronização sobre as portas lock e unlock.
Outro contribuição importante é a construção de uma biblioteca de processos básicos link,
contentNode e anchor para facilitar a aplicação da metodologia de maneira sistemática,
qualquer que seja o documento hipermídia a ser analisado.
Entre as perspectivas para trabalhos futuros, está sendo estudado o aumento da complexidade
da plataforma, buscando reproduzir um modelo com um comportamento o mais próximo
possível de dispositivos reais. Outro ponto de interesse é a utilização da mesma metodologia
sobre outros modelos conceituais de autoria, além do próprio NCM.
6. Referências
[BlSt96] Blakowski, G.; Steinmetz, R. “A Media Synchronization Survey: Reference Model,
Specification and Case Studies”. IEEE Journal on Selected Areas in
Communication. v.14, n.1, Jan. 1996.
[BoBr87] Bolognesi, T.; Brinksma, E. Introduction to the ISO Specification Language
LOTOS. Computer Networks and ISDN Systems, v.14, n.1, 1987.
[BuZe93] Buchanan, M.C.; Zellweger, P.T. Automatic Temporal Layout Mechanisms. In:
Proceedings of ACM Multimedia’93. California, 1993. pp. 341-50.
[CoOl94] Courtiat, J.-P.; De Oliveira, R.C. About Time non-determinism and Exception
Handling in a Temporal Extension of LOTOS. In: Protocol Specification, Testing
and Verification XIV, Vancouver, Canada, Jun. 1994. Chapman & Hall.
[CoOl95] Courtiat, J.-P.; De Oliveira, R.C. A Reachability Analysis of RT-LOTOS
Specifications. In: Proceedings of the 8th Int. Conf. on Formal Description
Techniques. Montreal, Canada, Oct. 1995. Chapman & Hall.
[CoOl96] Courtiat, J.-P.; De Oliveira, R.C. Proving Temporal Consistency in a New
Multimedia Synchronization Model. In: Proceedings of ACM Multimedia’96. 1996.
[LiGh90] Little, T.D.C.; Ghafoor, A. Synchronization and Storage Models for Multimedia
Objects. IEEE Journal on Selected Areas in Communications, v.8, n.3, Apr. 1990.
pp.413-27.
[SCSS97] Souza Filho, G.L; Courtiat, J-P; Santos, C.A.S.; Soares, L.F.G. Usando RTLOTOS para Verificar a Consistência de Documentos Multimídia em Plataformas
Configuráveis. II Seminário Franco-Brasileiro em Sistemas Informáticos
Distribuídos. Anais. Fortaleza - CE. Nov. 1997.
[SDLS96]Sénac, P.; Diaz, M.; Leger, A.; Saqui-Sannes, P. Modeling Logical and Temporal
Synchronization in Hypermedia Systems. IEEE Journal on Selected Areas in
Communication. v.14, n.1, Jan. 1996.
[SoCa95] Soares, L.F.G.; Casanova, M.A.; Rodriguez, N.L.R.. Nested Composite Nodes and
Version Control in an Open Hypermedia System. International Journal on
Information Systems; Special Issue on Multimedia Information Systems, Sep. 1995.
pp. 501-19.
[SoSo96] Soares, L.F.G.; Souza, G.L. Sistema HyperProp: Modelo Conceitual. Relatório
Técnico do Labóratorio TeleMídia do Dep. de Informática, PUC-Rio. Rio de
Janeiro. Nov. 1996.
[WaRo94]Wahl, T.; Rothermel, K. Representing Time in Multimedia Systems. In: Proc.
IEEE Int. Conf. on Multimedia Computing and Systems, Boston. May 1994. pp.
538-43.
[WiSS97] Willrich, R.; Sénac, P.; Saqui-Sannes, P.; Diaz, M.; Hypermedia Documents
Design Using the HTSPN Model. 3rd Int. Conf. on MultiMedia Modeling MMM’96. Toulouse, Nov. 1996. pp.151-66.

Documentos relacionados