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

TítuloExploring rust for embedded and critical systems
Outro(s) título(s)Rust for critical systems
Rust para sistemas críticos
Autor(es)Pinho, André Brandão de
Orientador(es)Oliveira, José Nuno Fonseca
Couto, Luís Diogo
Palavras-chaveCritical systems
Embedded systems
Rust
Sistemas críticos
Sistemas embebidos
Data9-Jan-2020
Resumo(s)The 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.
A 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.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado integrado em Engenharia Informática
URIhttps://hdl.handle.net/1822/79813
AcessoAcesso aberto
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