Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/28362

TítuloGamaBoogie : a contract-based slicer for Boogie programs
Autor(es)Coelho, Márcio
Orientador(es)Henriques, Pedro Rangel
Cruz, Daniela da
Data15-Dez-2011
Resumo(s)In the context of the Informatics Engineering MSc. degree (MEI), second year, this document describes and discusses a master thesis project in the area of source code analysis using slicing and program verification techniques. Design-by-Contract is an approach that allows a programmer to specify the expected behaviour of a component by the means of preconditions, postconditions and invariants. These annotations (or contracts) can be seen as a form of enriched software documentation and they are used to verify that the program is correct with respect to these contracts. On one hand, slicing the program to extract the code that is relevant for the contracts reduce the size of the program and improves its verification. On the other hand, using the contract to slice a program in a finer, more sensible semantic way, enables to optimise the code reducing it to the minimum necessary to keep the postcondition true. Following the last research direction, Daniela da Cruz introduced in her Ph.D. thesis the concepts of Assertion-based Slicing and Contract-based Slicing to explore (at an intra-procedural or interprocedural level) the optimisation of code according to the semantics expressed by contracts. Her approach is based on the source code analyses and her slicing uses annotations present in the procedures. This thesis focuses on the study of BoogiePL language and its use as an intermediate representation for annotated programs in order to build slices of Boogie programs (instead of slicing the source code). Boogie compiler is used to generate the verification conditions in SMT just for the computed slice; these conditions can be then passed to the Z3 Prover to ensure that all contracts are preserved when invoking annotated procedures. The final objective is to make possible the comparison between the SMT code produced by this approach and the code currently generated by GamaSlicer, expecting to obtain a more efficient solution. To implement that idea, a tool called GamaBoogie was developed. That tool, at the end, offers more than its main functionality in slicing and verifying. Actually it allows to inspect and visualise boogie programs; this functionality seems to be very useful for Boogie program comprehension.
No contexto do Mestrado em Engenharia Informática (MEI), segundo ano, este documento é uma dissertação que descreve e discute um projeto de tese de mestrado na área de análise de código fonte utilizando técnicas de slicing e de verificação de programas. Design-by-Contract é uma abordagem que permite ao programador especificar o comportamento esperado de um componente por meio de pré-condições, pós-condições e invariantes. Estas anotações (ou contratos) podem ser vistos como uma forma de enriquecer a documentação do software e são usados �para verificar se o programa está correto com relação a esses contratos. Por um lado, fazer o slicing do programa para extrair o código que é relevante para os contratos, pode reduzir o tamanho do programa e melhorar a sua verificação. Por outro lado, usando o contrato para fazer o slicing de um programa de forma mais sensível à semântica, permite otimizar o código reduzindo-o ao mínimo necessário para manter o contrato válido. Seguindo a direção da última pesquisa, Daniela da Cruz introduziu na sua tese de doutoramento os conceitos de Assertion-based Slicing e Contract-based Slicing para explorar (a nível intraprocedimento ou inter-procedimento) a otimização de código de acordo com a semântica expressa por contratos. A sua abordagem é baseada na análise de código fonte e o slicing aplicado a tais programas utiliza anotações presentes nos procedimentos. Esta tese centra-se no estudo da linguagem BoogiePL e no seu uso como uma representação intermédia para programas anotados a fim de construir slices de programas Boogie (em vez de fazer o slicing ao nível do código fonte). O compilador Boogie é usado para gerar as condições de verificação em SMT apenas para o slice calculado; essas condições podem ser passadas para o Prover Z3 para garantir que todos os contratos são preservados quando invocados os procedimentos anotados. O objetivo final é tornar possível a comparação entre o código final produzido por esta abordagem e o código atualmente gerado pelo GamaSlicer, com a expetativa de obter uma solução mais eficiente. Para implementar essa ideia, uma ferramenta chamada GamaBoogie foi desenvolvida. Essa ferramenta, no final, oferece mais do que sua funcionalidade principal de slicing e verificação. Na verdade, permite inspecionar e visualizar programas Boogie; esta funcionalidade demonstrou ser útil para a compreensão de programas Boogie.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado em Engenharia de Informática
URIhttps://hdl.handle.net/1822/28362
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
eeum_di_dissertacao_pg16046.pdf1,69 MBAdobe PDFVer/Abrir

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID