Você está na página 1de 11

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/221412147

Graph Grammars: A Comparison between


Verification Methods

Conference Paper · August 2011


DOI: 10.1109/WEIT.2011.17 · Source: DBLP

CITATIONS READS

4 69

4 authors:

Andre Mello Luiz Carlos Lemos Junior


4 PUBLICATIONS 5 CITATIONS Universidade Federal de Pelotas
4 PUBLICATIONS 5 CITATIONS
SEE PROFILE

SEE PROFILE

Luciana Foss Simone André da Costa Cavalheiro


Universidade Federal de Pelotas Universidade Federal de Pelotas
53 PUBLICATIONS 202 CITATIONS 44 PUBLICATIONS 107 CITATIONS

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Formal Specification of Multiagent Systems View project

All content following this page was uploaded by Andre Mello on 16 June 2014.

The user has requested enhancement of the downloaded file.


Gramática de Grafos: um comparativo de
métodos de verificação
André Moura de Mello, Luiz Carlos Lemos Junior,
Luciana Foss, Simone André Costa Cavalheiro
1
Centro de Desenvolvimento Tecnológico – Universidade Federal de Pelotas (UFPEL)
Caixa Postal 354 - 96010-900 - Pelotas, RS - Brasil
{ammello,lclemos,lfoss,simone.costa}@inf.ufpel.edu.br

Abstract. Graph grammars are a formal specification language well-suited to


applications in which states have a complex topology (involving not only many
types of elements, but also different types of relations between them) and in
which behaviour is essentially data-driven, that is, events are triggered basically
by particular configurations of the state. Many reactive systems are examples
of this class of applications, such as protocols for distributed and mobile sys-
tems, simulation of biological systems, and many others. Graph grammars can
be analysed through model-checking and theorem proving. Each verification
technique has arguments for and against its use, but we can say that model-
checking and theorem proving are complementary. The main aim of this paper
is to present the existing approaches for the analysis of graph grammars con-
sidering each one of these techniques, describing a brief comparative between
them.

Resumo. Gramática de grafos é uma linguagem de especificação formal bas-


tante adequada para a descrição de 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 da-
dos, isto é, eventos são disparados por configurações particulares do estado.
Vários sistemas reativos são exemplos desta classe de aplicações, como pro-
tocolos para sistemas distribuı́dos e móveis, simulação de sistemas biológicos,
entre outros. Gramática de grafos podem ser analisadas através das técnicas de
verificação de modelos e de prova de teoremas. 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. O objetivo deste artigo é o de apresen-
tar as principais abordagens existentes para a análise de gramática de grafos
dentro de cada uma destas técnicas, traçando um comparativo entre elas.

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.

2. Verificação de Modelos versus Prova de Teoremas


