11. Luento: Vikasietoisuus. Tommi Mikkonen,

Samankaltaiset tiedostot
Arto Salminen,

OHJ-4301 Sulautettu Ohjelmointi

11. Vikasietoisuus Vikasietoisuuden käsitteitä

Ohjelmistojen virheistä

Vikasietoisuus ja luotettavuus

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

OHJ-4301 Sulautettu Ohjelmointi

Liittymän vikadiagnosointi

Vikasietoisuus ja luotettavuus

Sulautettujen järjestelmien vikadiagnostiikan kehittäminen ohjelmistopohjaisilla menetelmillä

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

XEROXIN TURVATIEDOTE XRX Versio 1.0 Muutettu viimeksi: 10/08/05

Toiminnallinen turvallisuus

Tosiaikajärjestelmät Luento 6: Luotettavuus ja turvallisuus

Garmin laitteiden ohjelmistopäivitys

Topfieldin sarjaporttipäivitystyökalun asennus(rs232)

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

Luotettavuus ja vikasietoisuus. Tosiaikajärjestelmät Luento 6: Luotettavuus ja turvallisuus. Vika, virhe, häiriö. Mistä häiriöt syntyvät?

1 Tivax siirto uuteen koneeseen

TK Palvelinympäristö

11. Javan toistorakenteet 11.1

-Motorracing Electronics WB-NÄYTTÖ KÄYTTÖOHJE. WB-näyttö Käyttöohje v1.0 12/2011 1/7

2 Konekieli, aliohjelmat, keskeytykset

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

Kameran laiteohjelman päivittäminen

Peilittömien kameroiden, NIKKOR Z-objektiivien ja yhteensopivien lisävarusteiden laiteohjelmiston päivitys

Teollisuusautomaation standardit. Osio 6:

Asennus ja käyttöopas

Kameran laiteohjelman päivittäminen

Ohjelmoinnin perusteet, syksy 2006

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Langattomien kauko-ohjainten WR-1/WR-R10 laiteohjelman päivittäminen

iloq P10S.10/20 -ohjelmointilaite Käyttöohje

KAAPELITESTERI / PAIKANNIN TRIFITEK TR-383 PIKAKÄYTTÖOHJE V1.0

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Digitaalisen SLR-kameran laiteohjelmiston päivittäminen

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Visma Avendon asennusohje

BIRSSI.NET 2 - OHJEET KULJETTAJILLE

Ohjelmoinnin perusteet Y Python

4. Lausekielinen ohjelmointi 4.1

HELIA 1 (14) Outi Virkki Tiedonhallinta

VISUAALINEN TIETOTURVASUUNNITELMA PENTTI LIIKANEN

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

TURVALLISUUDEN HUOMIOMINEN OHJELMISTON HANKINTAKETJUSSA

12. Javan toistorakenteet 12.1

Algoritmit 2. Luento 13 Ti Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

12. Javan toistorakenteet 12.1

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Huawei E3276s ohjelmistopäivitys

WR-R10- langattoman kauko-ohjaimen laiteohjelman päivittäminen

CEM DT-3353 Pihtimittari

Digitaalisen SLR-kameran laiteohjelmiston päivittäminen

Golfsimulaattorin käyttö- ja peliohjeet

AU Automaatiotekniikka. Toimilohko FB

UML -mallinnus TILAKAAVIO

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

MITÄ ON GEMBA-WALK? Janne Metsolahti Työnjohtaja YIT Infra Oy

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Toshiba EasyGuard käytännössä: Portégé M300

Luento 5 Riippuvuudet vikapuissa Esimerkkejä PSA:sta

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Machine Control Studio - Kuinka päästä alkuun. Ohjelmointiympäristö Unidrive M ja MCi2x0 laitteille

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

TIETOISKU SUUNNITTELUHARJOITUKSEN DOKUMENTAATIOSTA

Kameran laiteohjelman päivittäminen

Simulaattorin asennus- ja käyttöohje

Kameran laiteohjelman päivittäminen

WINDOWSIN ASENTAMINEN

PAS-RATKAISUN PALVELUKUVAUS

