Escolar Documentos
Profissional Documentos
Cultura Documentos
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/221412147
CITATIONS READS
4 69
4 authors:
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Andre Mello on 16 June 2014.
1. Introdução
A cada dia nos deparamos com sistemas mais complexos e com hardwares cada vez mais
sofisticados. A tarefa de especificar um software ou um hardware não é algo natural. Di-
versas técnicas e metodologias são utilizadas para fazer essas especificações. O fato das
técnicas difundidas no mercado permitirem gerar resultados diferentes do que foi especifi-
cado fez com que surgisse a necessidade de utilizar métodos formais para especificação e
verificação de sistemas. Neste caso, o sistema de software ou de hardware é especificado
formalmente através de um modelo matemático, isto é, através de uma linguagem formal
que possui sintaxe e semântica bem definidas. E a verificação formal permite garantir
propriedades deste sistema descrito através da linguagem formal.
Gramática de grafos [?] é uma linguagem formal bastante adequada para sistemas
cujos estados possuem uma topologia complexa (que envolvem vários tipos de elementos
e diferentes tipos de relações entre eles) e cujo comportamento é essencialmente orientado
a dados, isto é, eventos são disparados por configurações particulares do estado. Vários
sistemas reativos são exemplos desta classe de aplicações, como protocolos para sistemas
distribuı́dos e móveis, simulação de sistemas biológicos, entre outros. A ideia básica
deste formalismo consiste em modelar um estado de um sistema com um grafo (grafo-
estado) e as possı́veis mudanças de estado com regras (cujos lados direito e esquerdo são
grafos). O comportamento operacional do sistema é descrito via aplicação das regras aos
grafos, detalhando o estado atual do modelo. Regras operam localmente no grafo-estado,
de forma que diversas regras podem ser aplicadas simultaneamente.
Gramática de grafos é considerada uma linguagem atraente de especificação
porque além de ser formal é baseada em um mecanismo simples, mas poderoso para descr-
ever comportamento. Ao mesmo tempo ela tem um layout gráfico interessante, que per-
mite mesmo os não-teóricos entenderem uma especificação. Devido ao seu estilo declar-
ativo (usando regras), concorrência pode ser descrita naturalmente em uma especificação:
se regras não estão em conflito (não tentam atualizar uma mesma porção do estado simul-
taneamente), elas podem ser aplicadas em paralelo (não é necessário dizer explicitamente
quais regras devem ocorrer concorrentemente). Consequentemente, gramática de grafos
pode ser vista como um formalismo adequado para se obter uma descrição clara e com-
preensı́vel de sistemas concorrentes [?].
A análise de sistemas especificados em gramática de grafos pode ser realizada
através da técnica de verificação de modelos [?] e de prova de teoremas [?]. A técnica
de verificação de modelos tem como entrada um modelo finito representando o sistema
e uma propriedade a ser verificada neste modelo, e então uma busca exaustiva no espaço
de estados permite decidir se a propriedade é válida no modelo dado. O processo é au-
tomático, em muitos casos eficiente e pode ser utilizado para verificar especificações par-
ciais. Embora esta técnica constitua um método de análise bastante importante, ela tem
como desvantagem a necessidade de construir o espaço de estados completo do sistema,
o que pode levar ao problema da explosão de estados [?].
Além da verificação de modelos, a prova de teoremas constitui outra técnica
consolidada para verificação formal. Nesta técnica tanto o sistema quanto suas pro-
priedades são expressas em alguma lógica. O processo de prova consiste em encon-
trar uma prova a partir dos axiomas e lemas intermediários do sistema. Este processo é
semi-automático, isto é, alguns passos da prova são realizados automaticamente, porém
requerem intervenção humana para ser completada. Cada técnica tem argumentos pró e
contra o seu uso, mas é possı́vel dizer que a verificação de modelos e a prova de teoremas
são complementares. A maioria das abordagens utilizam verificadores de modelos para
analisar propriedades de computações, isto é, sobre a sequência de passos de um sistema.
Propriedades sobre estados alcançáveis só são verificadas de forma restrita. Já a técnica
de prova de teoremas se mostra adequada a prova de propriedades estruturais sobre os
estados alcançáveis de um sistema, permitindo a prova para sistemas com um espaço de
estados infinito.
O objetivo deste artigo é o de apresentar as principais abordagens existentes para
a análise de gramática de grafos dentro de cada uma das técnicas, verificação de modelos
e prova de teoremas, traçando um comparativo entre elas. A seção 2 apresenta uma breve
descrição das duas técnicas de análise consideradas. A seção 3 apresenta o formalismo de
gramática de grafos, juntamente com um exemplo. A seção 4 descreve as principais abor-
dagens existentes para análise de gramática de grafos através de cada uma das técnicas,
bem como faz um resumo comparativo das propostas apresentadas. A seção 5 destaca
algumas conclusões e trabalhos futuros.
3. Gramática de Grafos
Na especificação de sistemas [?] as fábricas e agências de desenvolvimento de software,
adotaram o padrão criado pela OMG (Object Management Group) que é a UML (Uni-
fied Modeling Language). Esses modelos não são descritos matematicamente e podem
gerar alguns problemas de projeto. A linguagem natural e outras técnicas de modelagem
e especificação geram, na maioria das vezes, especificações ambı́guas, inconsistentes e
incompletas [?].
Gramática de Grafos (GG) [?] é uma linguagem formal e também intuitiva de
especificação, a qual é definida através conceitos matemáticos. Esse formalismo é con-
veniente para aplicações complexas (com vários tipos de elementos e também diferentes
relações entre eles) e em que o comportamento é essencialmente orientado a dados, ou
seja, os eventos são acionados basicamente por configurações especı́ficas do estado.
A idéia básica de GG é modelar os estados de um sistema na forma de grafos e
usar regras de transformação de grafos para descrever as transições de um estado para
outro. O comportamento do sistema é descrito através de aplicações destas regras nos
grafos que modelam os estados reais do sistema. Uma regra define elementos que devem
estar presentes no grafo para que ela possa ser aplicada. Além disso, uma regra define
as alterações realizadas pela sua aplicação: alguns elementos são eliminados e outros são
criados. É possı́vel que uma ou mais regras estejam habilitadas em um mesmo estado,
deste modo, pode-se descrever comportamentos paralelos e concorrentes.
De forma geral, um sistema descrito por gramática de grafos é composto por um
grafo tipo, caracterizando os tipos de vértices e arcos permitidos no sistema; um grafo
inicial, representando o estado inicial do sistema; e um conjunto de regras, que descreve
as possı́veis mudanças de estados que podem ocorrer. Uma regra possui um lado es-
querdo e um lado direito, os quais são descritos por grafos, e um morfismo parcial de
grafos que conecta estes grafos de forma compatı́vel (por exemplo, respeitando o mapea-
mento dos vértices origem e destino no mapeamento de arcos) e determina o que deve ser
modificado pela aplicação da regra. Dependo das condições impostas por estas regras,
elas podem ou não ser mutuamente exclusivas. Se forem, uma delas deve ser escolhida
não-deterministicamente para ser aplicada. O estado inicial tem a função de restringir
a computação e os estados alcançáveis permitidos no sistema. Todos os grafos-estados
devem ser rotulados por um grafo tipo via morfismos de grafos. Isto permite que alguns
estados inconsistentes sejam excluı́dos pela compatibilidade de tipagem.
O comportamento do modelo é determinado pela aplicação de regras aos grafos
que representam o estado atual do sistema a partir do grafo inicial. A aplicação de uma
regra a um grafo só é possı́vel se houver um match, isto é, uma ocorrência do lado es-
querdo da regra no grafo estado. A interpretação operacional da aplicação de uma regra
é a seguinte: itens do lado esquerdo que não têm imagem no lado direito são removidos;
itens do lado esquerdo que são mapeados para o lado direito são preservados; itens do
lado direito que não têm uma pré-imagem no lado esquerdo são criados.
Geralmente, a semântica de gramáticas de grafos é definida como o conjunto de
todas as computações que podem ser realizadas usando as regras da gramática, a partir do
estado inicial. Gramáticas de grafos têm sido utilizadas como linguagem de especificação
nas mais diversas aplicações, como geração e reconhecimento de imagem, sistemas dis-
tribuı́dos, análise de comportamento de falhas, modelos de banco de dados, computação
de DNA, composição musical, linguagens de programação, entre outras.
Para exemplificar o uso de GG para a especificação formal, mostra-se a aplicação
em uma rede que usa o protocolo Token Ring. Esse protocolo é utilizado para controlar
o acesso de várias estações a um meio de transmissão compartilhado, em uma rede que
tem a topologia de anel. De acordo com esse protocolo, um padrão especial, denomi-
nado token, é transmitido de estação em estação em apenas uma direção. Quando uma
estação quer enviar algum conteúdo pela rede, ela espera pelo token, retém ele, e envia a
mensagem pelo anel. A mensagem circula no anel de forma que todas as estações podem
copiar o seu conteúdo. Quando a mensagem completa o ciclo, ela é recebida pela estação
original, a qual remove a mensagem do anel e envia o token para a próxima estação, reini-
ciando o ciclo. Se apenas um token existe, somente uma estação pode estar transmitindo
num instante de tempo. É modelado um protocolo em um ambiente em que novas estações
podem ser adicionadas a qualquer instante. A Figura 1, ilustra a GG para este exemplo.
O grafo tipo T define um único tipo de vértice (Estação), e cinco tipos de arcos,
(Mensagem), (Token), (Conexão), (Estação Ativa) e (Estação em Espera). representa
uma estação na rede e define uma porção de dados. As estações são conectadas por arcos
do tipo . O representa um sinal especial o qual permite que uma estação inicie uma
transmissão. Cada estação ou está ativa (), significando que ela esta transmitindo uma
mensagem pela rede, ou está em espera (). Só pode existir uma estação ativa no anel a
cada instante de tempo. O grafo inicial G0 define um anel com três estações. Inicialmente
o Token está em uma estação especı́fica e nenhuma estação está transmitindo informação
pela rede (todas as estações tem um arco ).
O comportamento do protocolo é modelado pelas regras. Na representação
gráfica, usualmente o morfismo não é representado explicitamente; assume-se que os
itens do grafo esquerdo são mapeados para itens com o mesmo nome no lado direito.
Uma estação em espera com um arco token pode reter este arco e enviar uma mensagem,
tornando-se uma estação ativa (regra α1), ou pode passar o token para a próxima estação
(regra α2). Quando uma mensagem é recebida por uma estação em espera, a regra α3
pode ser aplicada e a mensagem é repassada para a próxima estação. Se a estação que
recebe o token está ativa, então a regra α4 pode ser aplicada, removendo a mensagem do
anel e enviando o token para a próxima estação. Regra α5 é aplicada para inserir novas
estações no anel. Este modelo tem um espaço de estados infinito e gera um número in-
finito de computações, uma vez que pode-se ter sempre uma nova estação no grafo-estado.
Se eliminarmos a regra α5, o espaço de estados do modelo se torna finito.
5. Conclusões
Neste artigo apresentamos um comparativo entre os métodos de verificação para sistemas
descritos usando gramática de grafos. Neste comparativo, foram analisadas as principais
abordagens existentes para GGs bem como as ferramentas que dão suporte a elas. Nesta
análise, ficou claro que uma abordagem que possa usufruir dos pontos fortes de cada um
dos métodos pode ser bastante interessante, visto que em alguns aspectos um é comple-
mentar ao outro, como por exemplo nos tipos de propriedades. Como trabalhos futuros
pretendemos estudar a possibilidade de integrar de alguma forma model-checking e prova
de teoremas em um framework para especificação e verificação formal de gramática de
grafos.