Automatic repair of behavioural specifications
Autor(a) principal: | |
---|---|
Data de Publicação: | 2022 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | https://hdl.handle.net/1822/84347 |
Resumo: | Dissertação de mestrado integrado em Informatics Engineering |
id |
RCAP_9c97c68fa8bf32beb70f5a63d9484535 |
---|---|
oai_identifier_str |
oai:repositorium.sdum.uminho.pt:1822/84347 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Automatic repair of behavioural specificationsReparação automática de especificações comportamentaisFormal methodsBehavioural specificationsAutomatic specification repairAlloyMétodos formaisEspecificações temporaisReparação automatica de especificaçõesEngenharia e Tecnologia::Outras Engenharias e TecnologiasDissertação de mestrado integrado em Informatics EngineeringSomewhat worryingly, software is becoming increasingly complex with the passing of time. Even though society has become completely dependent on it, there’s still not enough quality teaching and tooling to help software engineers verify the correctness of their solutions. Furthermore, quickly put together solutions are often incentivized over a more rigorous approach. Software is always bound to have bugs. However, formal specification languages allow the modeling of complex systems by specifying the relevant entities, how they interact, and testing the expected guarantees. Hence, helping developers gain valuable understanding of the systems they work with. This approach has the drawbacks of not only being time costly, adding another step in the development process that requires deep understanding of the problem, but also being difficult to learn. The cause is due to the more abstract nature of specification compared to programming, paired with the need to be comfortable working with formal logic concepts. Alloy is a formal specification language capable of structural and behavioral analysis. It is a popular framework for validating and verifying requirements, in part due to its expressiveness and flexibility. This makes it a prime candidate to develop and experiment new automatic repair techniques. They can help experienced developers speed up the process of writing specifications and new developers to learn quicker. With this in mind, some work has been done on repairing flawed structural Alloy models, but none considering behavioral aspects. Thus, this thesis presents an overview of the Alloy language, along with previously proposed automatic repair techniques; it proposes the first mutation-based technique for the automatic repair of first-order temporal logic specifications using Alloy6; also, it describes the integration of an automatic hint generation system for Alloy4Fun, an online platform for teaching Alloy.De forma preocupante, o software está a tornar-se cada vez mais complexo com a passagem do tempo. A sociedade está completamente dependente dele. No entanto, mesmo nos dias que decorrem, não há ensino nem ferramentas suficientes que permitam aos engenheiros de software verificar a correção das suas soluções. Para além disto, soluções construídas rapidamente e com negligência relativamente à qualidade são incentivadas em contraste a uma abordagem mais rigorosa. Todo o tipo de software terá inevitavelmente defeitos. No entanto, as linguagens de especificação formal permitem modelar sistemas complexos através da especificação das entidades relevantes, como as mesmas interagem, e testes das garantias esperadas. Consequentemente isto auxilia profissionais a compreender mais aprofundadamente os sistemas em que trabalham. Esta abordagem tem algumas desvantagens, como ser custosa temporalmente, sendo que adiciona mais um passo no processo de desenvolvimento, para além de ser difícil de aprender. A causa disto vem da natureza abstrata de especificações quando comparadas a programação, em conjunto da necessidade de estar confortável a trabalhar com conceitos de lógica formal. Alloy é uma linguagem de especificação formal, capaz de análise estrutural e também temporal. É uma framework popular para validar e verificar requisitos, em grande parte por ser bastante expressiva e flexível. Isto torna-a uma excelente candidata para desenvolver e testar novas técnicas de reparação automática. Estas podem ser capazes ajudar estudantes a aprender mais rapidamente, tal como acelerar o desenvolvimento para utilizadores experientes. Com esta finalidade, algum trabalho já foi feito em relação à reparação de modelos estruturais em Alloy; no entanto, nada se encontra feito quando se põe em consideração os aspetos temporais. Sendo assim, este trabalho apresenta um resumo da linguagem Alloy, em conjunto com as técnicas de reparação automática já propostas; propõe a primeira técnica baseada em mutações para reparação automática de especificações de lógica de primeira ordem em Alloy 6; para alem disso, descreve a integração de um sistema de geração automática de dicas para a plataforma Alloy4Fun.This work is financed by National Funds through the Portuguese funding agency, FCT – Fundação para a Ciência e a Tecnologia within project EXPL/CCI-COM/1637/2021Cunha, AlcinoMacedo, NunoUniversidade do MinhoCerqueira, Jorge Gabriel Alves20222022-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1822/84347eng203261224info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-07-21T12:52:48Zoai:repositorium.sdum.uminho.pt:1822/84347Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T19:52:01.787348Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Automatic repair of behavioural specifications Reparação automática de especificações comportamentais |
title |
Automatic repair of behavioural specifications |
spellingShingle |
Automatic repair of behavioural specifications Cerqueira, Jorge Gabriel Alves Formal methods Behavioural specifications Automatic specification repair Alloy Métodos formais Especificações temporais Reparação automatica de especificações Engenharia e Tecnologia::Outras Engenharias e Tecnologias |
title_short |
Automatic repair of behavioural specifications |
title_full |
Automatic repair of behavioural specifications |
title_fullStr |
Automatic repair of behavioural specifications |
title_full_unstemmed |
Automatic repair of behavioural specifications |
title_sort |
Automatic repair of behavioural specifications |
author |
Cerqueira, Jorge Gabriel Alves |
author_facet |
Cerqueira, Jorge Gabriel Alves |
author_role |
author |
dc.contributor.none.fl_str_mv |
Cunha, Alcino Macedo, Nuno Universidade do Minho |
dc.contributor.author.fl_str_mv |
Cerqueira, Jorge Gabriel Alves |
dc.subject.por.fl_str_mv |
Formal methods Behavioural specifications Automatic specification repair Alloy Métodos formais Especificações temporais Reparação automatica de especificações Engenharia e Tecnologia::Outras Engenharias e Tecnologias |
topic |
Formal methods Behavioural specifications Automatic specification repair Alloy Métodos formais Especificações temporais Reparação automatica de especificações Engenharia e Tecnologia::Outras Engenharias e Tecnologias |
description |
Dissertação de mestrado integrado em Informatics Engineering |
publishDate |
2022 |
dc.date.none.fl_str_mv |
2022 2022-01-01T00:00:00Z |
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 |
https://hdl.handle.net/1822/84347 |
url |
https://hdl.handle.net/1822/84347 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
203261224 |
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.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799133111018061824 |