Вы находитесь на странице: 1из 28

Model Checkers: Uma anlise de ferramentas para a linguagem de programao C

TRABALHO DE GRADUAO

Pedro Montenegro (pmr@cin.ufpe.br) 2007.1

ROTEIRO

Contexto
Introduo Objetivos

Model Checking
Ferramentas para a linguagem C Anlise das Ferramentas Estudo de Caso Concluso Trabalhos Futuros

Contexto

Cooperao de pesquisa entre o CIn/UFPE e uma Empresa de So Paulo


Sistema do complexo de metr de Santiago no Chile Componente crtico do metr Controladora Geral de Portas (CGP) Casos de Uso Funo abre portas

Funo fecha portas

Introduo

Sistemas crticos necessitam de garantia de funcionamento perfeito


Falhas podem levar a perdas financeiras ou de vidas humanas Um dos pontos fundamentais para garantir esse alto nvel de qualidade a anlise formal de propriedades

Necessidade de suporte ferramental que

automatize o processo de verificao

Objetivos

Procurar Ferramentas Model Checkers para a linguagem de Programao C Anlise das ferramentas mais utilizadas em relao as caractersticas, as abordagens que utilizam, as vantagens e desvantagens Apontar a ferramenta que apresentou os melhores resultados para o contexto do trabalho

Model Checking

Nos ltimos anos as indstrias reconheceram os verificadores de modelos como uma ferramenta promissora para o desenvolvimento de sistemas

Provou ser uma tecnologia bem sucedida para

verificar exigncias

Tcnica totalmente automtica que analisa o espao de estados finito de sistemas crticos

Verifica automaticamente a validade de propriedades


acerca do comportamento de sistemas

Model Checking

Para realizar a validao das propriedades de sistemas seguem-se trs passos:

Modelagem
Especificao Verificao

Model Checking

Tipos de Propriedades Segurana Atingibilidade (Reachability) Razoabilidade (Fairness) Ausncia de Deadlock Vivacidade (Liveness)

Verificao de Modelos na prtica

Problemas como a exploso de estados e especificao de propriedades


Estratgias

Model Checking

Abordagens da tcnica Bounded Model Checking (BMC) Abstrao de predicados


Usando um provador de teoremas

Usando resolvente SAT

Migrao de C para outro modelo

Ferramentas

SLAM
Impulsionou o uso de verificao de modelos Usado com sucesso em Device Drivers do Windows O SLAM tem trs componentes principais:
c2bp - avalia um abstrao booleana do programa bebop - executa a anlise da atingibilidade de

programas booleanos
newton - verifica a praticidade dos caminhos de erros

O SLAM usa o zapato como seu provador de teorema

Ferramentas

BLAST
A abordagem a mesma seguida no SLAM Usa conceitos de abstrao preguiosa Composto pelo spec.opt e pblast.opt

Usa Simplify e vampyre como provadores de


teorema

Ferramentas

MOPS
Ferramenta de anlise esttica Abordagem baseada em CFG (grfico do fluxo de controle) Consiste em um parser e um verificador de modelos
Parser - constri um CFG do programa

Verificador de modelos - constri um PDA do CFG e verifica

se o PDA vai de encontro propriedade de segurana

Ferramentas

CBMC
Bounded Model Checker (verificador de modelos limitado) Usa um resolvente SAT Procura por um contra-exemplo, limitado por algum inteiro N.

Na maioria dos casos CBMC pode determinar o limite


superior N. Se falhar, o usurio pode ento fornecer um limite superior
Usada como ferramenta para encontrar erros e no

provar a exatido

Ferramentas

SATABS
MAGIC / ComFoRT Resumo das ferramentas

Anlise de Ferramentas

SLAM

Potencialidades
Sucesso com Device Drivers Suporta procedimentos recursivos

Limitaes
Tratamento dos ponteiros

Abstrair de uma linguagem com ponteiros (C) a uma sem ponteiros (programas booleanos) difcil
Foco no domnio da aplicao de Device Drivers Parte de um produto comercial (SDV) da Microsoft Atualmente, no suporta programas muito grandes

Anlise de Ferramentas

BLAST
Potencialidades
Usa a abstrao sob demanda para reduzir o refinamento

desnecessrio da abstrao Economiza espao e tempo


Atualmente, diz suportar muitas construes sintticas de