HP ProBook 430 G5 kannettavien käyttöönotto

Julkaisutiedot. Scania Diagnos & Programmer 3 versio 2.27

Windows. Valmistelut. Windows

Febdok 5.5.x, Varmuuskopiot OHJEISTUS

ipad:n päivitys versioon ios 7 Porin kaupungin luottamushenkilöt

Liite 2 1(20) Tarkastukset Tekla NIS Offline Inspection ohjelmistolla. Käyttöohje asentajille

Mac. Valmistelut. Mac

Kovalevyn pika asennusopas

Kameran laiteohjelman päivittäminen

Järjestelmän alasajon suunnittelu. Kullström Satu

Yritysturvallisuuden perusteet

Ohje: Tiedostot turvaan ja puhdas Ubuntu alle

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

A14-11 Potilaan mittaustiedon siirtäminen matkapuhelimeen

JOVISION IP-KAMERA Käyttöohje

Henkilö- ja koulutusrekisterin asennusohje

Taloyhtiön laajakaistan käyttöohje, Tekniikka: HomePNA. Käyttöjärjestelmä: Windows XP

Avoimen lähdekoodin kehitysmallit

PROBYTE GSM ALARM #6d

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

1 Visma L7 päivitysaineiston nouto

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

LAATURAPORTTI Iteraatio 1

Algoritmit 1. Luento 3 Ti Timo Männikkö

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

ERISTYSTASON VALVONTARELE MEV-7 (LC-7 ja Kosketusnäyttö)

MAMK/Talotekniikka/Heikki Salomaa 1. MAMK/YT/Talotekniikka/LVI havaintoja

Transkriptio:

11. Luento: Vikasietoisuus Tommi Mikkonen, tommi.mikkonen@tut.fi

Agenda Vikasietoisuuden käsitteistöä Vikasietoisuuden saavuttaminen Ohjelmisto- ja laitteistovioista Vika-analyysi Esimerkkejä Vikasietoisuuden luokittelua Käynnistys ja uudelleenkäynnistys Ohjelmistotyö ja ylläpito suorituksen aikana Yhteenveto

Käsitteistö ei vakiintunut kaikilta osin Vika (fault): Matalimman tason poikkeuksellinen toiminta Virhe/virhetila (error): Vian seurauksena aiheutuva järjestelmän poikkeuksellinen tila Virhetoiminto (failure): Järjestelmän väärä toiminta virhetilanteessa

Turvallisuus- ja elävyysominaisuudet Turvallisuus (safety): Järjestelmä ei tee mitään sellaista mitä se ei saisi tehdä Elävyys (liveness): Laite tekee jotakin

Vikasietoisuuden eri muodot Turvallisuus säilyy Elävyys säilyy Peittävä vikasietoisuus Elävyys ei säily Vikaturvallinen Turvallisuus ei säily Ei-peittävä vikasietoisuus Ei vikasietoisuutta

Vikasietoisuuden saavuttaminen Välttämätön ehto on varautua vikaan; geneeristä vikasietoisuusmoduulia ei ole! Tapoja useita Datan redundanssi (kaikkea tietoa ei tarvita suorituksessa); erilaiset pariteettijärjestelmät, tarkistussummat jne. Ohjelmakoodin redundanssi (erilaiset vikaantumistestit); tyypillisesti koodissa haaroja jotka ovat ylimääräisiä, defensiivinen ohjelmointi yleisenä käytäntönä