Verificação automática de modelos (model-checking - termo mais encontrado na liter-
atura) e prova de teoremas são metodologias muito utilizadas para verificação formal de
sistemas de software e hardware, as quais buscam certificar o comportamento especifi-
cado em linguagem matemática. Para isso, é criado um modelo que parte de abstrações
do sistema no mundo real e o descreve claramente [?, ?].
Existem inúmeras linguagens para a especificação de um modelo dentro da técnica
de model-checking, as quais podem ser interpretadas por ferramentas denominadas model-
checkers. De uma maneira geral, o modelo construı́do é traduzido para uma máquina de
estados finitos (grafo) que simula o comportamento do sistema. Neste grafo, os vértices
correspondem aos estados em que o sistema poderá se encontrar durante a sua execução
e as arestas correspondem às mudanças de um estado para outro. Problemas como a
explosão de estados e a representação de modelos com número infinito de estados im-
pedem que esta técnica seja aplicada a muitas classes de problemas [?, ?]. No entanto,
quando aplicável, a verificação de modelos permite constatar se em algum momento da
sua execução, as transições entre estados podem levar o modelo a um estado inaceitável
(que contraria as regras de especificação do modelo).
A verificação é executada automaticamente sem a intervenção do usuário, sendo
que para isso, deve-se construir o modelo e especificar as propriedades que se deseja veri-
ficar. De uma maneira geral, o processo de verificação é bastante simples, a barreira maior
está em descrever as propriedades a serem verificadas (geralmente usando lógica tempo-
ral), o que demanda certa experiência para essa etapa. Quando o verificador de modelos
acaba o processo de verificação, se não encontrar nenhuma violação das propriedades, a
resposta da ferramenta é que o modelo satisfaz todas as propriedades especificadas. Caso
contrário, ele geralmente aponta onde existem caminhos que não satisfazem o que foi
especificado, fornecendo contra-exemplos para ajudar na depuração do problema.
Como o número de estados de um sistema normalmente é exponencial ao tamanho
da sua descrição, a principal desvantagem da verificação de modelos é o problema de
explosão de estados. Sabe-se que existem algumas maneiras de contornar o problema
[?, ?, ?]. Muito progresso foi feito para lidar com essa dificuldade, e muitas técnicas
surgiram com essa finalidade. Podem ser citadas algumas delas [?]: abstração, técnica
de redução por ordem parcial, representação simbólica, entre outros. No entanto, estes
métodos geralmente derivam o modelo como uma sub ou super-aproximação do compor-
tamento do sistema, o que pode resultar em relatórios de erro ou relatórios de verificação
que não mostram a realidade do sistema por tratar de aproximações do comportamento.
Prova de teoremas é uma técnica em que tanto o sistema como as propriedades
desejadas são descritas como fórmulas em uma lógica matemática. Um sistema formal
define o sistema de software ou hardware, estabelecendo um conjunto de axiomas e regras
de inferência. O processo de verificação consiste em encontrar a prova da propriedade
necessária a partir de axiomas ou lemas intermédios [?]. A prova de teoremas permite
lidar diretamente com espaço de estados infinito, pois se baseia em técnicas de prova
como a indução estrutural que permite a prova sobre domı́nios infinitos. A desvantagem
desta técnica é que, em geral, as provas são semi-automatizadas e o usuário, para auxiliar
nas provas, deve ter um conhecimento avançado sobre a ferramenta e sobre o sistema que
está sendo especificado.
Uma estratégia de prova comumente utilizada para a verificação de propriedades
quando aplicada a técnica de prova de teoremas é a indução matemática. Após especi-
ficado o sistema a ser analisado como um sistema formal, utilizando lógica matemática,
a propriedade é especificada também usando fórmulas lógicas. O processo de prova é
realizado da seguinte maneira: inicialmente a propriedade é verificada para o caso base
(em geral o que define o estado inicial do sistema) e então é verificada se a propriedade
é preservada pela aplicação das regras de inferência. Usualmente estas provas não são
concluı́das de forma automática e o usuário deve auxiliar o provador de teoremas que está
sendo utilizado: ou adicionando novas hipóteses ou fazendo simplificações algébricas, ou
enunciando e provando propriedades intermediárias, entre outros.
Importante salientar que, quando esta técnica de prova é utilizada, as propriedades
são enunciadas em lógica de primeira (ou possivelmente de alta) ordem e devem ser
preservadas por todos os estados alcançáveis do sistema. Não é usual fazer provas de pro-
priedades temporais quando se adota esta técnica de análise. As propriedades provadas
tratam sobre caracterı́sticas dos estados alcançáveis e não das possı́veis computações.
Diversas propostas propõem integrar estes dois métodos de verificação [?, ?, ?,
?, ?], de forma a explorar as vantagens de cada um deles. Existem pelo menos duas
abordagens principais em que esta integração pode ser realizada: na primeira, busca-se
adicionar técnicas de prova de teoremas dentro de verificadores de modelos, de forma a
permitir que um número grande de estados possam ser verificados; na segunda, procura-se
implementar algoritmos de verificação automática de modelos nos provadores de teore-
mas, permitindo que com a mesma abstração para a definição do sistema, uma maior
variedade de propriedades possa ser analisada. Algumas propostas [?, ?], utilizam os
dois métodos de análise, isto é, especificações grandes são divididas em componentes
menores, cujas correções locais são feitas com verificadores automático de modelos e a
correção da composição, que dizem respeito a correção global do sistema, é feita com o
auxı́lio de provadores de teoremas.

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.

