Strategies for testing and formalizing properties of modern programming languages
| Ano de defesa: | 2019 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | |
| Banca de defesa: | |
| Tipo de documento: | Tese |
| Tipo de acesso: | Acesso aberto |
| Idioma: | por |
| Instituição de defesa: |
Universidade Federal de Pelotas
|
| Programa de Pós-Graduação: |
Programa de Pós-Graduação em Computação
|
| Departamento: |
Centro de Desenvolvimento Tecnológico
|
| País: |
Brasil
|
| Palavras-chave em Português: | |
| Área do conhecimento CNPq: | |
| Link de acesso: | http://guaiaca.ufpel.edu.br/handle/prefix/6280 |
Resumo: | Today’s world is full of devices and machines controlled by software, which depend upon programming languages and compilers to be produced and executed. The importance of correct software development goes beyond personal computers and smartphone apps. An error in a critical system, such as on a nuclear power plant or on an airplane controller, can cause catastrophic damage in our society. Nowadays, essentially two software validation techniques are used to avoid such problems: software testing and software verification. In this thesis we combine both validation techniques in the programming languages research area, applying property-based testing first to improve specifications and debugging programs, before an attempt of formal verification. By using such testing approach we can quickly eliminate false conjectures, by using the generated counterexamples, which help to correct them. Then, having confidence that the specification is correct, one can give a step forward and formalize the specification and prove its properties in an interactive theorem prover, which uses a mathematical framework to guarantee that these properties hold for a given specification. We apply different strategies to test and formalize two major programming languages, the functional Lambda Calculus, and the modern object-oriented calculus Featherweight Java. The first branch of this thesis defines a type-directed procedure to generate random programs for each calculus in order to apply property-based testing to check soundness properties on them, using the Haskell library QuickCheck. And in the second branch, we apply the two most used approaches, extrinsic and intrinsic, to formalize and prove type safety for both studied programming languages using the dependently-typed programming language Agda, comparing the subtleties of each technique. Furthermore, we show that our formalizations can be extended to new language constructions, by specifying and proving the same properties for Java 8 constructions. We believe that this combination of property-based testing with formal verification can improve the quality of software in general and increase productivity during formal proof development. |
| id |
UFPL_ae56613d4f43f9ac2e9b9e007f574eeb |
|---|---|
| oai_identifier_str |
oai:guaiaca.ufpel.edu.br:prefix/6280 |
| network_acronym_str |
UFPL |
| network_name_str |
Repositório Institucional da UFPel - Guaiaca |
| repository_id_str |
|
| spelling |
2020-07-24T23:45:03Z2020-07-24T23:45:03Z2019-12-10FEITOSA, Samuel da Silva. Strategies for Testing and Formalizing Properties of Modern Programming Languages. Advisor: Andre Rauber Du Bois. 2020. 133 f. Thesis (Doctorate in Computer Science) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2020.http://guaiaca.ufpel.edu.br/handle/prefix/6280Today’s world is full of devices and machines controlled by software, which depend upon programming languages and compilers to be produced and executed. The importance of correct software development goes beyond personal computers and smartphone apps. An error in a critical system, such as on a nuclear power plant or on an airplane controller, can cause catastrophic damage in our society. Nowadays, essentially two software validation techniques are used to avoid such problems: software testing and software verification. In this thesis we combine both validation techniques in the programming languages research area, applying property-based testing first to improve specifications and debugging programs, before an attempt of formal verification. By using such testing approach we can quickly eliminate false conjectures, by using the generated counterexamples, which help to correct them. Then, having confidence that the specification is correct, one can give a step forward and formalize the specification and prove its properties in an interactive theorem prover, which uses a mathematical framework to guarantee that these properties hold for a given specification. We apply different strategies to test and formalize two major programming languages, the functional Lambda Calculus, and the modern object-oriented calculus Featherweight Java. The first branch of this thesis defines a type-directed procedure to generate random programs for each calculus in order to apply property-based testing to check soundness properties on them, using the Haskell library QuickCheck. And in the second branch, we apply the two most used approaches, extrinsic and intrinsic, to formalize and prove type safety for both studied programming languages using the dependently-typed programming language Agda, comparing the subtleties of each technique. Furthermore, we show that our formalizations can be extended to new language constructions, by specifying and proving the same properties for Java 8 constructions. We believe that this combination of property-based testing with formal verification can improve the quality of software in general and increase productivity during formal proof development.O mundo atual está repleto de dispositivos e máquinas controladas por software, os quais dependem de linguagens de programação e compiladores para serem produzidos e executados. A importância do desenvolvimento de software correto vai além de computadores pessoais e aplicativos de smartphones. Um erro em um sistema crítico, como em uma usina nuclear ou em um controlador de aviação, pode causar danos catastróficos em nossa sociedade. Hoje em dia, essencialmente duas técnicas de validação de software são utilizadas para evitar tais problemas: teste e verificação de software. Nesta tese, são combinadas ambas as técnicas de validação na área pesquisa de linguagens de programação, aplicando testes baseados em propriedades inicialmente para melhorar especificações e depurar programas, antes de uma tentativa de verificação formal. Por usar esta abordagem de testes, é possível eliminar falsas conjecturas rapidamente e usar os contra-exemplos gerados para corrigí-las. Então, tendo confiança de que a especificação está correta, é possível ir além, formalizando a especificação e provando propriedades em um provador de teoremas interativo, o qual usa um aparato matemático para garantir que estas propriedades são válidas para uma dada especificação. Aplicou-se diferentes estratégias para testar e formalizar duas linguagens de programação, o Cálculo Lambda, e o cálculo orientado a objetos Featherweight Java. A primeira parte desta tese define um procedimento direcionado por tipos para gerar programas aleatórios para cada linguagem de modo a aplicar testes baseados em propriedades para verificar propriedades de segurança, usando Haskell e a biblioteca QuickCheck. E, na segunda parte, foram aplicadas duas abordagens, extrínseca e intrínseca, para formalizar e provar segurança de tipos para ambas as linguagens de programação estudadas, usando a linguagem de tipos dependentes Agda, comparando as sutilezas de cada técnica. Além disso, foi demonstrado que as formalizações apresentadas podem ser estendidas para novas construções de linguagens, a partir da especificação e provas das mesmas propriedades para construções do Java 8. Acredita-se que esta combinação de testes baseados em propriedades com verificação formal pode melhorar a qualidade de software em geral e aumentar a produtividade durante o desenvolvimento de provas formais.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPESporUniversidade Federal de PelotasPrograma de Pós-Graduação em ComputaçãoUFPelBrasilCentro de Desenvolvimento TecnológicoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOComputaçãoProperty-based testingFormal verificationFeatherweight JavaQuickCheckAgdaTestes baseados em propriedadesVerificação formalFeatherweight JavaStrategies for testing and formalizing properties of modern programming languagesEstratégias para teste e formalização de propriedades de linguagens de programaçãoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttp://lattes.cnpq.br/1075888485122711http://lattes.cnpq.br/3277487290886063Ribeiro, Rodrigo Geraldohttp://lattes.cnpq.br/4921269815228128Du Bois, André RauberFeitosa, Samuel da Silvainfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFPel - Guaiacainstname:Universidade Federal de Pelotas (UFPEL)instacron:UFPELTEXTTese_Samuel_Feitosa.pdf.txtTese_Samuel_Feitosa.pdf.txtExtracted texttext/plain271366http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/6/Tese_Samuel_Feitosa.pdf.txt388de90fe2cad2d5916c453e5a2899e3MD56open accessTHUMBNAILTese_Samuel_Feitosa.pdf.jpgTese_Samuel_Feitosa.pdf.jpgGenerated Thumbnailimage/jpeg1246http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/7/Tese_Samuel_Feitosa.pdf.jpg3db5d698750913fd64b30ca288cfe656MD57open accessORIGINALTese_Samuel_Feitosa.pdfTese_Samuel_Feitosa.pdfapplication/pdf856494http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/1/Tese_Samuel_Feitosa.pdfaed86864ba808328015da664080ccb3fMD51open accessCC-LICENSElicense_urllicense_urltext/plain; charset=utf-849http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/2/license_url4afdbb8c545fd630ea7db775da747b2fMD52open accesslicense_textlicense_texttext/html; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/3/license_textd41d8cd98f00b204e9800998ecf8427eMD53open accesslicense_rdflicense_rdfapplication/rdf+xml; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/4/license_rdfd41d8cd98f00b204e9800998ecf8427eMD54open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81866http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/5/license.txt43cd690d6a359e86c1fe3d5b7cba0c9bMD55open accessprefix/62802023-07-13 03:13:41.824open accessoai:guaiaca.ufpel.edu.br:prefix/6280TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKCkNvbSBhIGFwcmVzZW50YcOnw6NvIGRlc3RhIGxpY2Vuw6dhLCB2b2PDqiAobyBhdXRvciAoZXMpIG91IG8gdGl0dWxhciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpIGNvbmNlZGUgYW8gUmVwb3NpdMOzcmlvIApJbnN0aXR1Y2lvbmFsIG8gZGlyZWl0byBuw6NvLWV4Y2x1c2l2byBkZSByZXByb2R1emlyLCAgdHJhZHV6aXIgKGNvbmZvcm1lIGRlZmluaWRvIGFiYWl4byksIGUvb3UgZGlzdHJpYnVpciBhIApzdWEgcHVibGljYcOnw6NvIChpbmNsdWluZG8gbyByZXN1bW8pIHBvciB0b2RvIG8gbXVuZG8gbm8gZm9ybWF0byBpbXByZXNzbyBlIGVsZXRyw7RuaWNvIGUgZW0gcXVhbHF1ZXIgbWVpbywgaW5jbHVpbmRvIG9zIApmb3JtYXRvcyDDoXVkaW8gb3UgdsOtZGVvLgoKVm9jw6ogY29uY29yZGEgcXVlIG8gRGVwb3NpdGEgcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIGEgc3VhIHB1YmxpY2HDp8OjbyBwYXJhIHF1YWxxdWVyIG1laW8gb3UgZm9ybWF0byAKcGFyYSBmaW5zIGRlIHByZXNlcnZhw6fDo28uCgpWb2PDqiB0YW1iw6ltIGNvbmNvcmRhIHF1ZSBvIERlcG9zaXRhIHBvZGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkZSBzdWEgcHVibGljYcOnw6NvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIAplIHByZXNlcnZhw6fDo28uCgpWb2PDqiBkZWNsYXJhIHF1ZSBhIHN1YSBwdWJsaWNhw6fDo28gw6kgb3JpZ2luYWwgZSBxdWUgdm9jw6ogdGVtIG8gcG9kZXIgZGUgY29uY2VkZXIgb3MgZGlyZWl0b3MgY29udGlkb3MgbmVzdGEgbGljZW7Dp2EuIApWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIG8gZGVww7NzaXRvIGRhIHN1YSBwdWJsaWNhw6fDo28gbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgCmRlIG5pbmd1w6ltLgoKQ2FzbyBhIHN1YSBwdWJsaWNhw6fDo28gY29udGVuaGEgbWF0ZXJpYWwgcXVlIHZvY8OqIG7Do28gcG9zc3VpIGEgdGl0dWxhcmlkYWRlIGRvcyBkaXJlaXRvcyBhdXRvcmFpcywgdm9jw6ogZGVjbGFyYSBxdWUgCm9idGV2ZSBhIHBlcm1pc3PDo28gaXJyZXN0cml0YSBkbyBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMgcGFyYSBjb25jZWRlciBhbyBEZXBvc2l0YSBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgCm5lc3RhIGxpY2Vuw6dhLCBlIHF1ZSBlc3NlIG1hdGVyaWFsIGRlIHByb3ByaWVkYWRlIGRlIHRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIApvdSBubyBjb250ZcO6ZG8gZGEgcHVibGljYcOnw6NvIG9yYSBkZXBvc2l0YWRhLgoKQ0FTTyBBIFBVQkxJQ0HDh8ODTyBPUkEgREVQT1NJVEFEQSBURU5IQSBTSURPIFJFU1VMVEFETyBERSBVTSBQQVRST0PDjU5JTyBPVSBBUE9JTyBERSBVTUEgQUfDik5DSUEgREUgRk9NRU5UTyBPVSBPVVRSTyAKT1JHQU5JU01PLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08gQ09NTyBUQU1Cw4lNIEFTIERFTUFJUyBPQlJJR0HDh8OVRVMgCkVYSUdJREFTIFBPUiBDT05UUkFUTyBPVSBBQ09SRE8uCgpPIERlcG9zaXRhIHNlIGNvbXByb21ldGUgYSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8gc2V1IG5vbWUgKHMpIG91IG8ocykgbm9tZShzKSBkbyhzKSBkZXRlbnRvcihlcykgZG9zIGRpcmVpdG9zIAphdXRvcmFpcyBkYSBwdWJsaWNhw6fDo28sIGUgbsOjbyBmYXLDoSBxdWFscXVlciBhbHRlcmHDp8OjbywgYWzDqW0gZGFxdWVsYXMgY29uY2VkaWRhcyBwb3IgZXN0YSBsaWNlbsOnYS4KRepositório InstitucionalPUBhttp://repositorio.ufpel.edu.br/oai/requestrippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.bropendoar:2023-07-13T06:13:41Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL)false |
| dc.title.pt_BR.fl_str_mv |
Strategies for testing and formalizing properties of modern programming languages |
| dc.title.alternative.pt_BR.fl_str_mv |
Estratégias para teste e formalização de propriedades de linguagens de programação |
| title |
Strategies for testing and formalizing properties of modern programming languages |
| spellingShingle |
Strategies for testing and formalizing properties of modern programming languages Feitosa, Samuel da Silva CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO Computação Property-based testing Formal verification Featherweight Java QuickCheck Agda Testes baseados em propriedades Verificação formal Featherweight Java |
| title_short |
Strategies for testing and formalizing properties of modern programming languages |
| title_full |
Strategies for testing and formalizing properties of modern programming languages |
| title_fullStr |
Strategies for testing and formalizing properties of modern programming languages |
| title_full_unstemmed |
Strategies for testing and formalizing properties of modern programming languages |
| title_sort |
Strategies for testing and formalizing properties of modern programming languages |
| author |
Feitosa, Samuel da Silva |
| author_facet |
Feitosa, Samuel da Silva |
| author_role |
author |
| dc.contributor.authorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/1075888485122711 |
| dc.contributor.advisorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/3277487290886063 |
| dc.contributor.advisor-co1.fl_str_mv |
Ribeiro, Rodrigo Geraldo |
| dc.contributor.advisor-co1Lattes.fl_str_mv |
http://lattes.cnpq.br/4921269815228128 |
| dc.contributor.advisor1.fl_str_mv |
Du Bois, André Rauber |
| dc.contributor.author.fl_str_mv |
Feitosa, Samuel da Silva |
| contributor_str_mv |
Ribeiro, Rodrigo Geraldo Du Bois, André Rauber |
| 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 Computação Property-based testing Formal verification Featherweight Java QuickCheck Agda Testes baseados em propriedades Verificação formal Featherweight Java |
| dc.subject.por.fl_str_mv |
Computação Property-based testing Formal verification Featherweight Java QuickCheck Agda Testes baseados em propriedades Verificação formal Featherweight Java |
| description |
Today’s world is full of devices and machines controlled by software, which depend upon programming languages and compilers to be produced and executed. The importance of correct software development goes beyond personal computers and smartphone apps. An error in a critical system, such as on a nuclear power plant or on an airplane controller, can cause catastrophic damage in our society. Nowadays, essentially two software validation techniques are used to avoid such problems: software testing and software verification. In this thesis we combine both validation techniques in the programming languages research area, applying property-based testing first to improve specifications and debugging programs, before an attempt of formal verification. By using such testing approach we can quickly eliminate false conjectures, by using the generated counterexamples, which help to correct them. Then, having confidence that the specification is correct, one can give a step forward and formalize the specification and prove its properties in an interactive theorem prover, which uses a mathematical framework to guarantee that these properties hold for a given specification. We apply different strategies to test and formalize two major programming languages, the functional Lambda Calculus, and the modern object-oriented calculus Featherweight Java. The first branch of this thesis defines a type-directed procedure to generate random programs for each calculus in order to apply property-based testing to check soundness properties on them, using the Haskell library QuickCheck. And in the second branch, we apply the two most used approaches, extrinsic and intrinsic, to formalize and prove type safety for both studied programming languages using the dependently-typed programming language Agda, comparing the subtleties of each technique. Furthermore, we show that our formalizations can be extended to new language constructions, by specifying and proving the same properties for Java 8 constructions. We believe that this combination of property-based testing with formal verification can improve the quality of software in general and increase productivity during formal proof development. |
| publishDate |
2019 |
| dc.date.issued.fl_str_mv |
2019-12-10 |
| dc.date.accessioned.fl_str_mv |
2020-07-24T23:45:03Z |
| dc.date.available.fl_str_mv |
2020-07-24T23:45:03Z |
| dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
| dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
| format |
doctoralThesis |
| status_str |
publishedVersion |
| dc.identifier.citation.fl_str_mv |
FEITOSA, Samuel da Silva. Strategies for Testing and Formalizing Properties of Modern Programming Languages. Advisor: Andre Rauber Du Bois. 2020. 133 f. Thesis (Doctorate in Computer Science) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2020. |
| dc.identifier.uri.fl_str_mv |
http://guaiaca.ufpel.edu.br/handle/prefix/6280 |
| identifier_str_mv |
FEITOSA, Samuel da Silva. Strategies for Testing and Formalizing Properties of Modern Programming Languages. Advisor: Andre Rauber Du Bois. 2020. 133 f. Thesis (Doctorate in Computer Science) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2020. |
| url |
http://guaiaca.ufpel.edu.br/handle/prefix/6280 |
| 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 de Pelotas |
| dc.publisher.program.fl_str_mv |
Programa de Pós-Graduação em Computação |
| dc.publisher.initials.fl_str_mv |
UFPel |
| dc.publisher.country.fl_str_mv |
Brasil |
| dc.publisher.department.fl_str_mv |
Centro de Desenvolvimento Tecnológico |
| publisher.none.fl_str_mv |
Universidade Federal de Pelotas |
| dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFPel - Guaiaca instname:Universidade Federal de Pelotas (UFPEL) instacron:UFPEL |
| instname_str |
Universidade Federal de Pelotas (UFPEL) |
| instacron_str |
UFPEL |
| institution |
UFPEL |
| reponame_str |
Repositório Institucional da UFPel - Guaiaca |
| collection |
Repositório Institucional da UFPel - Guaiaca |
| bitstream.url.fl_str_mv |
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/6/Tese_Samuel_Feitosa.pdf.txt http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/7/Tese_Samuel_Feitosa.pdf.jpg http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/1/Tese_Samuel_Feitosa.pdf http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/2/license_url http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/3/license_text http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/4/license_rdf http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/6280/5/license.txt |
| bitstream.checksum.fl_str_mv |
388de90fe2cad2d5916c453e5a2899e3 3db5d698750913fd64b30ca288cfe656 aed86864ba808328015da664080ccb3f 4afdbb8c545fd630ea7db775da747b2f d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 43cd690d6a359e86c1fe3d5b7cba0c9b |
| bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
| repository.name.fl_str_mv |
Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL) |
| repository.mail.fl_str_mv |
rippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.br |
| _version_ |
1856426110220238848 |