Feltolerans är förmågan hos ett system att fortsätta att utföra sin avsedda funktion trots fel. I en bredare mening förknippas feltolerans med tillförlitlighet och med framgångsrik drift utan driftstopp. Det yttersta målet med feltolerans är att utveckla ett pålitligt system. När samhället blir alltmer beroende av datasystem, blir pålitligheten hos dessa system en kritisk fråga. I flygplan, kemiska anläggningar, pacemakers eller andra säkerhetskritiska tillämpningar kan ett systemfel kosta människoliv eller orsaka miljökatastrofer. Det finns olika metoder för att uppnå feltolerans. Gemensamt för alla dessa metoder är en viss grad av redundans. Detta kan vara en replikerad maskinvarukomponent, en extra kontrollbit som är fogad till en digital datasträng eller några rader programkod som verifierar korrektheten av programmets resultat. I denna kurs kommer vi att studera feltolerans i både maskinvara och programvara. Den snabba utvecklingen av realtidsdatortillämpningar som började runt mitten av 1990-talet, särskilt efterfrågan på programvaruinbäddade intelligenta enheter, har gjort programvarufeltolerans till en angelägen fråga. Följande är en preliminär lista över ämnen som kommer att behandlas:
- Introduktion
- Definition av feltolerans
- Redundans
- Tillämpningar av feltolerans
- Grundläggande principer för pålitlighet
- Attribut: tillförlitlighet, tillgänglighet, säkerhet
- Brister: fel, misstag och misslyckanden
- Medel: förebyggande, borttagning och förutseende av fel
- Pålitlighetsutvärdering
- Vanliga mått: felhastighet, medeltid till fel, medeltid till reparation, etc.
- Tillförlitlighetsblockdiagram
- Markovprocesser
- Maskinvaruredundans
- Redundansscheman
- Utvärdering och jämförelse samt tillämpningar
- Informationsredundans
- Koder: linjära, Hamming-, cykliska, oordnade, aritmetiska, etc.
- Kodnings- och avkodningstekniker samt tillämpningar
- Tidsredundans
- Programvarufeltolerans
- Specifika egenskaper
- Programvarufeltoleranstekniker: N-versionsprogrammering, återställningsblock, självkontrollerande programvara, etc.