Compiling certified Reo code
Autor(a) principal: | |
---|---|
Data de Publicação: | 2018 |
Tipo de documento: | Trabalho de conclusão de curso |
Idioma: | por |
Título da fonte: | Repositório Institucional da Universidade Federal Fluminense (RIUFF) |
Texto Completo: | http://app.uff.br/riuff/handle/1/25817 |
Resumo: | Critical systems require high reliability and are present in many domains. In other words, systems which failure may result in financial damage or even loss of lives. Standard techniques of software engineering are not enough to ensure the absence of unacceptable failures and/or that critical requirements are fulfilled. Reo is a graphical modelling coordination language which focuses on model such interaction by taking advantage of natural properties in distributed systems, such as remote function calls and message passing. Constraint Automata are defined as the most basic formal semantic for Reo. Therefore Constraint Automata provide formalisms to reason and certify properties regarding Reo connectors. This work describes the constructive formalization of Constraint Automata in Coq proof assistant, including a compositional operation. The results regarding the obtained framework are discussed, along with the implemented theory and usage examples. |
id |
UFF-2_8484accb022afece91603b654e19c6db |
---|---|
oai_identifier_str |
oai:app.uff.br:1/25817 |
network_acronym_str |
UFF-2 |
network_name_str |
Repositório Institucional da Universidade Federal Fluminense (RIUFF) |
repository_id_str |
2120 |
spelling |
Compiling certified Reo codeProof AssistantsReoConstraint AutomataEngenharia de softwareAcreditaçãoConfiabilidade (Sistema de computação)Assistente de ProvasReoConstraint AutomataCritical systems require high reliability and are present in many domains. In other words, systems which failure may result in financial damage or even loss of lives. Standard techniques of software engineering are not enough to ensure the absence of unacceptable failures and/or that critical requirements are fulfilled. Reo is a graphical modelling coordination language which focuses on model such interaction by taking advantage of natural properties in distributed systems, such as remote function calls and message passing. Constraint Automata are defined as the most basic formal semantic for Reo. Therefore Constraint Automata provide formalisms to reason and certify properties regarding Reo connectors. This work describes the constructive formalization of Constraint Automata in Coq proof assistant, including a compositional operation. The results regarding the obtained framework are discussed, along with the implemented theory and usage examples.Sistemas cr ́ıticos s ̃ao aqueles nos quais a falha pode resultar em perda de vida, destrui ̧c ̃ao significativa, alta perda financeira ou dano ambiental [1]. Em suma, sistemas que precisam de um alto n ́ıvel de confiabilidade. H ́a diversos exemplos de sistemas cr ́ıticos aplicados a uma ampla gama de ́areas, de dispositivos m ́edicos a sistemas nucleares. As t ́ecnicas padr ̃ao de engenharia de software n ̃ao s ̃ao projetadas para lidar com sistemas n ̃ao tolerantes a falhas. Em muitos dom ́ınios, tais sistemas precisam de uma maneira de garantir sua seguran ̧ca, a fim de garantir que o sistema realmente atenda `a confiabilidade exigida. Os sistemas formais comp ̃oem um background te ́orico e implemen- tado (e.g. software) capaz de modelar e raciocinar sobre sistemas, garantindo (matema- ticamente) que os requisitos s ̃ao atendidos e que os sistemas se comportam conforme o esperado. Sistemas formais foram usados para certificar a linha 1 do metrˆo de Paris, Fran ̧ca [2], levando-a a um sistema de metrˆo totalmente automatizado, eliminado a necessidade de construir uma nova linha de metrˆo e consequentemete economizando milh ̃oes de euros. A Airbus utiliza m ́etodos formais para certificar sistemas de controle de aviˆonica de suas fam ́ılias de aeronaves A318 e A340-500/60 [3, 4]. A ausˆencia de tal certifica ̧c ̃ao em sistemas cr ́ıticos pode levar a cen ́arios catastr ́o- ficos: entre 1985 e 1987, o acelerador de el ́etrons m ́edico Therac-25 esteve envolvido em (pelo menos) seis ocorrˆencias de overdoses de radia ̧c ̃ao [5]. Este epis ́odio levou v ́arias pes- soas `a morte e feriu muitas outras. Isso aconteceu devido a uma combina ̧c ̃ao de fatores, nos quais podemos citar o excesso de confian ̧ca dos engenheiros de software e `a falta de certifica ̧c ̃ao [6]. Em mar ̧co de 2018, a iniciativa de um carro sem motorista da Uber estava envolvida em um acidente que matou um pedestre em Tempe, Arizona1 . 1https://www.nytimes.com/2018/03/19/technology/uber-driverless-fatality. html ix Muitos sistemas modernos est ̃ao se tornando cr ́ıticos. Perda financeira e at ́e mortes podem resultar de suas falhas [1]. Assim, desde o final dos anos 80 e in ́ıcio dos anos 90, pesquisas foram direcionadas para a aplica ̧c ̃ao de m ́etodos formais para sistemas cr ́ıticos [7, 1, 8]. Uma abordagem comum consiste em modelar tais sistemas como Sistemas Ciber- F ́ısicos. Garantir a seguran ̧ca e a confiabilidade dos Sistemas Ciber-F ́ısicos ́e um desafio atual [9]. Model ́a-los em sistemas baseados em l ́ogica permite o uso de uma ampla es- trutura te ́orica e de software para certificar que propriedades requeridas por tais sistemas s ̃ao satisfeitas. O uso de sistemas l ́ogicos para modelar e raciocinar sobre os Sistemas Ciber-F ́ısicos parece ser uma abordagem promissora [10]. Assistentes de prova [11], como Coq [12] e Isabelle [13], levam `a possibilidade de automatizar a verifica ̧c ̃ao de tais sistemas e forne- cer c ́odigo certificado. Seu design ́e feito sob medida para automatizar muitos (quando poss ́ıvel, todos) os passos das provas. A base te ́orica leva a ver provas como programas e programas como provas o que permite transformar uma prova de que os requisitos s ̃ao atendidos em um modelo em um c ́odigo (i.e. um programa) certificado. Exemplos industriais do uso de assistentes de prova j ́a est ̃ao presentes em empresas como Mistubishi [14] e NASA2 . Compiladores certificados desenvolvidos usando assistentes de prova tamb ́em encontram-se em uso [15]. O Coq ́e um dos mais proeminentes assistentes de prova. Ele lida com uma lin- guagem de alto n ́ıvel para modelar, provar e fornecer c ́odigo certificado automaticamente, al ́em de possuir uma linguagem de t ́aticas usada no processo de prova facilmente exten- s ́ıvel. Uma linguagem formal tamb ́em com interpreta ̧c ̃ao gr ́afica para a modelagem e veri- fica ̧c ̃ao de sistemas ́e Reo. Reo [16] ́e uma linguagem gr ́afica baseada em coordenadas com canais e conectores para a modelagem e verifica ̧c ̃ao de sistemas. Dados seus componentes b ́asicos (e.g. canais capazes de modelar o fluxo de dados, filtros, filas, decompositores, sumidouro, sincronizadores etc.); ela se adequa de forma bastante natural `a arquitetura orientada a servi ̧cos. Constraint Automata [17] ́e o formalismo mais b ́asico que denota semˆantica formal para Reo. Trata-se de um formalismo semelhante `a autˆomatos finitos, onde as transi ̧c ̃oes 2https://shemesh.larc.nasa.gov/fm/ftp/larc/PVS-library/ x s ̃ao dependentes de proposi ̧c ̃oes l ́ogicas acerca de dados vistos nas portas do autˆomato, que por sua vez denotam n ́os em Reo, representando pontos dos conectores Reo pelos quais passam fluxos de dados. Cada n ́o em Reo ́e visto (a grosso modo) como uma instˆancia de um software modelado. Para cada conector Reo canˆonico h ́a um constraint automaton associado [18]. O presente trabalho trata da formaliza ̧c ̃ao de Constraint Automata no Coq de forma a obter meios para verifica ̧c ̃ao formal de conectores Reo por meio de Constraint Automata. S ̃ao formalizados as principais defini ̧c ̃oes referentes a este formalismo, a opera- ̧c ̃ao produto que comp ̃oe autˆomatos a partir de outros autˆomatos e os autˆomatos referentes aos conectores Reo tamb ́em s ̃ao formalizados.191 p.Lopes, BrunoPaes, Aline Marins PaesMario, BenevidesHerman Haeusler, EdwardGrilo, Erick Simas2022-07-25T16:22:44Z2022-07-25T16:22:44Z2018info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisapplication/pdfGRILO, Erick Simas. Compiling certified Reo code. 2018. 191 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)-Universidade Federal Fluminense, Escola de Engenharia, Niterói, 2018http://app.uff.br/riuff/handle/1/25817CC-BY-SAinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da Universidade Federal Fluminense (RIUFF)instname:Universidade Federal Fluminense (UFF)instacron:UFF2022-07-25T16:22:47Zoai:app.uff.br:1/25817Repositório InstitucionalPUBhttps://app.uff.br/oai/requestriuff@id.uff.bropendoar:21202024-08-19T11:01:07.032988Repositório Institucional da Universidade Federal Fluminense (RIUFF) - Universidade Federal Fluminense (UFF)false |
dc.title.none.fl_str_mv |
Compiling certified Reo code |
title |
Compiling certified Reo code |
spellingShingle |
Compiling certified Reo code Grilo, Erick Simas Proof Assistants Reo Constraint Automata Engenharia de software Acreditação Confiabilidade (Sistema de computação) Assistente de Provas Reo Constraint Automata |
title_short |
Compiling certified Reo code |
title_full |
Compiling certified Reo code |
title_fullStr |
Compiling certified Reo code |
title_full_unstemmed |
Compiling certified Reo code |
title_sort |
Compiling certified Reo code |
author |
Grilo, Erick Simas |
author_facet |
Grilo, Erick Simas |
author_role |
author |
dc.contributor.none.fl_str_mv |
Lopes, Bruno Paes, Aline Marins Paes Mario, Benevides Herman Haeusler, Edward |
dc.contributor.author.fl_str_mv |
Grilo, Erick Simas |
dc.subject.por.fl_str_mv |
Proof Assistants Reo Constraint Automata Engenharia de software Acreditação Confiabilidade (Sistema de computação) Assistente de Provas Reo Constraint Automata |
topic |
Proof Assistants Reo Constraint Automata Engenharia de software Acreditação Confiabilidade (Sistema de computação) Assistente de Provas Reo Constraint Automata |
description |
Critical systems require high reliability and are present in many domains. In other words, systems which failure may result in financial damage or even loss of lives. Standard techniques of software engineering are not enough to ensure the absence of unacceptable failures and/or that critical requirements are fulfilled. Reo is a graphical modelling coordination language which focuses on model such interaction by taking advantage of natural properties in distributed systems, such as remote function calls and message passing. Constraint Automata are defined as the most basic formal semantic for Reo. Therefore Constraint Automata provide formalisms to reason and certify properties regarding Reo connectors. This work describes the constructive formalization of Constraint Automata in Coq proof assistant, including a compositional operation. The results regarding the obtained framework are discussed, along with the implemented theory and usage examples. |
publishDate |
2018 |
dc.date.none.fl_str_mv |
2018 2022-07-25T16:22:44Z 2022-07-25T16:22:44Z |
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 |
GRILO, Erick Simas. Compiling certified Reo code. 2018. 191 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)-Universidade Federal Fluminense, Escola de Engenharia, Niterói, 2018 http://app.uff.br/riuff/handle/1/25817 |
identifier_str_mv |
GRILO, Erick Simas. Compiling certified Reo code. 2018. 191 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)-Universidade Federal Fluminense, Escola de Engenharia, Niterói, 2018 |
url |
http://app.uff.br/riuff/handle/1/25817 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
CC-BY-SA info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
CC-BY-SA |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da Universidade Federal Fluminense (RIUFF) instname:Universidade Federal Fluminense (UFF) instacron:UFF |
instname_str |
Universidade Federal Fluminense (UFF) |
instacron_str |
UFF |
institution |
UFF |
reponame_str |
Repositório Institucional da Universidade Federal Fluminense (RIUFF) |
collection |
Repositório Institucional da Universidade Federal Fluminense (RIUFF) |
repository.name.fl_str_mv |
Repositório Institucional da Universidade Federal Fluminense (RIUFF) - Universidade Federal Fluminense (UFF) |
repository.mail.fl_str_mv |
riuff@id.uff.br |
_version_ |
1811823636868235264 |