Sikkerhetskritisk programvare
Siden 80-tallet har det vært en rask økning i bruk av programvare i sikkerhetskritiske systemer. Systemer som før var elektriske, mekaniske eller elektromekaniske har nå gjerne en eller flere prosessorer som er kritiske for funksjonen. ”Fly by wire” er et eksempel fra flyindustrien, og ”drive by wire” blir nå introdusert i serieproduserte biler. Andre eksempler på sikkerhetskritiske systemer som benytter programvare er nødavstengningssystemer på offshoreinstallasjoner, autopiloter i fly, ABS-bremser og signalanlegg for jernbane.
Standarder
I parallell med den tekniske utviklingen er det blitt utarbeidet standarder for programvareutvikling. Standardene er normalt retningsgivende og beskriver målene for de forskjellige livssykluser en programvare gjennomgår. Standardene beskriver også de aktiviteter og de hensyn som må tas for å oppnå målene, samt de bevis som må samles for å dokumentere at målene er oppnådd. Omfattende testing er ikke regnet som tilstrekkelig for å oppnå programvare med tilstrekkelig kvalitet. Å teste alle mulige kombinasjoner vil ofte være praktisk umulig. En strukturert utviklingsprosess for programvaren er derfor nødvendig for å utvikle systemer med ønsket pålitelighet.
Sertifisering
Ulike bransjer benytter ulike standarder. Flyindustrien benytter for eksempel RTCA/DO178B som er en ren programvarestandard. Offshoreindustri benytter IEC 61508 som er en standard for systemutvikling, programvare inkludert. Eventuell sertifisering av utstyr innebærer blant annet en verifikasjon av at den aktuelle standard er fulgt.
Klassifisering av programvareFelles for mange standarder er at de deler programvare eller systemer inn i forskjellige sikkerhetsnivåer. I flyindustrien (DO178B) benyttes en inndeling i nivå A-E, hvor A er mest kritisk, og E er ukritisk. Feil i nivå A programvare vil forårsake eller bidra til en katastrofal feiltilstand for flyet (tap av menneskeliv er sannsynlig utfall). Programvarefeil på nivå B vil føre til en hasardiøs feiltilstand for flyet (flygeren vil normalt kunne korrigere en slik tilstand). Offshoreindustrien har en annen tilnærming. I IEC 61508 opererer man med SIL-nivå 1 til , hvor SIL-4 er strengest. For de ulike SIL-nivåer angis feilrater som systemet må holde seg innenfor.
Kravene i de ulike trinn i utviklingsprosessen avhenger av klassifiseringen, og de totale utviklingskostnadene har gjerne en eksponentiell sammenheng med sikkerhetsnivået. Det er derfor fornuftig å utvikle delsystemer som har ulike sikkerhetskrav.
LivssyklusLivsløpet for sikkerhetskritisk programvare er lik annen programvare. Typiske livssykluser er:
- Planleggingsprosess
- Utviklingsprosess
- Kravfase
- Analyse og designfase
- Implementasjonsfase
- Integrasjon med hardware
- Test og verifikasjon - Konfigurassjonsstyring
- Kvalitetssikring (QA)
- Sertifisering
Kontakt:
Gorm Idar Johansen