Esimerkki int i = 0; while (1) { // Jotain ihmeellistä tekemistä i++ if (i == 10) break; // Ihmeellinen laskenta jatkuu }

Esimerkki int i = 0; while (1) { // Jotain ihmeellistä tekemistä i++ if (i >= 10) break; // Ihmeellinen laskenta jatkuu }

Vikojen havaitsemisesta Virhetarkastelut Tarkistussummat Assertiot Vahtikoira (watchdog)/pulssi (heartbeat) Joskus molemmat; toinen tarkkailee ohjelman suorituksessa oloa ja toinen laskennan etenemistä tms.

Ongelmia Jatkuva tarkistussummalaskenta vie aikaa Virhetarkastelut rikkovat helposti ohjelmalogiikan, kun yhtenään joudutaan tarkastelemaan tuliko virheitä Poikkeuskäsittely on kallista Esim. normaali paluu 1/10000 ajasta verrattuna paluuseen poikkeuskäsittelijän kautta

Laitteistovioista Tyypillisesti transientti (toiminto ei onnistu yhdellä kertaa esim. ulkoisten häiriöiden takia mutta laitteessa ei kuitenkaan vikaa) Laitteisto voi sisältää logiikan tämän hoitamiselle Redundanssi vaatii laitteiden monistamista tai suunnittelua siten että yksittäisen signaalin virhe ei aiheuta virhettä Yleensä siis ylimääräistä laitteistoa! Ongelma: Jos 2 laitetta jotka ovat eri mieltä, kumpi oikeassa?

N+1- ja 2Nvaralaitteistomallit N+1: Varalaite on yleensä kylmä joten se pitää lämmittää ; vain 1 varalaite koko järjestelmälle 2N: Varalaite voi suoraan matkia päälaitetta; jokaisella laitteella oma kopionsa

Ohjelmistoviat Ohjelmiston sisäinen redundanssi Vaatii täydellisyyteen saakka vietynä eri menetelmiin perustuvan toteutuksen Sitten äänestys oikeasta tuloksesta Defensiivinen ohjelmointi

Defensiivinen ohjelmointi Laatu yleensä: Lähtökohtainen pyrkimys korkeaan laatuun; ei tilaa ohjelmointivirheille Ohjelmakoodin luettavuus: Toiminta pystytään varmentamaan helpommin esimerkiksi katselmoinnein Oletusten vähyys: Minimoidaan oletukset, joiden varaan ohjelman toiminta rakentuu; esim. varmistetaan että ohjelma toimii kaikilla syötearvoilla HUOM: Defensiivinen ohjelmointi ei välttämättä pure täysin aikakäyttäytymiseen, jossa oletuksia joudutaan väistämättä tekemään!

Vika-analyysi Vikasietoisuus vain etukäteen tunnistettuja vikoja kohtaan Analysoidaan mahdolliset viat Miten vikaan voidaan reagoida Miten viasta voidaan toipua

Esimerkki Sähkönsyöttö katoaa Akut kunnossa Aggrekaatti käynnistyy Aggrekaatti käynnistyy Siirrytään käsiajanottoon OK OK 30min jonka jälkeen käsiajanotto Pieni katkos, Ei ongelmia tuloksissa Tulokset viivästyvät mutta ne saadaan Tuloksia katoaa, kisoja tai sarjoja hylätään

Joitakin esimerkkijärjestelmiä Avaruussukkula 5 tietokonetta (laitteistoviat) 2 valmistajan ohjelmat (ohjelmistoviat) Ariane 5 avaruusraketti Alun perin määrittelyvirhe; raja-arvon ylittyminen johti siihen että laitteiston uskottiin olevan vialla ja se sammutettiin Syöksyi lopulta turvallisesti mereen

Vikaturvallisuuden luokittelua Taso 1: Normaalin toiminnan vikatilanteet Normaalit pikkuviat, esim. muistitilan ylittyminen, levyn täyttyminen Laitteistoviat transientteja Diagnostiikkajärjestelmä; käynnistystestit ainakin muisteille Taso 2: Vikaturvallinen toipuminen Vaatii tyypillisesti uudelleenkäynnistämisen vian havaitsemisen ja siitä toipumisen jälkeen Käyttöjännitteen seuranta, vahtikoira tms.

Luokittelu jatkuu Taso 3: ei-peittävä itsestabiloituva vikasietoisuus Esimerkkitapaus vikaantuneen muistin hallinta: Virhe tunnistetaan pariteettikentästä, ja vikaantunut muisti poistetaan käytöstä. Korjaus pysyvä jos muistin vaihto vaikeaa, muuten laite voi ilmoittaa huoltotarpeesta Muita vastaavia tapauksia ovat esim. ohjausvirheet ja ympäristön yllättävä käytös. Taso 4: peittävä vikasietoisuus Tärkeimät laitteet (tai osa niistä) monistettu Ongelmatilanteessa varayksikkö olemassa ja valmis astumaan remmiin nopeasti Esim. RAID, tietoliikenneyhteyksien monistaminen

Luokittelu jatkuu edelleen Taso 5: Korjaus konetta sammuttamatta Vain pieni parannus edelliseen; myös lopullinen korjaus konetta sammuttamatta Taso 6: Kaikkien laitteiden varmistus Kaikki laitteet monistettu Esim. Suurehko puhelinkeskus (pienemmät tasoja 4 ja 5) Taso 7: Koneiden monistaminen Eli siis kuten 6 mutta joka yksikkö laskee oman tuloksen ja valittu tulos saadaan äänestämällä tms. Käytännössä harvinaisia

Käynnistys ja uudelleenkäynnistys Käynnistys on aina erikoistilanne Oheislaitteet eivät ole käynnissä -> Ohjauselektroniikka saattaa tulkita tiloja miten haluaa (kytkennöistä toki riippuen, hyvällä elektroniikkasuunnittelulla voidaan saada ihmeitä aikaan!) Ulkoisten liittymien tulee toimia turvallisesti; ei satunnaiskäyttäytymistä edes käynnistyksen aikana Yleissääntöä turvalliseen käynnistämiseen ilman laitteistotukea ei ole; ohjelmoija voi toki luoda lisää ongelmia väärillä alustusrutiineilla Ajossa olevan järjestelmän käynnistys (varsinkin esim. jotain aktiivisesti ohjaavan) on muutenkin harkittava huolellisesti vaikkei ohjelmoijien mielenkiinto ja ohjelmointityyli työläitä tarkistuksia suosisikaan

Ohjelmistotyö ohjelman suorituksen aikana Järjestelmä voi olla jatkuvasti käytössä Alasajo ei vaihtoehto, jos toimintaa ei saa keskeyttää Ainoa mahdollisuus toteuttaa ylläpitotoimenpiteen ajon aikana Ääritapauksisssa sekä ohjelmisto- että laitteistotuki tarpeen

Ohjelmiston muuntelu suorituksen aikana Yksinkertainen tapaus: Parametrein tapahtuva ohjaus Esim. joku diagnostiikkaa häiritsevä toiminto kytketään pois päältä diagnostiikan käytön ajaksi Paikko-ohjelmistot (patch) Joku muistialue varataan patcheille Uudelleenkäynnistys/initialisointi jolloin patchit ladataan käyttöön Joskus voidaan toteuttaa komponentti kerrallaan, jolloin saadaan aikaiseksi hienorakeisempi päivitettävyys Joskus koko ohjelmiston uudelleenlataus ja uudelleenkäynnistys DISCLAIMER: Lähtökohtaisesti mitä ilmeisimmin virheherkkääeikämissään nimessäsuositeltava yleinen käytäntö

Laitteistotuesta Laitteisto voi olla rakennettu siten, että se sallii kahden ohjelmiston ajamisen rinnakkaisesti kahdella eri tietokoneella Tällöin ohjelmisto voidaan päivittää tietokoneeseen A, ja päivityksen + toiminnan varmentamisen aikana tietokone B hoitaa toimintaa Jos A vaikuttaa toimivan hyvin, myös B voidaan päivittää Yleensä huomioitu järjestelmätason vaatimuksissa Ongelma: Mitä jos vanhaa versiota ajava B vikaantuu kun A:ta ollaan päivittämässä?

Yhteenveto Vikasietoinen järjestelmä kykenee jatkamaan toimintaansa itsenäisesti myös silloin kun siinä on vikaa Vikaturvallisen järjestelmän suunnittelussa on huomioitu erikseen ettei vikaantumisesta ettei tule vaaraa Vikasietoisuus voi kohdistua vain vikoihin jotka on otettu huomioon osana suunnittelua Ohjelmistojen sisäisen vikasietoisuuden toteutuskeinoina Ohjelman toiminnan tarkkailu Defensiivinen ohjelmointi