Verificação e comprovação de erros em códigos C usando bounded model checker
Autor(a) principal: | |
---|---|
Data de Publicação: | 2011 |
Outros Autores: | |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFAM |
Texto Completo: | http://tede.ufam.edu.br/handle/tede/2965 |
Resumo: | A utilização de sistemas baseados em computador em diversos domínios aumentou significativamente nos últimos anos. Um dos principais desafios no desenvolvimento de software de sistemas críticos é a garantia da sua correção e confiabilidade. Desta forma, a verificação de software exerce um papel importante para assegurar a qualidade geral do produto, visando principalmente características como previsibilidade e confiabilidade. No contexto de verificação de software, os Bounded Model Checkers estão sendo utilizados para descobrir erros sutis em projetos de sistemas de software atuais, contribuindo eficazmente neste processo de verificação. O valor dos contra-exemplos e propriedades de segurança gerados pelo Bounded Model Checkers para criar casos de testes e para a depuração de sistemas é amplamente reconhecido. Quando um Bounded Model Checking (BMC) encontra um erro ele produz um contra-exemplo. Assim, o valor dos contra-exemplos para depuração de software é amplamente reconhecido no estado da prática. Entretanto, os BMCs frequentemente produzem contra-exemplos que são grandes ou difíceis de entender ou manipular, principalmente devido ao tamanho do software e valores escolhidos pelo solucionador de satisfabilidade. Neste trabalho visamos demonstrar e analisar o uso de método formal (através da técnica model checking) no processo de desenvolvimento de programas na linguagem C, explorando as características já providas pelo model checking como o contra-exemplo e a identificação e verificação de propriedades de segurança. Em face disto apresentamos duas abordagens: (i) descrevemos um método para integrar o Bounded Model Checker ESBMC como o framework de teste unitário CUnit, este método visa extrair as propriedades geradas pelo ESBMC para gerar automaticamente casos de teste usando o rico conjunto de assertivas providas pelo framework CUnit e (ii) um método que visa automatizar a coleta e manipulação dos contra-exemplos, de modo a instanciar o programa C analisado, para comprovar a causa raiz do erro identificado. Tais métodos podem ser vistos como um método complementar para a verificação efetuada pelos BMCs. Demonstramos a eficácia dos métodos propostos sobre benchmarks públicos de código C. |
id |
UFAM_d93e7d18dc07f80cf86a03ad005afcfa |
---|---|
oai_identifier_str |
oai:https://tede.ufam.edu.br/handle/:tede/2965 |
network_acronym_str |
UFAM |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFAM |
repository_id_str |
6592 |
spelling |
Verificação e comprovação de erros em códigos C usando bounded model checkerModel checkingBounded model checkerPropriedades de segurançaContra-exemplosComprovação de ErrosModel checkingBounded modelcheckerSafety propertiesCounterexamplesProving errorsCIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃOA utilização de sistemas baseados em computador em diversos domínios aumentou significativamente nos últimos anos. Um dos principais desafios no desenvolvimento de software de sistemas críticos é a garantia da sua correção e confiabilidade. Desta forma, a verificação de software exerce um papel importante para assegurar a qualidade geral do produto, visando principalmente características como previsibilidade e confiabilidade. No contexto de verificação de software, os Bounded Model Checkers estão sendo utilizados para descobrir erros sutis em projetos de sistemas de software atuais, contribuindo eficazmente neste processo de verificação. O valor dos contra-exemplos e propriedades de segurança gerados pelo Bounded Model Checkers para criar casos de testes e para a depuração de sistemas é amplamente reconhecido. Quando um Bounded Model Checking (BMC) encontra um erro ele produz um contra-exemplo. Assim, o valor dos contra-exemplos para depuração de software é amplamente reconhecido no estado da prática. Entretanto, os BMCs frequentemente produzem contra-exemplos que são grandes ou difíceis de entender ou manipular, principalmente devido ao tamanho do software e valores escolhidos pelo solucionador de satisfabilidade. Neste trabalho visamos demonstrar e analisar o uso de método formal (através da técnica model checking) no processo de desenvolvimento de programas na linguagem C, explorando as características já providas pelo model checking como o contra-exemplo e a identificação e verificação de propriedades de segurança. Em face disto apresentamos duas abordagens: (i) descrevemos um método para integrar o Bounded Model Checker ESBMC como o framework de teste unitário CUnit, este método visa extrair as propriedades geradas pelo ESBMC para gerar automaticamente casos de teste usando o rico conjunto de assertivas providas pelo framework CUnit e (ii) um método que visa automatizar a coleta e manipulação dos contra-exemplos, de modo a instanciar o programa C analisado, para comprovar a causa raiz do erro identificado. Tais métodos podem ser vistos como um método complementar para a verificação efetuada pelos BMCs. Demonstramos a eficácia dos métodos propostos sobre benchmarks públicos de código C.The use of computer-based systems in several domains has increased significantly over the last years, one of the main challenges in software development of these systems is to ensure the correctness and reliability of these. So that software verification now plays an important role in ensuring the overall product quality, aimed mainly the characteristics of predictability and reliability. In the context of software verification, with respect to the use of model checking technique, Bounded Model Checkers have already been applied to discover subtle errors in actual systems projects, contributing effectively in this verification process. The value of the counterexample and safety properties generated by Bounded Model Checkers to create test case and to debug these systems is widely recognized. When a Bounded Model Checking (BMC) finds an error it produces a counterexample. Thus, the value of counterexamples to debug software systems is widely recognized in the state-of-the-practice. However, BMCs often produce counterexamples that are either large or difficult to be understood and manipulated mainly because of both the software size and the values chosen by the respective solver. In this work we aim to demonstrate and analyze the use of formal methods (through using the model checking technique) in the process of developing programs in C language, exploring the features already provided by the model checking as the counterexample and the identification and verification of safety properties. In view of this we present two approaches: (i) we describe a method to integrate the bounded model checker ESBMC with the CUnit framework. This method aims to extract the safety properties generated by ESBMC to generate automatically test cases using the rich set of assertions provided by the CUnit framework and (ii) a method aims to automate the collection and manipulation of counterexamples in order to instantiate the analised C program for proving the root cause of the identified error. Such methods may be seen as a complementary technique for the verification performed by BMCs. We show the effectiveness of our proposed method over publicly available benchmarks of C programs.CAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorUniversidade Federal do AmazonasInstituto de ComputaçãoBRUFAMPrograma de Pós-graduação em InformáticaBarreto, Raimundo da Silvahttp://lattes.cnpq.br/1132672107627968Rocha, Herbert Oliveirahttp://lattes.cnpq.br/22845003183048992015-04-11T14:03:20Z2013-07-252011-02-04info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfROCHA, Herbert Oliveira. Verificação e comprovação de erros em códigos C usando bounded model checker. 2011. 76 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2011.http://tede.ufam.edu.br/handle/tede/2965porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFAMinstname:Universidade Federal do Amazonas (UFAM)instacron:UFAM2016-05-25T05:03:07Zoai:https://tede.ufam.edu.br/handle/:tede/2965Biblioteca Digital de Teses e Dissertaçõeshttp://200.129.163.131:8080/PUBhttp://200.129.163.131:8080/oai/requestddbc@ufam.edu.br||ddbc@ufam.edu.bropendoar:65922016-05-25T05:03:07Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM)false |
dc.title.none.fl_str_mv |
Verificação e comprovação de erros em códigos C usando bounded model checker |
title |
Verificação e comprovação de erros em códigos C usando bounded model checker |
spellingShingle |
Verificação e comprovação de erros em códigos C usando bounded model checker Rocha, Herbert Oliveira Model checking Bounded model checker Propriedades de segurança Contra-exemplos Comprovação de Erros Model checking Bounded modelchecker Safety properties Counterexamples Proving errors CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO |
title_short |
Verificação e comprovação de erros em códigos C usando bounded model checker |
title_full |
Verificação e comprovação de erros em códigos C usando bounded model checker |
title_fullStr |
Verificação e comprovação de erros em códigos C usando bounded model checker |
title_full_unstemmed |
Verificação e comprovação de erros em códigos C usando bounded model checker |
title_sort |
Verificação e comprovação de erros em códigos C usando bounded model checker |
author |
Rocha, Herbert Oliveira |
author_facet |
Rocha, Herbert Oliveira http://lattes.cnpq.br/2284500318304899 |
author_role |
author |
author2 |
http://lattes.cnpq.br/2284500318304899 |
author2_role |
author |
dc.contributor.none.fl_str_mv |
Barreto, Raimundo da Silva http://lattes.cnpq.br/1132672107627968 |
dc.contributor.author.fl_str_mv |
Rocha, Herbert Oliveira http://lattes.cnpq.br/2284500318304899 |
dc.subject.por.fl_str_mv |
Model checking Bounded model checker Propriedades de segurança Contra-exemplos Comprovação de Erros Model checking Bounded modelchecker Safety properties Counterexamples Proving errors CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO |
topic |
Model checking Bounded model checker Propriedades de segurança Contra-exemplos Comprovação de Erros Model checking Bounded modelchecker Safety properties Counterexamples Proving errors CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO |
description |
A utilização de sistemas baseados em computador em diversos domínios aumentou significativamente nos últimos anos. Um dos principais desafios no desenvolvimento de software de sistemas críticos é a garantia da sua correção e confiabilidade. Desta forma, a verificação de software exerce um papel importante para assegurar a qualidade geral do produto, visando principalmente características como previsibilidade e confiabilidade. No contexto de verificação de software, os Bounded Model Checkers estão sendo utilizados para descobrir erros sutis em projetos de sistemas de software atuais, contribuindo eficazmente neste processo de verificação. O valor dos contra-exemplos e propriedades de segurança gerados pelo Bounded Model Checkers para criar casos de testes e para a depuração de sistemas é amplamente reconhecido. Quando um Bounded Model Checking (BMC) encontra um erro ele produz um contra-exemplo. Assim, o valor dos contra-exemplos para depuração de software é amplamente reconhecido no estado da prática. Entretanto, os BMCs frequentemente produzem contra-exemplos que são grandes ou difíceis de entender ou manipular, principalmente devido ao tamanho do software e valores escolhidos pelo solucionador de satisfabilidade. Neste trabalho visamos demonstrar e analisar o uso de método formal (através da técnica model checking) no processo de desenvolvimento de programas na linguagem C, explorando as características já providas pelo model checking como o contra-exemplo e a identificação e verificação de propriedades de segurança. Em face disto apresentamos duas abordagens: (i) descrevemos um método para integrar o Bounded Model Checker ESBMC como o framework de teste unitário CUnit, este método visa extrair as propriedades geradas pelo ESBMC para gerar automaticamente casos de teste usando o rico conjunto de assertivas providas pelo framework CUnit e (ii) um método que visa automatizar a coleta e manipulação dos contra-exemplos, de modo a instanciar o programa C analisado, para comprovar a causa raiz do erro identificado. Tais métodos podem ser vistos como um método complementar para a verificação efetuada pelos BMCs. Demonstramos a eficácia dos métodos propostos sobre benchmarks públicos de código C. |
publishDate |
2011 |
dc.date.none.fl_str_mv |
2011-02-04 2013-07-25 2015-04-11T14:03:20Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
ROCHA, Herbert Oliveira. Verificação e comprovação de erros em códigos C usando bounded model checker. 2011. 76 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2011. http://tede.ufam.edu.br/handle/tede/2965 |
identifier_str_mv |
ROCHA, Herbert Oliveira. Verificação e comprovação de erros em códigos C usando bounded model checker. 2011. 76 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2011. |
url |
http://tede.ufam.edu.br/handle/tede/2965 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidade Federal do Amazonas Instituto de Computação BR UFAM Programa de Pós-graduação em Informática |
publisher.none.fl_str_mv |
Universidade Federal do Amazonas Instituto de Computação BR UFAM Programa de Pós-graduação em Informática |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFAM instname:Universidade Federal do Amazonas (UFAM) instacron:UFAM |
instname_str |
Universidade Federal do Amazonas (UFAM) |
instacron_str |
UFAM |
institution |
UFAM |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFAM |
collection |
Biblioteca Digital de Teses e Dissertações da UFAM |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM) |
repository.mail.fl_str_mv |
ddbc@ufam.edu.br||ddbc@ufam.edu.br |
_version_ |
1809732004697079808 |