Um verificador de modelos em K para um subconjunto da linguagem Circus

Detalhes bibliográficos
Ano de defesa: 2016
Autor(a) principal: SANTOS, Fabio Soares dos
Orientador(a): MOTA, Alexandre Cabral
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pernambuco
Programa de Pós-Graduação: Programa de Pos Graduacao em Ciencia da Computacao
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
Link de acesso: https://repositorio.ufpe.br/handle/123456789/22450
Resumo: Testes constituem uma parcela significativa da energia despendida em projetos voltados ao desenvolvimento de software. Estima-se que entre 30% a 50% do custo total do projeto é destinado a testes. Esta necessidade de verificar a regularidade de sistemas é bastante antiga e nos últimos anos a busca por novas técnicas e ferramentas que mitiguem o esforço gasto nestas verificações vem se acentuando. Neste contexto, uma técnica que se destaca é a de verificação de modelos (Model checking) que consiste em explorar exaustivamente todos os estados alcançáveis de um determinado sistema no intuito de descrever cenários que indiquem possíveis comportamentos, embasando tal verificação em matemática precisa e inequívoca. Esta técnica tem despertado o interesse de muitas indústrias devido ao sucesso obtido pelo apoio das ferramentas de verificação de modelos (model checkers) em vários projetos de alta complexidade. Estes verificadores são ferramentas que exploram um sistema de transições rotuladas (LTS), construído a partir de algumas especificações (um modelo M), para determinar se uma dada fórmula (f) em lógica temporal, ou propriedade, é válida; ou simplesmente, M |ù f. O presente trabalho apresenta uma forma sistemática de construir um verificador de modelos LTL para um subconjunto da linguagem Circus totalmente baseado na semântica operacional desta linguagem. Mas em vez de codificar diretamente o verificador de modelos em alguma linguagem de programação, é usado o framework K por se tratar de um framework semântico executável à base de reescrita em que as linguagens de programação, sistemas de tipos e ferramentas de análise formais podem ser definidos usando configurações, computações e regras. Além disso, a ferramenta resultante deste trabalho é demostrada com alguns estudos de caso no intuito de comparar seu desempenho bem como aspectos qualitativos com outros verificadores de modelos.