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

Registo completo
Campo DCValorIdioma
dc.contributor.advisorOliveira, José Nuno Fonsecapor
dc.contributor.advisorCouto, Luís Diogopor
dc.contributor.authorPinho, André Brandão depor
dc.date.accessioned2022-09-29T14:32:03Z-
dc.date.available2022-09-29T14:32:03Z-
dc.date.issued2020-01-09-
dc.date.submitted2020-
dc.identifier.urihttps://hdl.handle.net/1822/79813-
dc.descriptionDissertação de mestrado integrado em Engenharia Informáticapor
dc.description.abstractThe C programming language is perhaps the most widespread in the design of safety-critical systems. However, its adoption suffers from disadvantages because it lacks in safety, entailing extensive and expensive verification processes. There are other programming languages, such as Ada and SPARK, that offer safety features that automatically comply with the current safety standards. Nevertheless, the software industry continues to use C after all and its associated verification process to build safety-critical software. Rust is a modern programming language that promises to soften such insecurities by design, thus improving on the development of safety-critical software. Due to its ownership model, Rust can ensure memory safety at compile time. Because it is a systems programming language, it is also a promising language for embedded systems. The main aim of the project reported in this dissertation is to understand how Rust can alleviate the certification process of safety-critical software, while evaluating its maturity for embedded systems. We analyse in which platforms Rust is available and compare embedded Rust to other languages used in the safety-critical domain. This analysis consists in comparing Rust safety features with coding guidelines commonly used in the software industry. Some case studies are carried out, such as preemptive and cooperative scheduling (both in C and Rust to better understand the programming differences in these languages), a driver for an accelerometer and finally a program that uses the scheduler, the accelerometer and the leds of a micro-controller, where one thread reads acceleration values and another thread turns leds on/off according to such readings. The dissertation ends with an overview of the results obtained. Not only a comparison is given with coding guidelines used in industry, but also concerning the case studies developed. It also anticipates some important work that could be added, as well as some details where Rust could be improved to become prominent in the industry of safety critical software.por
dc.description.abstractA linguagem de programação C é talvez a que tem mais representação no design de sistemas críticos. Contudo, a sua utilização tem algumas desvantagens pois falha em segurança, o que resulta em processos de verificação extensos e dispendiosos. Existem outras linguagens de programação, como Ada e SPARK, que possuem funcionalidades de segurança que automaticamente correspondem aos standards de segurança. Apesar disso, o que se verifica é que a indústria continua a usar C e o consequente processo de verificação para desenvolver software crítico. Rust é uma linguagem moderna que promete atenuar tais inseguranças pelo design, melhorando assim o desenvolvimento de software crítico. Graças ao seu modelo de ownership, a linguagem consegue assegurar uma utilização da memória de forma segura no momento da compilação do código. Como Rust é uma linguagem de programação de sistemas, esta é promissora para ser usada nos sistemas embebidos. O objectivo principal desta dissertação é investigar como é que Rust pode suavizar o processo de certificação de software crítico, e avaliar a maturidade de Rust para sistemas embebidos. Assim, analisamos em que plataformas Rust está disponível e comparamos Rust embebido com outras linguagens utilizadas neste domínio. Esta análise consiste em comparar as características de segurança de Rust com as normas de codificação utilizadas na indústria. Alguns casos de estudo foram desenvolvidos, tais como schedulers preemptivos e cooperativos (tanto em C como em Rust para perceber melhor quais as diferenças em programar nestas linguagens), um driver para usar um acelerómetro e, por fim, um programa que faz uso do scheduler, acelerómetro e leds presentes no microcontrolador, tendo uma thread a ler valores de aceleração e outra thread a ligar ou desligar os leds de acordo com essas leituras. A dissertação acaba com uma visão global dos resultados obtidos. Não é feito apenas uma comparação com as normas de codificação usadas na indústria, como também uma comparação dos casos de estudo desenvolvidos. Também exploramos algum trabalho importante que pode ser desenvolvido no futuro, bem como alguns detalhes onde a linguagem pode ser melhorada para poder fazer parte da indústria crítica.por
dc.description.sponsorshipBolsa Erasmus Placementpor
dc.language.isoengpor
dc.rightsopenAccesspor
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/por
dc.subjectCritical systemspor
dc.subjectEmbedded systemspor
dc.subjectRustpor
dc.subjectSistemas críticospor
dc.subjectSistemas embebidospor
dc.titleExploring rust for embedded and critical systemspor
dc.title.alternativeRust for critical systemspor
dc.title.alternativeRust para sistemas críticospor
dc.typemasterThesiseng
dc.identifier.tid203018435por
thesis.degree.grantorUniversidade do Minhopor
sdum.degree.grade16 valorespor
sdum.uoeiEscola de Engenhariapor
dc.subject.fosEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informáticapor
Aparece nas coleções:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
André Brandão de Pinho.pdfDissertação de mestrado980,25 kBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

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