Figura 1. Gramática de Grafos para o Token Ring

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.

4. Métodos de Verificação para GG


Nesta seção é feita uma breve descrição das principais abordagens propostas para a
verificação de gramática de grafos, utilizando model-checking ou prova de teoremas.

4.1. Verificação de Modelos para GG


Diversos métodos e ferramentas foram propostos para permitir a aplicação da técnica de
model-checking para o formalismo de gramática de grafos.
GROOVE (GRaphs for Object-Oriented Verification) [?] é uma ferramenta que
permite a especificação direta do sistema em gramática de grafos e a partir dela, gera o
espaço de estados do modelo. Instanciando uma propriedade em lógica temporal (LTL ou
CTL), o sistema de transição resultante é verificado de forma automática. A ferramenta
permite que sejam definidos grafos com atributos (integrando tipos de dados nos grafos) e
também condições de aplicacões negativas, descrevendo estruturas proibidas na aplicação
de uma regra (o que muitas vezes aumenta a expressividade da regra). Uma das desvan-
tagens no uso de tal ferramenta é que ela não fornece o contra-exemplo, quando uma
propriedade é violada. Outra questão, abordada em [?] é que o GROOVE não compete
em tempo de execução com outros verificadores de modelos estabelecidos, como SPIN
[?] por exemplo.
Por essa razão, uma estratégia comum que tem sido adotada é a tradução de
gramática de grafos em linguagens que são entradas de verificadores de modelos estabele-
cidos. Neste caso, os principais passos para a verificação de especificações em gramáticas
de grafos são [?]: i) traduz-se a especificação para um modelo de verificação que serve
como entrada de um model checker; ii) definem-se as propriedades em alguma lógica
temporal; iii) verifica-se cada propriedade no modelo (model-checking); iv) analisam-se
os resultados.
Foss [?] propõe uma tradução de uma classe especı́fica de gramática de grafos,
Gramática de Grafos Baseada em Objetos (GGBO) para π-calculus [?]. GGBOs incor-
poram conceitos como comunicação por troca de mensagens e encapsulamento, que per-
mitem a descrição de sistemas baseados em objetos. A partir deste método, verificadores
automáticos (por exemplo, HAL [?] e Mobility Workbench [?]) podem ser usados para
a verificação automática. A compatibilidade semântica da tradução pode ser encontrada
em [?]. No entanto, como destacado em [?], alguns problemas foram encontrados nesta
abordagem: os modelos tiveram que ser consideravelmente restritos, de forma que a es-
trutura interna dos objetos não puderam ser representadas e também limitações foram
encontradas no uso dos verificadores existentes (em especial, no suporte ao operador de
replicação do π-calculus). Como resultado, apenas exemplos pequenos podem ser verifi-
cados através desta abordagem.
Outra proposta [?] traduz especificações GGBO para PROMELA (PRO-
cess/PROtocol MEta LAnguage), linguagem de entrada do verificador SPIN (Simple
Promela INterpreter). SPIN [?] é uma ferramenta bastante eficiente (em termos de tempo
de processamento) e permite que propriedades sejam especificadas em lógica tempo-
ral. Contra-exemplos são fornecidos quando as propriedades são violadas. Entretanto,
esta abordagem permite que sejam provadas somente propriedades baseadas em eventos.
Verificação de propriedades baseadas em estados somente é possı́vel para especifições
com um número estático de objetos. Para especificações com criação dinâmica de objetos,
seria necessário criar dinamicamente novas variáveis globais (caracterı́stica não suportada
pela ferramenta). Então, esta proposta se mostra adequada para provar propriedades sobre
possı́veis derivações de GGBOs.
Uma outra abordagem [?] propõe uma extensão de gramática de grafos para
modelar explicitamente restrições de tempo, permitindo a verificação automática de pro-
priedades através do verificador UPPAAL [?]. Nesta proposta, a semântica de sistemas
de tempo real especificados em gramática de grafos é definida em termos de autômatos
temporizados [?], linguagem de entrada do UPPAAL. A linguagem para especificação
de propriedades nesta ferramenta é um subconjunto de TCTL (CTL Temporizada) [?, ?].
No entanto, a tradução da gramática especificada para o autômato temporizado, embora
definida, deve ser feita de forma manual.
Paolo Baldan and Barbara König propõem [?] aproximar o comportamento de sis-
temas de transformação de grafos (GTSs) usando uma cadeia finita de sub-aproximações
ou de super-aproximações, num nı́vel k de precisão do unfolding completo do sistema.
Um GTS é um conjunto finito de regras de grafos. Então, uma gramática de grafos
pode ser vista como um GTS com um estado inicial. A semântica de unfolding de
uma gramática de grafos [?] define um modelo operacional de computação que repre-
senta todas suas possı́veis derivações sequenciais e concorrentes (isto é, todas as suas
computações). Ela é geralmente infinita para sistemas não triviais, e portanto não pode
ser diretamente verificada por model-checking. As sub-aproximações do comportamento
de uma gramática de grafos são obtidas truncando o comportamento do unfolding até
uma profundidade finita k. As super-aproximações são alcançadas construindo um grafo-
Petri (que constitui uma rede de Petri [?] com uma estrutura de hipergrafo nos lugares)
até uma profundidade k (a k-cobertura). Uma rede de Petri ou rede de transição é
uma das várias representações matemáticas para sistemas distribuı́dos discretos. Uma
cobertura representa todas as possı́veis computações (mas possivelmente mais). As sub-
aproximações não permitem executar todas as computações do sistema original, por trun-
car as derivações e as super-aproximações não permitem verificar propriedades do tipo
“existe uma execução”, devido a presença de execuções que não ocorrem. No entanto,
diversas outras propriedades podem ser verificadas em cada caso e uma ferramenta para
análise de GTs (AUGUR) usando as super-aproximações está em desenvolvimento [?].

