Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes

Detalhes bibliográficos
Autor(a) principal: Melo, Raimundo Williame Rocha de
Data de Publicação: 2017
Outros Autores: http://lattes.cnpq.br/8935199769991902
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Biblioteca Digital de Teses e Dissertações da UFAM
Texto Completo: https://tede.ufam.edu.br/handle/tede/6261
Resumo: O uso de sistemas embarcados, sistemas computacionais especializados para execução em sistemas eletrônicos ou mecânicos tem crescido de forma vertiginosa devido a utilização cada vez mais intensa de sensores, interfaces de rede e protocolos de comunicação em diversas áreas. Por isso, é cada vez mais importante garantir a robustez desses sistemas, uma vez que estão se tornando mais complexos e integrados. Existem várias técnicas para garantir que um sistema seja entregue ao cliente sem erros, em particular, a verificação formal dos programas tem se revelado eficaz na busca de falhas. Neste trabalho é descrito um algoritmo de indução matemática conhecido como k-induction combinado ao uso de invariantes para verificar e refutar propriedades de segurança em programas desenvolvidos na linguagem ANSI-C. Em particular, a abordagem proposta infere invariantes no programa para auxiliar na verificação de programas ANSI-C através da técnica de indução matemática através do refinamento de restrição (i.e, poliédrico) para especificar pré- e pós-condições. No método proposto, adotamos dois geradores de invariantes para produzir e alimentar o algoritmo de indução matemática o qual é implementado na ferramenta Efficient SMT-Based Context-Bounded Model Checker. A motivação para a combinação de invariantes com o algoritmo de indução matemática é fechar um gap na verificação formal de programas que possuam variáveis globais, além de programas com loops que possuem desvios condicionais e o número de iterações é desconhecido. PIPS e PAGAI são as ferramentas utilizadas para analisar o código e produzir invariantes indutivas responsáveis por guiar o algoritmo de indução matemática na verificação do benchmark, sendo este o principal desafio do método proposto. Para avaliar a eficácia da abordagem proposta neste trabalho, além de aplicações de Sistemas Embarcados foram utilizados benchmarks públicos disponibilizados pela Competição Internacional de Verificação de Software onde participam Universidades, pesquisadores, estudandantes de doutorado de várias partes do mundo, e fornece amplo conjunto de casos de teste para verificação. Além disso, foram utilizadas ferramentas estado-da-arte para a comparação dos resultados e, assim mensurar a eficácia do método proposto. Os resultados experimentais foram positivos e mostraram que o algoritmo de indução matemática com invariantes pode verificar uma grande variedade de propriedades de segurança em programas com loops e aplicações de sistemas embarcados de telecomunicações, sistemas de controle e dispositivos médicos.
id UFAM_f35f1c8787b7406f994f01d42f8b9cec
oai_identifier_str oai:https://tede.ufam.edu.br/handle/:tede/6261
network_acronym_str UFAM
network_name_str Biblioteca Digital de Teses e Dissertações da UFAM
repository_id_str 6592
spelling Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e InvariantesVerificação formalIndução matemáticaInvariantes indutivasPIPSPAGAIVerificação de SoftwareSistemas embarcadosENGENHARIAS: ENGENHARIA ELÉTRICAO uso de sistemas embarcados, sistemas computacionais especializados para execução em sistemas eletrônicos ou mecânicos tem crescido de forma vertiginosa devido a utilização cada vez mais intensa de sensores, interfaces de rede e protocolos de comunicação em diversas áreas. Por isso, é cada vez mais importante garantir a robustez desses sistemas, uma vez que estão se tornando mais complexos e integrados. Existem várias técnicas para garantir que um sistema seja entregue ao cliente sem erros, em particular, a verificação formal dos programas tem se revelado eficaz na busca de falhas. Neste trabalho é descrito um algoritmo de indução matemática conhecido como k-induction combinado ao uso de invariantes para verificar e refutar propriedades de segurança em programas desenvolvidos na linguagem ANSI-C. Em particular, a abordagem proposta infere invariantes no programa para auxiliar na verificação de programas ANSI-C através da técnica de indução matemática através do refinamento de restrição (i.e, poliédrico) para especificar pré- e pós-condições. No método proposto, adotamos dois geradores de invariantes para produzir e alimentar o algoritmo de indução matemática o qual é implementado na ferramenta Efficient SMT-Based Context-Bounded Model Checker. A motivação para a combinação de invariantes com o algoritmo de indução matemática é fechar um gap na verificação formal de programas que possuam variáveis globais, além de programas com loops que possuem desvios condicionais e o número de iterações é desconhecido. PIPS e PAGAI são as ferramentas utilizadas para analisar o código e produzir invariantes indutivas responsáveis por guiar o algoritmo de indução matemática na verificação do benchmark, sendo este o principal desafio do método proposto. Para avaliar a eficácia da abordagem proposta neste trabalho, além de aplicações de Sistemas Embarcados foram utilizados benchmarks públicos disponibilizados pela Competição Internacional de Verificação de Software onde participam Universidades, pesquisadores, estudandantes de doutorado de várias partes do mundo, e fornece amplo conjunto de casos de teste para verificação. Além disso, foram utilizadas ferramentas estado-da-arte para a comparação dos resultados e, assim mensurar a eficácia do método proposto. Os resultados experimentais foram positivos e mostraram que o algoritmo de indução matemática com invariantes pode verificar uma grande variedade de propriedades de segurança em programas com loops e aplicações de sistemas embarcados de telecomunicações, sistemas de controle e dispositivos médicos.The use of embedded systems, i.e., computer systems focused on performing specific functions in larger (electronic or mechanical) systems, has been growing lately, and ensuring the robustness of such systems has become increasingly important. There are several techniques to ensure that a system is released without errors. In particular, formal verification of programs is proving itself to be effective in the search for failures. In this work, an induction-proof algorithm is described, which combines k-induction and invariants to verify and refute safety properties in embedded ANSI-C software. Moreover, the proposed k-induction-based approach infers invariants in the program to assist in verification tasks, using constraint refinement (i.e., polyhedral) to specify pre- and post-conditions. We adopted two invariant generators to produce such and feed the k-induction algorithm, which is implemented in the Efficient SMT-Based Context-Bounded Model Checker tool. Public benchmarks were used to assess the effectiveness of our approach. In addition, a comparison to other state-of-the-art verification tools using a set of benchmarks from the International Competition for Software Verification in addition to embedded systems applications. Experimental results have shown that the proposed approach, with and without invariants, can verify a wide variety of safety properties in programs with loops and embedded software from telecommunications, control systems, and medical domains.FAPEAM - Fundação de Amparo à Pesquisa do Estado do AmazonasUniversidade Federal do AmazonasFaculdade de TecnologiaBrasilUFAMPrograma de Pós-graduação em Engenharia ElétricaCordeiro, Lucas Carvalhohttp://lattes.cnpq.br/5005832876603012Barreto, Raimundo da SilvaRocha, Herbert OliveriraMelo, Raimundo Williame Rocha dehttp://lattes.cnpq.br/89351997699919022018-03-21T17:40:50Z2017-08-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfMELO, Raimundo Williame Rocha de. Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes. 2017. 70 f. Dissertação (Mestrado em Engenharia Elétrica) - Universidade Federal do Amazonas, Manaus, 2017.https://tede.ufam.edu.br/handle/tede/6261porhttp://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFAMinstname:Universidade Federal do Amazonas (UFAM)instacron:UFAM2018-08-16T18:09:31Zoai:https://tede.ufam.edu.br/handle/:tede/6261Biblioteca 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:65922018-08-16T18:09:31Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM)false
dc.title.none.fl_str_mv Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
title Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
spellingShingle Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
Melo, Raimundo Williame Rocha de
Verificação formal
Indução matemática
Invariantes indutivas
PIPS
PAGAI
Verificação de Software
Sistemas embarcados
ENGENHARIAS: ENGENHARIA ELÉTRICA
title_short Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
title_full Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
title_fullStr Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
title_full_unstemmed Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
title_sort Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes
author Melo, Raimundo Williame Rocha de
author_facet Melo, Raimundo Williame Rocha de
http://lattes.cnpq.br/8935199769991902
author_role author
author2 http://lattes.cnpq.br/8935199769991902
author2_role author
dc.contributor.none.fl_str_mv Cordeiro, Lucas Carvalho
http://lattes.cnpq.br/5005832876603012
Barreto, Raimundo da Silva
Rocha, Herbert Oliverira
dc.contributor.author.fl_str_mv Melo, Raimundo Williame Rocha de
http://lattes.cnpq.br/8935199769991902
dc.subject.por.fl_str_mv Verificação formal
Indução matemática
Invariantes indutivas
PIPS
PAGAI
Verificação de Software
Sistemas embarcados
ENGENHARIAS: ENGENHARIA ELÉTRICA
topic Verificação formal
Indução matemática
Invariantes indutivas
PIPS
PAGAI
Verificação de Software
Sistemas embarcados
ENGENHARIAS: ENGENHARIA ELÉTRICA
description O uso de sistemas embarcados, sistemas computacionais especializados para execução em sistemas eletrônicos ou mecânicos tem crescido de forma vertiginosa devido a utilização cada vez mais intensa de sensores, interfaces de rede e protocolos de comunicação em diversas áreas. Por isso, é cada vez mais importante garantir a robustez desses sistemas, uma vez que estão se tornando mais complexos e integrados. Existem várias técnicas para garantir que um sistema seja entregue ao cliente sem erros, em particular, a verificação formal dos programas tem se revelado eficaz na busca de falhas. Neste trabalho é descrito um algoritmo de indução matemática conhecido como k-induction combinado ao uso de invariantes para verificar e refutar propriedades de segurança em programas desenvolvidos na linguagem ANSI-C. Em particular, a abordagem proposta infere invariantes no programa para auxiliar na verificação de programas ANSI-C através da técnica de indução matemática através do refinamento de restrição (i.e, poliédrico) para especificar pré- e pós-condições. No método proposto, adotamos dois geradores de invariantes para produzir e alimentar o algoritmo de indução matemática o qual é implementado na ferramenta Efficient SMT-Based Context-Bounded Model Checker. A motivação para a combinação de invariantes com o algoritmo de indução matemática é fechar um gap na verificação formal de programas que possuam variáveis globais, além de programas com loops que possuem desvios condicionais e o número de iterações é desconhecido. PIPS e PAGAI são as ferramentas utilizadas para analisar o código e produzir invariantes indutivas responsáveis por guiar o algoritmo de indução matemática na verificação do benchmark, sendo este o principal desafio do método proposto. Para avaliar a eficácia da abordagem proposta neste trabalho, além de aplicações de Sistemas Embarcados foram utilizados benchmarks públicos disponibilizados pela Competição Internacional de Verificação de Software onde participam Universidades, pesquisadores, estudandantes de doutorado de várias partes do mundo, e fornece amplo conjunto de casos de teste para verificação. Além disso, foram utilizadas ferramentas estado-da-arte para a comparação dos resultados e, assim mensurar a eficácia do método proposto. Os resultados experimentais foram positivos e mostraram que o algoritmo de indução matemática com invariantes pode verificar uma grande variedade de propriedades de segurança em programas com loops e aplicações de sistemas embarcados de telecomunicações, sistemas de controle e dispositivos médicos.
publishDate 2017
dc.date.none.fl_str_mv 2017-08-10
2018-03-21T17:40:50Z
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 MELO, Raimundo Williame Rocha de. Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes. 2017. 70 f. Dissertação (Mestrado em Engenharia Elétrica) - Universidade Federal do Amazonas, Manaus, 2017.
https://tede.ufam.edu.br/handle/tede/6261
identifier_str_mv MELO, Raimundo Williame Rocha de. Verificação de Programas Embarcados ANSI-C baseada em indução Matemática e Invariantes. 2017. 70 f. Dissertação (Mestrado em Engenharia Elétrica) - Universidade Federal do Amazonas, Manaus, 2017.
url https://tede.ufam.edu.br/handle/tede/6261
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal do Amazonas
Faculdade de Tecnologia
Brasil
UFAM
Programa de Pós-graduação em Engenharia Elétrica
publisher.none.fl_str_mv Universidade Federal do Amazonas
Faculdade de Tecnologia
Brasil
UFAM
Programa de Pós-graduação em Engenharia Elétrica
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_ 1809732025606733824