Safety-Critical Software for Space Missions

Loading...
Thumbnail Image

URL

Journal Title

Journal ISSN

Volume Title

Perustieteiden korkeakoulu | Bachelor's thesis

Department

Major/Subject

Mcode

SCI3027

Language

en

Pages

36

Series

Abstract

Critical software failures can result in the loss of an entire space mission. Additionally, software used in space is difficult to diagnose due to a large distance to the hardware. Software faults in space can cause large financial risks, or on a manned mission even a risk of loss of human life. Therefore, designing and implementing reliable software is especially important in space missions. The current literature on space mission reliability focuses mainly on hardware reliability and testing methods. The objective of this thesis is to present a literature review of methods that can be used to improve the reliability of embedded software used in space. A comprehensive overview of the topic is provided. In addition, the best methods and practices used by experts in the field are described. This thesis supports the design of safety-critical software, which improves the chances of success in space missions. The research in the thesis is performed as a literature review with scientific articles, textbooks, technical reports, and standards used as references. In selecting the sources, an effort is made to avoid bias by considering viewpoints from various space agencies. In addition, available recommendations and practices are compared to identify which methods are widely agreed upon by experts in the field. The thesis also presents practical examples based on the author’s own two-year experience in the development of safety-critical software for the Foresail 1 prime CubeSat project at Aalto University. By utilizing strict coding standards and guidelines, such as the MISRA standard or NASA JPL programming guidelines, it is possible to minimize the number of faults in the code. However, it is impossible to create completely faultless code. Hence, space systems must have mechanisms that allow for fault state detection, fault isolation, and autonomous recovery. Furthermore, adequate software testing, which focuses on fault detection and recovery logic in addition to software functionality, will facilitate early detection and correction of faults during the development process, and consequently improving software reliability. By combining these methods, it is possible to develop well-tested software which has as few faults as possible and is able to autonomously recover from remaining critical faults.

Vakavat ohjelmiston toimintahäiriöt voivat johtaa kokonaisen avaruustehtävän epäonnistumiseen. Avaruudessa käytettävän ohjelmiston diagnosointi on myös haastavaa, sillä laitteistoon on suuri etäisyys. Ohjelmointivirheet voivat aiheuttaa suuria taloudellisia riskejä, tai miehitetyllä avaruuslennolla johtaa jopa ihmishenkien menetykseen. Tästä syystä luotettavien ohjelmistojen suunnittelu ja toteuttaminen ovat erityisen tärkeitä avaruustehtävissä. Tämänhetkinen kirjallisuus avaruustehtävien luotettavuudesta keskittyy suurelta osalta laitteiston luotettavuuteen tai testausmenetelmiin. Tämän opinnäytetyön tavoitteena on esittää kirjallisuuskatsaus menetelmistä, joilla voidaan parantaa avaruudessa käytettävien sulautettujen ohjelmistojen luotettavuutta. Työ pyrkii tarjoamaan monipuolisen ja kattavan katsauksen aiheesta ja esittelemään parhaita alalla käytettyjä menetelmiä luotettavien ohjelmistojen tuottamiseen. Työ tukee myös turvallisuuskriittisten ohjelmistojen suunnittelua, joka lisää avaruustehtävien onnistumisen todennäköisyyttä. Työn tutkimus on toteutettu kirjallisuuskatsauksena, jossa lähdemateriaalina on käytetty tieteellisiä artikkeleita, oppikirjoja, avaruusjärjestöjen teknisiä raportteja ja standardeja. Lähteiden valinnassa on pyritty huomioimaan monipuolisesti avaruusjärjestöjen näkökulmia ja suosituksia menetelmistä, joiden tehokkuudesta alan asiantuntijat ovat enimmäkseen yksimielisiä. Työssä esitetään myös käytännön esimerkkejä perustuen kirjoittajan omaan kahden vuoden kokemukseen nanosatelliitin sulautettujen järjestelmien ohjelmoinnista Aalto-yliopiston satelliittilaboratorissa. Noudattamalla tiukkoja koodaussääntöjä ja -standardeja, kuten MISRA-standardia tai NASA:n ohjelmointistandardia, on mahdollista minimoida virheiden määrää koodissa. On kuitenkin mahdotonta tehdä täysin virheetöntä koodia, joten ohjelmistossa on oltava mekanismeja, joilla se havaitsee virhetilanteita, eristää virheet minimoidakseen niiden ulkoiset vaikutukset ja palautuu tavanomaiseen käyttötilaan. Lisäksi kattava ohjelmistojen testaus, joka keskittyy keskeisten toimintojen lisäksi myös virheiden tunnistamiseen ja niistä palautumiseen auttaa havaitsemaan vikoja aikaisessa kehitysvaiheessa sekä parantamaan ohjelmiston luotettavuutta. Yhdistämällä nämä menetelmät on mahdollista luoda hyvin testattuja ohjelmistoja, jossa virheiden määrä on pieni ja joka kykenee havaitsemaan ja korjaamaan vikatilanteet itsediagnostiikan avulla.

Description

Supervisor

Savioja, Lauri

Thesis advisor

Praks, Jaan

Other note

Citation