• Nenhum resultado encontrado

De acordo com Freitas [38], duas técnicas automatizadas de prova po- dem ser utilizadas: a prova de teoremas e a verificação de modelo. A provas de teoremas consiste na construção de um conjunto de teoremas a par- tir da especificação, capazes de verificar e validar todas as suas propriedades. Já a verificação de modelo consiste em verificar as propriedades por meio de uma análise exaustiva de todos os estados possíveis que um sistema poderia assumir durante a sua execução.

Considerando a especificação formal da sintaxe abstrata do Guaraná DSL, a prova por meio da verificação de modelo não é a mais apropri- ada. Isso ocorre pois a tecnologia Guaraná é uma linguagem de modelagem e não um modelo propriamente dito. Nesse sentido ela é utilizada para gerar diferentes modelos, cada qual com propriedades específicas. Assim, cada mo- delo gerado com o Guaraná tem um conjunto distinto de estados possíveis. Esses modelos poderiam ser submetidos a esse estilo de prova.

No entanto existem restrições mesmo em casos onde a aplicabilidade da verificação de modelo poderia ser aplicada. Baier e outros [9] conside- ram que a análise exaustiva de todos os estados possíveis de um sistema (modelo) é praticamente inviável e complementa que, na prática, depen- dendo do tamanho e da complexidade do sistema, apenas um pequeno subconjunto destes estados é tratado, deixando a verificação incompleta.

Bouajjani e outros [14] também argumentam que todos os algoritmos de verificação de modelo tem complexidade exponencial ao tamanho do sistema dificultando, assim, a sua prova completa se aplicados à sistemas grandes.

Já a prova de teoremas pode ser utilizada com bastante propriedade, vali- dando as especificidades da linguagem. Moura [83] destaca que uma vez validadas através de teoremas, elas sempre serão válidas em todos os ca- sos. Assim, todos modelos gerados com o Guaraná DSL sempre estarão sujeitados às regras especificadas e validadas por esse estilo de prova.

Freitas [38], no entanto, considera que, independente de ferramenta, a prova de teoremas sempre é difícil. Ledru [68] cita duas limitações importan- tes para a prova de teoremas: a curva de aprendizado para demonstrar teoremas e o desempenho quando inúmeros esquemas estão envolvidos pelo teorema.

7.2

Análise dos Teoremas

De acordo com Ledru [68], o Z/EVES fornece suporte para prova de teore- mas de especificações com a notação Z. O autor também destaca que a

ferramenta pode ser utilizada no modo interativo ou automático sendo que o modo automático pode provar teoremas mais simples. Para provar teoremas mais complexos, é necessário a intervenção do desenvolvedor, através da in- serção de comandos de prova. Contudo, teoremas simples nem sempre são sinônimo de teoremas curtos. Neste sentido, teoremas longos, porém sim- ples, muitas vezes podem gerar provas longas que podem ser manipulados automaticamente.

Saaltink [98] também destaca que o Z/EVES é capaz de fazer a verificação de sintaxe e de tipo, além de gerar inúmeros teoremas de forma automática sobre especificação, e, com isso, permitir a prova de suas propriedades. Os teoremas são gerados automaticamente ou especificados pelo desenvolvedor. A Figura §7.1 ilustra um exemplo do teorema de Saaltink. O rótulo defi- nido para o teorema indica o tipo de prova. Um rótulo pode ser definido como:grule, frule, rule ouaxiom. O parâmetroability que precede o rótulo é usado para habilitar ou desabilitar o uso automático do teorema durante uma prova, caso o mesmo seja umagrule, frule ourule[37]. Além disso, o teorema é identificado por um nome e possui um predicado com o comando da prova.

Figura 7.1:Exemplo de teorema (de Saaltink [98])

Cabe ressaltar que os teoremas são classificados de acordo com o ró- tulo que precede o nome do teorema. As definições para cada rótulo de teorema estão descritas em Freitas e Woodcock [37]:

Uma assumption rule é um teorema gerado automaticamente pela ferra- menta para todas as definições axiomáticas e para cada um dos elementos que compõem um tipo livre. Este teorema é rotulado como grule e é usado para expressar informações sobre tipos de elementos de uma especificação.

Uma forward rule é um teorema que é etiquetado como frule e que pos- sui o padrão P ⇒ Q. O Z/EVES gera automaticamente uma frule para cada esquema definido na especificação, onde Q é composto pela parte declara- tiva do esquema de nome P. Desta forma, durante uma prova os tipos dos componentes de um esquema são conhecidos mesmo que o esquema não te- nha sido expandido. Sempre que P está no contexto da prova afrule P⇒ Q é disparada e o predicado Q é adicionado ao contexto da prova.

7.2. Análise dos Teoremas 99

Os teoremas etiquetados comorule são uma regra de reescrita. Umarule

permite reescrever predicados transformando-os em predicados de primeira ordem, permitindo que sejam facilmente verificados. A Ferramenta Z/EVES gera váriasrules automaticamente para uma especificação em que um predi- cado “A” é substituído por um predicado “B” em uma sentença lógica em que A é uma sub-fórmula.

Assim, o Z/EVES gera outra classe de teoremas etiquetados comoaxiom. Estes teoremas expressam propriedades e fatos de uma especificação. Além disso, os teoremas que estabelecem pré-condições e inicialização de esta- dos do sistema também são expressos como axiomas, porém estes dois últimos não são gerados de forma automática.

Figura 7.2:Prova de teoremas rotulados como axiom.

Para os teoremas etiquetados como axiom, é necessário a intervenção do desenvolvedor para concluir a prova. Para isto o Z/EVES proporciona vá- rias maneiras de tratar uma prova de um teorema etiquetado com o rótulo

menta, cf.Figura §7.2. Assim, dependendo do tipo e da complexidade da prova, o desenvolvedor pode utilizar uma ou mais opções específicas com o objetivo de validar a especificação.

Documentos relacionados