4.2. Prova de Teoremas para GG


Até o momento, apenas uma abordagem [?, ?] foi proposta para permitir a prova de teo-
remas de gramática de grafos. O trabalho propõe uma aboragem lógica e relacional
para gramática de grafos, provendo uma codificação de grafos e regras com relações.
As relações que definem uma gramática definem axiomas que podem ser utilizados nas
provas. Condições lógicas (usando lógica de primeira ordem e teoria dos conjuntos) im-
postas sobre as relações garantem que elas codificam grafos e morfismos de grafos. Estas
condições são declaradas como invariantes do modelo. A aplicação de uma regra é de-
scrita por um evento que pode ser visto como uma regra de inferência: quando um con-
junto de variáveis satisfaz condições de guarda (o que garante a existência de um match
em um grafo-estado), a aplicação de regra é realizada.
As propriedades a serem provadas devem ser declaradas como invariantes (pro-
priedades estruturais a serem provadas sobre todos os estados). O método de prova
utilizado é o de indução matemática: no caso base, a propriedade é verificada para o
grafo inicial e então, no passo indutivo, a propriedade é verificada para cada regra da
gramática aplicável a um grafo alcançável (considerando, por hipótese de indução, que a
propriedade é válida para o grafo alcançável). O processo de prova é semi-automático,
exigindo interação com o usuário. Ele procede até que um teorema auxiliar seja requerido;
neste caso, este teorema deve ser demonstrado antes de retornar a prova do objetivo origi-
nal. Em muitos casos, a prova de uma propriedade depende da prova de um outro conjunto
de propriedades e teoremas. Entretanto, todos os teoremas auxiliares podem ser usados
como regras de simplificação, podendo ser reutilizados em provas futuras.
A abordagem relacional foi definida para o caso de grafos tipados simples e es-
tendido para grafos com atributos e gramáticas com condições de aplicação negativas [?].
A proposta para grafos simples foi traduzida para estruturas event-B [?], o que permitiu
o uso dos provadores disponı́veis para event-B (através da plataforma Rodin [?]) para o
desenvolvimento das provas.

