Reparo automático de programas usando corretude relativa

Detalhes bibliográficos
Autor(a) principal: Oliveira, Rodrigo Dottori de
Data de Publicação: 2023
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UFRJ
Texto Completo: http://hdl.handle.net/11422/19672
Resumo: O reparo automático de programas consiste em identificar e consertar falhas em um código até que o mesmo passe a se adequar a uma especificação fornecida. Tal especificação é geralmente feita através de uma suíte de testes. Neste caso, um código é considerado absolutamente correto se passa em todos os testes. Ferramentas atuais nesse ramo fazem uso de técnicas como a programação genética, que se baseia em princípios da computação evolutiva, para construir programas corretos a partir de incorretos. Tais ferramentas são capazes de realizar consertos em diversos casos, mas têm sua utilidade limitada por se basearem em uma noção muito simples de corretude, onde programas são considerados apenas absolutamente corretos ou absolutamente incorretos, sem se levar em conta programas intermediários. Essa dificuldade aparece frequentemente em casos com múltiplas falhas. O presente trabalho propõe expandir o escopo de algumas das ferramentas existentes através de uma teoria de corretude relativa, na qual é possível determinar quais programas podem ser considerados estritamente mais corretos que outros. O uso dessa teoria permite a criação de um paradigma novo de reparo de programas focado em aprimoramentos graduais. O trabalho também relata estudos de caso que visam verificar que, com esse novo paradigma, há a possibilidade de consertar programas que não eram reparáveis pelos métodos originais.
id UFRJ_89384eeaf5711e8d92c1d130279c014c
oai_identifier_str oai:pantheon.ufrj.br:11422/19672
network_acronym_str UFRJ
network_name_str Repositório Institucional da UFRJ
repository_id_str
spelling Oliveira, Rodrigo Dottori dehttp://lattes.cnpq.br/9413102524215939http://lattes.cnpq.br/8951681486947556Rossetto, Silvanahttp://lattes.cnpq.br/0054098292730720Martins Moreira, Anamariahttp://lattes.cnpq.br/2363575151206774Silva, João Carlos Pereira da2023-02-06T18:05:20Z2023-11-30T03:03:35Z2023-01-12http://hdl.handle.net/11422/19672Submitted by Elaine Almeida (elaine.almeida@nce.ufrj.br) on 2023-02-06T18:05:20Z No. of bitstreams: 1 RDOliveira.pdf: 662488 bytes, checksum: 0900dfb1d431c1fc1d39a5c202e1e3bc (MD5)Made available in DSpace on 2023-02-06T18:05:20Z (GMT). No. of bitstreams: 1 RDOliveira.pdf: 662488 bytes, checksum: 0900dfb1d431c1fc1d39a5c202e1e3bc (MD5) Previous issue date: 2023-01-12O reparo automático de programas consiste em identificar e consertar falhas em um código até que o mesmo passe a se adequar a uma especificação fornecida. Tal especificação é geralmente feita através de uma suíte de testes. Neste caso, um código é considerado absolutamente correto se passa em todos os testes. Ferramentas atuais nesse ramo fazem uso de técnicas como a programação genética, que se baseia em princípios da computação evolutiva, para construir programas corretos a partir de incorretos. Tais ferramentas são capazes de realizar consertos em diversos casos, mas têm sua utilidade limitada por se basearem em uma noção muito simples de corretude, onde programas são considerados apenas absolutamente corretos ou absolutamente incorretos, sem se levar em conta programas intermediários. Essa dificuldade aparece frequentemente em casos com múltiplas falhas. O presente trabalho propõe expandir o escopo de algumas das ferramentas existentes através de uma teoria de corretude relativa, na qual é possível determinar quais programas podem ser considerados estritamente mais corretos que outros. O uso dessa teoria permite a criação de um paradigma novo de reparo de programas focado em aprimoramentos graduais. O trabalho também relata estudos de caso que visam verificar que, com esse novo paradigma, há a possibilidade de consertar programas que não eram reparáveis pelos métodos originais.porUniversidade Federal do Rio de JaneiroUFRJBrasilInstituto de ComputaçãoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOinteligência artificialreparo automático de programascorretude relativacorretude absolutabugs de softwareremoção de falhasReparo automático de programas usando corretude relativainfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisabertoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRJinstname:Universidade Federal do Rio de Janeiro (UFRJ)instacron:UFRJLICENSElicense.txtlicense.txttext/plain; charset=utf-81853http://pantheon.ufrj.br:80/bitstream/11422/19672/2/license.txtdd32849f2bfb22da963c3aac6e26e255MD52ORIGINALRDOliveira.pdfRDOliveira.pdfapplication/pdf662488http://pantheon.ufrj.br:80/bitstream/11422/19672/1/RDOliveira.pdf0900dfb1d431c1fc1d39a5c202e1e3bcMD5111422/196722023-11-30 00:03:35.921oai:pantheon.ufrj.br:11422/19672TElDRU7Dh0EgTsODTy1FWENMVVNJVkEgREUgRElTVFJJQlVJw4fDg08KCkFvIGFzc2luYXIgZSBlbnRyZWdhciBlc3RhIGxpY2Vuw6dhLCB2b2PDqihzKSBvKHMpIGF1dG9yKGVzKSBvdSBwcm9wcmlldMOhcmlvKHMpIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBjb25jZWRlKG0pIGFvIFJlcG9zaXTDs3JpbyBQYW50aGVvbiBkYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkbyBSaW8gZGUgSmFuZWlybyAoVUZSSikgbyBkaXJlaXRvIG7Do28gLSBleGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGUvb3UgZGlzdHJpYnVpciBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vKSBlbSB0b2RvIG8gbXVuZG8sIGVtIGZvcm1hdG8gZWxldHLDtG5pY28gZSBlbSBxdWFscXVlciBtZWlvLCBpbmNsdWluZG8sIG1hcyBuw6NvIGxpbWl0YWRvIGEgw6F1ZGlvIGUvb3UgdsOtZGVvLgoKVm9jw6ogY29uY29yZGEgcXVlIGEgVUZSSiBwb2RlLCBzZW0gYWx0ZXJhciBvIGNvbnRlw7pkbywgdHJhZHV6aXIgYSBhcHJlc2VudGHDp8OjbyBkZSBxdWFscXVlciBtZWlvIG91IGZvcm1hdG8gY29tIGEgZmluYWxpZGFkZSBkZSBwcmVzZXJ2YcOnw6NvLgoKVm9jw6ogdGFtYsOpbSBjb25jb3JkYSBxdWUgYSBVRlJKIHBvZGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXNzYSBzdWJtaXNzw6NvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIGUgcHJlc2VydmHDp8OjbyBkaWdpdGFsLgoKRGVjbGFyYSBxdWUgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgc2V1IHRyYWJhbGhvIG9yaWdpbmFsLCBlIHF1ZSB2b2PDqiB0ZW0gbyBkaXJlaXRvIGRlIGNvbmNlZGVyIG9zIGRpcmVpdG9zIGNvbnRpZG9zIG5lc3RhIGxpY2Vuw6dhLiBWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIGEgc3VhIGFwcmVzZW50YcOnw6NvLCBjb20gbyBtZWxob3IgZGUgc2V1cyBjb25oZWNpbWVudG9zLCBuw6NvIGluZnJpbmdpIGRpcmVpdG9zIGF1dG9yYWlzIGRlIHRlcmNlaXJvcy4KClNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCB2b2PDqiBuw6NvIHRlbSBkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGEgcGVybWlzc8OjbyBpcnJlc3RyaXRhIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBlIGNvbmNlZGUgYSBVRlJKIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgZGUgcHJvcHJpZWRhZGUgZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRhIHN1Ym1pc3PDo28uCgpTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqSBiYXNlYWRvIGVtIHRyYWJhbGhvIHF1ZSBmb2ksIG91IHRlbSBzaWRvIHBhdHJvY2luYWRvIG91IGFwb2lhZG8gcG9yIHVtYSBhZ8OqbmNpYSBvdSBvdXRybyhzKSBvcmdhbmlzbW8ocykgcXVlIG7Do28gYSBVRlJKLCB2b2PDqiBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWxxdWVyIGRpcmVpdG8gZGUgUkVWSVPDg08gb3UgZGUgb3V0cmFzIG9icmlnYcOnw7VlcyByZXF1ZXJpZGFzIHBvciBjb250cmF0byBvdSBhY29yZG8uCgpBIFVGUkogaXLDoSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8ocykgc2V1KHMpIG5vbWUocykgY29tbyBhdXRvcihlcykgb3UgcHJvcHJpZXTDoXJpbyhzKSBkYSBzdWJtaXNzw6NvLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EsIG5vIGF0byBkZSBzdWJtaXNzw6NvLgo=Repositório de PublicaçõesPUBhttp://www.pantheon.ufrj.br/oai/requestopendoar:2023-11-30T03:03:35Repositório Institucional da UFRJ - Universidade Federal do Rio de Janeiro (UFRJ)false
dc.title.pt_BR.fl_str_mv Reparo automático de programas usando corretude relativa
title Reparo automático de programas usando corretude relativa
spellingShingle Reparo automático de programas usando corretude relativa
Oliveira, Rodrigo Dottori de
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
inteligência artificial
reparo automático de programas
corretude relativa
corretude absoluta
bugs de software
remoção de falhas
title_short Reparo automático de programas usando corretude relativa
title_full Reparo automático de programas usando corretude relativa
title_fullStr Reparo automático de programas usando corretude relativa
title_full_unstemmed Reparo automático de programas usando corretude relativa
title_sort Reparo automático de programas usando corretude relativa
author Oliveira, Rodrigo Dottori de
author_facet Oliveira, Rodrigo Dottori de
author_role author
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/9413102524215939
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/8951681486947556
dc.contributor.author.fl_str_mv Oliveira, Rodrigo Dottori de
dc.contributor.referee1.fl_str_mv Rossetto, Silvana
dc.contributor.referee1Lattes.fl_str_mv http://lattes.cnpq.br/0054098292730720
dc.contributor.referee2.fl_str_mv Martins Moreira, Anamaria
dc.contributor.referee2Lattes.fl_str_mv http://lattes.cnpq.br/2363575151206774
dc.contributor.advisor1.fl_str_mv Silva, João Carlos Pereira da
contributor_str_mv Rossetto, Silvana
Martins Moreira, Anamaria
Silva, João Carlos Pereira da
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
inteligência artificial
reparo automático de programas
corretude relativa
corretude absoluta
bugs de software
remoção de falhas
dc.subject.por.fl_str_mv inteligência artificial
reparo automático de programas
corretude relativa
corretude absoluta
bugs de software
remoção de falhas
description O reparo automático de programas consiste em identificar e consertar falhas em um código até que o mesmo passe a se adequar a uma especificação fornecida. Tal especificação é geralmente feita através de uma suíte de testes. Neste caso, um código é considerado absolutamente correto se passa em todos os testes. Ferramentas atuais nesse ramo fazem uso de técnicas como a programação genética, que se baseia em princípios da computação evolutiva, para construir programas corretos a partir de incorretos. Tais ferramentas são capazes de realizar consertos em diversos casos, mas têm sua utilidade limitada por se basearem em uma noção muito simples de corretude, onde programas são considerados apenas absolutamente corretos ou absolutamente incorretos, sem se levar em conta programas intermediários. Essa dificuldade aparece frequentemente em casos com múltiplas falhas. O presente trabalho propõe expandir o escopo de algumas das ferramentas existentes através de uma teoria de corretude relativa, na qual é possível determinar quais programas podem ser considerados estritamente mais corretos que outros. O uso dessa teoria permite a criação de um paradigma novo de reparo de programas focado em aprimoramentos graduais. O trabalho também relata estudos de caso que visam verificar que, com esse novo paradigma, há a possibilidade de consertar programas que não eram reparáveis pelos métodos originais.
publishDate 2023
dc.date.accessioned.fl_str_mv 2023-02-06T18:05:20Z
dc.date.available.fl_str_mv 2023-11-30T03:03:35Z
dc.date.issued.fl_str_mv 2023-01-12
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/11422/19672
url http://hdl.handle.net/11422/19672
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.publisher.none.fl_str_mv Universidade Federal do Rio de Janeiro
dc.publisher.initials.fl_str_mv UFRJ
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Instituto de Computação
publisher.none.fl_str_mv Universidade Federal do Rio de Janeiro
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRJ
instname:Universidade Federal do Rio de Janeiro (UFRJ)
instacron:UFRJ
instname_str Universidade Federal do Rio de Janeiro (UFRJ)
instacron_str UFRJ
institution UFRJ
reponame_str Repositório Institucional da UFRJ
collection Repositório Institucional da UFRJ
bitstream.url.fl_str_mv http://pantheon.ufrj.br:80/bitstream/11422/19672/2/license.txt
http://pantheon.ufrj.br:80/bitstream/11422/19672/1/RDOliveira.pdf
bitstream.checksum.fl_str_mv dd32849f2bfb22da963c3aac6e26e255
0900dfb1d431c1fc1d39a5c202e1e3bc
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRJ - Universidade Federal do Rio de Janeiro (UFRJ)
repository.mail.fl_str_mv
_version_ 1784097277259808768