Kvalitetssäkring av säkerhetskritiska mjukvarusystem

I säkerhetskritiska system kan ett fel leda till att människor skadas, att miljön tar skada eller att stora värden går förlorade. Därför ställs särskilda krav på hur programvaran tas fram, testas och dokumenteras. Kraven finns samlade i branschstandarder som bygger på samma grundidé: ju större risk, desto strängare krav.

Standarderna du stöter på

BranschStandardNivåer
Generell funktionssäkerhetIEC 61508SIL 1–4
FordonISO 26262ASIL A–D
FlygDO-178CDAL A–E
Medicinteknisk programvaraIEC 62304Klass A–C
ProcessindustriIEC 61511SIL 1–4

Vad betyder SIL?

SIL, Safety Integrity Level, anger hur pålitlig en säkerhetsfunktion måste vara. I IEC 61508 kopplas varje nivå till ett intervall för sannolikheten för farligt fel. För funktioner som sällan aktiveras används medelsannolikheten för fel vid efterfrågan (PFDavg), och för funktioner som är aktiva hela tiden används frekvensen farliga fel per timme (PFH). SIL 4 är den strängaste nivån.

// vilken SIL-nivå räcker det till?

Förenklad beräkning för en enkanalig funktion (1oo1): PFDavg ≈ λDU × T / 2 och PFH ≈ λDU. Gränserna följer IEC 61508. En verklig SIL-verifiering kräver även arkitekturkrav, diagnostik, systematisk förmåga och common cause-analys.

Programvara kan inte få en felintensitet

Hårdvara går sönder slumpmässigt och kan beskrivas med felintensiteter. Programvara gör det inte – den gör samma fel varje gång samma förutsättningar uppstår. Därför hanteras programvara genom krav på process: spårbarhet från krav till test, granskningar, kodstandarder, statisk analys och testtäckning som blir strängare ju högre nivån är. I DO-178C krävs till exempel strukturell täckning ända ned på villkorsnivå (MC/DC) för den högsta nivån.

Kvalitetssäkring i praktiken

  • Spårbarhet – varje krav ska kunna följas till design, kod och test, och åt andra hållet.
  • Oberoende granskning – på högre nivåer ska verifieringen göras av någon annan än den som skrev koden.
  • Verktygskvalificering – kompilatorer och testverktyg som påverkar resultatet måste också gå att lita på.
  • Konfigurationsstyrning – det ska alltid gå att veta exakt vilken version som testats och levererats.

Grunderna i testning hittar du i guiden om mjukvarutestning.