C, incluindo estruturas e procedimentos


Encontrou erros em diversos Drivers

Limitaes
A verso atual no suporta ponteiros para funo

Funes recursivas no so suportadas

Anlise de Ferramentas

MOPS
Potencialidades
Escalabilidade e eficincia por considerar somente o fluxo

de controle e por ignorar a maioria do fluxo de dados


Habilidade em relatar somente um trace de erro para

cada causa do erro Reduz significativamente o nmero de erros que o

programador tem que rever


Limitaes
Preciso afetada por priorizar a escalabilidade e ignorar o

fluxo de dados

Anlise de Ferramentas

CBMC
Potencialidades
A principal o suporte a maioria das estruturas de C

Escalabilidade um grande diferencial do CBMC


Usa um resolventes SAT Interface amigvel

Limitaes
No poder provar a ausncia de erros na maioria dos casos

reais
Por priorizar a escalabilidade, a preciso comprometida

Anlise de Ferramentas
Trs propriedades so consideradas:
Soundness Completeness

Termination

Anlise de Ferramentas

Difcil apontar uma ferramenta que seja a melhor Para cada situao uma ferramenta pode se encaixar melhor
Depende das caractersticas do cdigo C do programa que se quer

analisar

Da forma mais geral possvel


BLAST

Estudo de Caso

Anlise das estruturas de C utilizadas no componente Ferramenta utilizada : CBMC Utilizao da funo assert Verificao do estado que se encontra o programa e suas variveis de controle depois da execuo de uma funo do componente
Problemas como comportamento indesejado
Determinar a alcanabilidade dos estados implementados no

componente

Utilizao de um plugin para o eclipse

Estudo de Caso

Variveis do sistema precisaram ser declaradas no componente


Os nomes das variveis foram trocados Uma funo main foi declarada Velocidade mxima para abertura de portas Documento de requisitos -> 6Km/h Cdigo -> 3Km/h

Foram verificados diversos fluxos do sistema, sendo que dois deles foram selecionados e relatados: Um fluxo de uma operao de abrir e fechar portas com velocidade menor que 3Km/h A verificao da alcanabilidade dos estados aps a execuo da funo n vezes atravs do comando while (n limitado pela ferramenta)

Estudo de Caso

Exemplo do primeiro fluxo selecionado:

Estudo de Caso

Com relao ao outro fluxo selecionado, um potencial problema foi encontrado

Foi escolhido um valor limite para as iteraes do loop ao qual a


funo foi submetida Valor que levasse em conta um grande nmero de anlises e no levasse muito tempo para fazer as verificaes

Problema com relao a atingibilidade do estado 6 Apesar de haver a possibilidade da varivel ser alterada em outro componente do sistema Anlise foi feita somente em relao ao componente, considerando apenas as atribuies feitas pela funo

Estudo de Caso

A estratgia adotada foi a colocao do assert(CGP_informarProximoEstadoDireita_MEMORIA<=5). Mostrando que o assert sempre verdade, mostro que a varivel de estado nunca assume valores maiores que 5, ou seja, no assume o

valor 6, e conseqentemente, o estado 6 no foi alcanado.

Concluso

Difcil apontar uma ferramenta que seja a melhor Para cada situao uma ferramenta pode se encaixar melhor Depende das caractersticas do cdigo C do programa

Programas Seqenciais Extenses esto sendo desenvolvidas para programas concorrentes.

Algumas estruturas de C ainda no so suportadas

Tanto as ferramentas quanto as abordagens ainda tm muito a


evoluir Pesquisas esto sendo realizadas nesse sentido

Contribuies

Procura de ferramentas Model Checkers para a linguagem C.

Descrio e anlise das abordagens utilizadas pelas ferramentas para a linguagem C.

Descrio do funcionamento das principais ferramentas. Anlise das principais caractersticas das ferramentas mais utilizadas.

Aplicao prtica de um Model Checker em um componente do metr, relatando os resultados obtidos, as verificaes realizadas e os problemas encontrados.

Trabalhos Futuros

Estudo mais aprofundado da utilizao da lgica temporal


nas ferramentas Formulao de propriedades importantes na lgica

temporal que um sistema crtico precisa validar


Submeter estas propriedades s diversas ferramentas e relatar os resultados

Estudo de possveis melhorias das ferramentas


Abordagem utilizada Implementao