4.3. Análise Comparativa dos Métodos de Verificação


Os métodos de verificação para modelos descritos em gramática de grafos apresenta-
dos neste artigo apresentam prós e contras que devem ser levados em conta quando se
deseja escolher um deles. A Tabela 1 sumariza as principais caracterı́sticas que difer-
enciam as abordagens previamente descritas. Nesta tabela, são destacados os métodos
de verificação disponı́veis para cada abordagem: model-checking (MC) ou prova de teo-
remas (PT); os tipos de sistemas com os quais cada abordagem pode lidar: sistemas de
estados finitos (EF) ou sistemas de estados infinitos (EI); os tipos usados de gramáticas de
grafos: GG tipadas (Tipos), GG com atributos (Atrib.), GG com condições de aplicação
negativas (NACs) e GG temporizadas (Tempo); as linguagens usadas para especificar as
propriedades a serem verificadas: lógicas CTL (Computation Tree Logic), TCLT (Timed
Computation Tree Logic), ACTL (Action Computational Tree Logic), LTL (Linear Tem-
poral Logic) [?], [?] e µ-Calculus [?], além de lógica de primeira ordem (Lóg. 1a
ord.) e teoria dos conjuntos (Teo. conj.); os tipos de propriedades verificadas: sobre
as computações (Comp) ou sobre as estruturas dos estados (Est); as abordagens que re-
alizam verificação diretamente sobre a gramática de grafos (Sim) e aquelas que usam
algum tipo de tradução para outra linguagem (Não); as abordagens que possuem ferra-
mentas disponı́veis para especificação (Espec), verificação (Verif) e simulação (Sim); e as
abordagens que fornecem uma interface gráfica para a especificação das gramáticas.

Tabela 1. Comparativo entre métodos de verificação para gramática de grafos


GROOVE AUGUR SPIN Mobility UPPAAL Rodin
Workbench
Verificação MC MC MC MC MC PT
Tipo de Sistema EF EI (aprox.) EF EF EF EI
Tipos de Tipos Atrib. Tipos Tipos Tipos Tipos
Gramáticas NACs Atrib. Atrib. Atrib.
Tempo NACs
Linguagem de CTL, LTL LTL, ACTL LTL µ-Calculus TCLT Lóg. 1a ord.
especificação Teo. conj.
de propriedades
Tipos de propr. Comp Comp Comp Comp Comp Est
Est (limit.)
Análise direta Sim Não Não Não Não Não
sobre GGs
Suporte de Espec Espec Espec Verif Verif Verif
ferramentas Verif Verif Verif
Sim Sim
Interface gráfica Sim Sim (AGG) Sim Não Não Não
de especificação

Aspectos como tipo do sistema e propriedades a serem verificadas, familiari-


dade com as ferramentas e linguagens de especificação são importantes para a escolha
do método. Pode-se destacar como pontos fortes das abordagens para verificação de
modelos a realização automática das provas, sem necessidade de intervenção do usuário.
Além disso, a abordagem do GROOVE fornecem uma ferramenta que lida diretamente
com a especificação de gramática de grafos. Além disso, prova de propriedades sobre
as computações só está disponı́vel para as abordagens de model-checking. A principal
desvantagem está no problema de explosão de estados quando os sistemas tornam-se
maiores. Esta restrição algumas vezes torna inviável o uso destas abordagens para sis-
temas reais. Com a abordagem aproximativa proposta por [?], pode-se também verificar
alguns tipos de propriedades, ainda que limitadas, para sistemas com um número infinito
de estados.
Para a abordagem da plataforma Rodin, tem-se como principal vantagem a possi-
bilidade de provas sobre sistemas infinitos ou com um número muito grande de estados.
Como desvantagem, tem-se a necessidade da intervenção do usuário para completar as
provas, o que requer conhecimentos da lógica e dos métodos de provas usados na ferra-
menta. Além disso, a tradução da gramática de grafos para o Event-B não é automatizada.

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.

View publication stats

Você também pode gostar