2016 11-15 - nvrb - software betrouwbaarheid

86
Software Betrouwbaarheid Theorie en praktijk [email protected] http://www.slideshare.net/Jaap_van_Ekris/

Transcript of 2016 11-15 - nvrb - software betrouwbaarheid

Page 1: 2016 11-15 - nvrb - software betrouwbaarheid

Software Betrouwbaarheid

Theorie en praktijk

[email protected] http://www.slideshare.net/Jaap_van_Ekris/

Page 2: 2016 11-15 - nvrb - software betrouwbaarheid

Mijn achtergrond

Page 3: 2016 11-15 - nvrb - software betrouwbaarheid

Agenda

• Wat is software?

• Wat is softwarefalen?

• Zijn al die systemen wel “well designed”?

• Voorwaardescheppende aanpak

– DO 178B

– IEC 61508 familie

• Kwantificerende aanpakken

– Reliability Growth Modelling

– TOPAAS

Page 4: 2016 11-15 - nvrb - software betrouwbaarheid

Mijn persoonlijke frustratie…

Software faalt

Constructief/

Electromech.

falen

Systeem faalt

in missie

Page 5: 2016 11-15 - nvrb - software betrouwbaarheid

Software sluipt binnen…

• Mechanical control

• Electrisch Relais (±1860)

• PLC (±1968)

Page 6: 2016 11-15 - nvrb - software betrouwbaarheid

Software is de trend

• Soms technisch noodzakelijk

• Klanten willen het:

– Flexibeler

– Lichter

– Kleiner

– Enabler voor proces verandering

Page 7: 2016 11-15 - nvrb - software betrouwbaarheid

Is dit de essentie van software?

Page 8: 2016 11-15 - nvrb - software betrouwbaarheid

Of is dit de essentie van software?

Page 9: 2016 11-15 - nvrb - software betrouwbaarheid

Een RAMS-blik

• Software is een manier om functies te realiseren

• Software zonder functie kan niet falen!

Page 10: 2016 11-15 - nvrb - software betrouwbaarheid

Bugs zijn van alle tijden

Page 11: 2016 11-15 - nvrb - software betrouwbaarheid

Software is fragiel…

• USS Yorktown (CG-48)

• Testomgeving “Smart Ship” program

• Invoer van een “0” leidt tot totale uitval

– voortstuwing

– wapensystemen

Page 12: 2016 11-15 - nvrb - software betrouwbaarheid

Falen is weigeren te werken

• “Het systeem hangt”

• Meest genoemde faalvorm in risico analyses

• Komt in de praktijk minder voor dan men vermoed

• Is vaak de minst desastreuze faalvorm

Page 13: 2016 11-15 - nvrb - software betrouwbaarheid

Onjuist/onterecht handelen is ook falen!

• Vaak wordt vergeten dat software zich actief tegen je kan keren

• Is daardoor ook het meest destructief

• Deze fout komt vrij veel voor

Page 14: 2016 11-15 - nvrb - software betrouwbaarheid

Systematisch falen?

Software is deterministisch en

gedraagt zich identiek, ongeacht de machine

Alan Turing (1936)

Page 15: 2016 11-15 - nvrb - software betrouwbaarheid

Determinisme heeft gevolgen

• Redundante Software met zelfde inputs zal op dezelfde manier de fout ingaan, dus β=1

• Alleen multiprogramming leidt tot onafhankelijk falen

Page 16: 2016 11-15 - nvrb - software betrouwbaarheid

Een wake-up call

• 10.000 uur full-time getest

– verschillende teams

– verschillende hardware

– Niets gezien

• Ruim 42.000 maal exact dezelfde test herhaald

– 42.000 keer goed

– Maar zeer significant aantal niet!

Page 17: 2016 11-15 - nvrb - software betrouwbaarheid

The impact of a mandelbug

1,E-05

1,E-04

1,E-03

1,E-02

1,E-01

1,E+00

4.35 4.36 4.37

Ch

ance

of

Failu

re (

Loga

rith

mic

Sca

le)

Platform Version

Known unreliability Function M versus Version

Page 18: 2016 11-15 - nvrb - software betrouwbaarheid

Foutsoorten

• Bohrbug: iets gaat op een eenvoudige (deterministische) manier niet of verkeerd

• Mandelbug: een fout waarvan de condities zo complex zijn dat hij zich op een chaotische of niet-deterministische manier manifesteert

Page 19: 2016 11-15 - nvrb - software betrouwbaarheid

Een broedplaats voor Mandelbugs

Page 20: 2016 11-15 - nvrb - software betrouwbaarheid

De onderliggende oorzaak

Omgevingstemperatuur > 20°C

CPU neemt gas terug om

oververhitting te voorkomen

Buffer loopt regelmatig vol en wordt

leeggegooid om permanent achterlopen

te voorkomen

Meer dan 300ms metingen weg

Kritieke noodsituatie gemist

Page 21: 2016 11-15 - nvrb - software betrouwbaarheid

En is dit softwarefalen?

• Altimeter gaf verkeerde hoogte aan

• Autothrottle ging automatisch op “retard” modus

• Softwarefout of bedieningsfout?

Page 22: 2016 11-15 - nvrb - software betrouwbaarheid

Gelijke software, gelijke kansen?

• Weigeren te sluiten tgv softwarefalen?

• Onterecht sluiten tgv softwarefalen?

Page 23: 2016 11-15 - nvrb - software betrouwbaarheid

Één stuk software kent vele faalkansen

Functie Weigeren Onterecht

Prim. Beveiliging Q=10-4 λ=10-7/uur

Sec. Beveiliging Q=5*10-3 λ=10-8/uur

Tert. Beveiliging Q=10-3 λ=10-8/uur

Page 24: 2016 11-15 - nvrb - software betrouwbaarheid

Faalkans

Is eigenlijk een Restkans, gegeven een systeem dat:

• “Fit for purpose” is

• goed ontworpen is

• Goed onderhouden wordt

Page 25: 2016 11-15 - nvrb - software betrouwbaarheid

Simplicity is prerequisite for reliability

Edsger W. Dijkstra (1975)

Page 26: 2016 11-15 - nvrb - software betrouwbaarheid

Is het überhaupt maakbaar?

• Baggageafhandeling – 9 KM transportband

– 35 KM rails

– 4000 karretjes

– 4000 KM netwerkkabel

– 92 PLC’s

– 300 servers

• Na 10 jaar “verbeteren” volledig afgeschreven

Page 27: 2016 11-15 - nvrb - software betrouwbaarheid

Het tart alle wetenschap…

• High-level besturing is in principe NP-compleet

– “Reliable Delivery”requirement

– Zeer dynamische omgeving

• Wachtrijtheorie op een ongekende schaal

• Proces bevat veel 2e orde (en hoger!) regellussen

Page 28: 2016 11-15 - nvrb - software betrouwbaarheid

2e orde regellussen komen meer voor

• Overdrukinstallaties voor het MTK

• Verwarmingsinstallaties

• Schutfunctie bij watermanagement

Page 29: 2016 11-15 - nvrb - software betrouwbaarheid

Goed ontworpen systemen?

• Trackrecord van de industrie is niet zo goed

• Industrie staat stijf van de autodidacten

• Onderschatting complexiteit is aan de orde van de dag

Page 30: 2016 11-15 - nvrb - software betrouwbaarheid

Bepaalde kennis schaalt niet

Page 31: 2016 11-15 - nvrb - software betrouwbaarheid

Software-ontwerp is een opeenstapeling

• Applicatie

• Platform / Blocks

• Operating System

• Firmware

Page 32: 2016 11-15 - nvrb - software betrouwbaarheid

En het gaat zeker niet altijd goed…

• Complexiteit wordt routinematig onderschat

• Men heeft geen begrip van het systeemgedrag

• Systeemintegratie wordt niet serieus opgepakt

• Men is te makkelijk met wijzigen in productie

Page 33: 2016 11-15 - nvrb - software betrouwbaarheid

Ook bij serieuze projecten…

Page 34: 2016 11-15 - nvrb - software betrouwbaarheid

Hergebruik is riskant!

Page 35: 2016 11-15 - nvrb - software betrouwbaarheid

Zelfs een bewezen ontwerp

• Ariane 5

• Hergebruik groot deel van flight management

• Ander vermogen had impact op niet vastgelegde aannames

Page 36: 2016 11-15 - nvrb - software betrouwbaarheid

Systeem ontwerp is een vak!

• Grotere systemen vereist veel ervaring en inzicht

• Veel traditionele partijen hebben dit niet in huis!

Page 37: 2016 11-15 - nvrb - software betrouwbaarheid

Er is altijd een restrisico

Page 38: 2016 11-15 - nvrb - software betrouwbaarheid

Restrisico…

• Capers-Jones:

– minimaal 1 fout per 10 KLoc

– Gemiddeld 4 fouten per KLoc

• Industrie concensus is dat software nooit beter zal zijn dan

– 10-5 on demand

– 10-9 per uur

Page 39: 2016 11-15 - nvrb - software betrouwbaarheid

10KLoc in perspectief…

61.000 KLoC

39.300 KLoC

24.700 KLoC

20.200 KLoC

15.000 KLoC = 6000 manjaar

11.800 KLoC

9.900 KLoC

4.500 KLoC

2.400 KLoC

2.300 KLoC

400 KLoC

40 KLoC

10 KLoC

M 10 M 20 M 30 M 40 M 50 M 60 M

Facebook

Windows 7

F-35 Control Systems

Linux Kernel 4.2

Linux Kernel 3.6

Android OS

Firefox Browser

DVD Player

Linux kernel 2.4.2

Windows 3.1

Space Shuttle

Average iPhone app

Unix V1.0

Page 40: 2016 11-15 - nvrb - software betrouwbaarheid

Een paradox

Page 41: 2016 11-15 - nvrb - software betrouwbaarheid

Het effect van proces-verbetering

CMM Level Defect Removal Efficiency

1 85%

2 89%

3 91%

4 93%

5 95%

Page 42: 2016 11-15 - nvrb - software betrouwbaarheid

DO-178B/C en DO-278

• Gebruikt in Avionics (DO-178 B/C) en Air Traffic Control (DO-278)

• Geen brede industrieconcensus bij opzet

• Wel geaccepteerd door Amerikaanse en Europeese toezichthouders

Page 43: 2016 11-15 - nvrb - software betrouwbaarheid

DO-178B, nivo’s

Level Impact Target Reliability (INDICATIEF)

A Catestrofaal 10-9/vlieguur

B Gevaarlijk 10-7/vlieguur

C Majeur probleem 10-5/vlieguur

D Klein 10-3/vlieguur

E Geen effect

Page 44: 2016 11-15 - nvrb - software betrouwbaarheid

DO-178B, maatregelen

Level # Maatregelen Waarvan Verificatie

D 28 8

C 57 32

B 65 39

A 66 40

Page 45: 2016 11-15 - nvrb - software betrouwbaarheid

Waar wordt fouten geintroduceerd?

Page 46: 2016 11-15 - nvrb - software betrouwbaarheid

Falen ≠ Fouten

• Je hebt een keten nodig om van een fout naar falen te komen

• Niet elke fout leidt tot falen

• Niet elke fout is veiligheidskritisch

• In Fail-To-Safe omgeving helpen fouten vaak met het halen van de safety case

Er is natuurlijk vaak wel een correlatie…

Page 47: 2016 11-15 - nvrb - software betrouwbaarheid

Oordeel over DO-178B

• Statistiek: 1,4 veiligheidskritische fout/KLoC, wat gevoelsmatig niet spectaculair goed is

• In praktijk erg gericht op aantoonbaarheid naar toezichthouder (FAA of EASA)

• Erg test/verificatiegedreven, met name gericht op systematisch falen

Page 48: 2016 11-15 - nvrb - software betrouwbaarheid

Softwaretesten is ineffectief

• Het volledig testen van een stateless 64-bit systeem kost 2 eeuwen

• Hoe ga je vaststellen of het gedrag ook correct is?

• Complexere fouten vindt je er niet mee…

Page 49: 2016 11-15 - nvrb - software betrouwbaarheid

De waarde van testen

Testing can be used to show the presence of bugs, but never to

show their absence! Edsger W. Dijkstra (1969)

Page 50: 2016 11-15 - nvrb - software betrouwbaarheid

Mijn persoonlijke gevoel bij een testgedreven aanpak

Page 51: 2016 11-15 - nvrb - software betrouwbaarheid

ISO/IEC-61508

• Beantwoord de vraag “Wat is de industrie baseline?” voor veiligheidskritische functies

• Beantwoord defacto de vraag “wanneer ben je verwijtbaar nalatig?”

Page 52: 2016 11-15 - nvrb - software betrouwbaarheid

Afstammelingen ISO/IEC-61508

• IEC-61511 (Proces Industrie)

• IEC-61513 (Nucleair)

• IEC-62061 en ISO-13849 (Machines)

• IEC-62279 / CENELEC (Rail)

• ISO-26262 (Automotive)

Page 53: 2016 11-15 - nvrb - software betrouwbaarheid

Basisgedachte

• Beschrijft een basisproces

– Oa. Risico-analyse

• Beschrijft de SIL-levels

• Beschrijft de (aanvullende) maatregelen die je moet nemen

Page 54: 2016 11-15 - nvrb - software betrouwbaarheid

IEC 61508: SIL levels

Page 55: 2016 11-15 - nvrb - software betrouwbaarheid

Aantal maatregelen per level

SIL Level Verplicht Afgeraden

SIL-1 16

SIL-2 27 2

SIL-3 57 2

SIL-4 61* 3

* Waaronder: “Gij zult een formeel wiskundig correctheidsbewijs leveren”

Page 56: 2016 11-15 - nvrb - software betrouwbaarheid

Formele methoden...

• Op wiskunde gebaseerde ontwerpmethodiek

• Specificaties moeten in formele taal

• Het ontwerp is tevens wiskundig bewijs dat de applicatie specificatie invult

Page 57: 2016 11-15 - nvrb - software betrouwbaarheid

IEC 61508: A process for safety critical functions

Page 58: 2016 11-15 - nvrb - software betrouwbaarheid

Code Generation

Page 59: 2016 11-15 - nvrb - software betrouwbaarheid

Veel voorkomend misverstanden

• We gebruiken SIL-3 PLC’s dus…

• We gebruiken SIL-3 bouwstenen dus…

• We gebruiken een Sil-3 oplossing dus…

maar SIL-3 stelt ook eisen aan

specificeren, integreren en testen!

Page 60: 2016 11-15 - nvrb - software betrouwbaarheid

De waarde van de IEC61508

• Het is een (intuitief) zinnige aanpak

• De maatregelen, zeker op de hogere SIL-nivo’s, voegen echt waarde toe maar zijn soms ook echt pittig

• De mensen die op dit nivo kunnen werken zijn zeer hoogwaardig maar ook zeer schaars

• Aantal partijen in Nederland dat SIL-4 serieus kan aanbieden is op een hand te tellen

Page 61: 2016 11-15 - nvrb - software betrouwbaarheid

Omkeren relatie SIL en target reliability?

Page 62: 2016 11-15 - nvrb - software betrouwbaarheid

Het kookboek alleen is dus niet voldoende

Page 63: 2016 11-15 - nvrb - software betrouwbaarheid

Een echt voorbeeld

Page 64: 2016 11-15 - nvrb - software betrouwbaarheid

Hoe kan zoiets nu misgaan?

Page 65: 2016 11-15 - nvrb - software betrouwbaarheid

Commitment en diepgang mensen

• Romeinen zetten architecten onder de boog bij weghalen steigers

• Boeing en Airbus laten lead-engineers meevliegen bij de eerste testvluchten

• Dijkstra zette zijn “rekenmeisjes” aan de overzijde van tewaterlatingen

Page 66: 2016 11-15 - nvrb - software betrouwbaarheid

Gebrek aan wederkerigheid is een issue

• Hoe overtuig je stakeholders van kwaliteit een systeem?

• Waar richt je als eerste je pijlen op in je (RAMS-) verbetercyclus?

Page 67: 2016 11-15 - nvrb - software betrouwbaarheid

Monte Carlo Testing

• Test het systeem op basis van “Random” input

• Verifieren of het antwoord klopt is uitdagend, analyse waarom het fout gaat nog meer

• Kan bij complexere systemen erg lang duren

Page 68: 2016 11-15 - nvrb - software betrouwbaarheid

Reliability Growth Modelling

• Gebruikt historische data over fouten om toekomstige betrouwbaarheid te voorspellen

• Er zijn meerdere modellen, maar allemaal asymptotisch

Page 69: 2016 11-15 - nvrb - software betrouwbaarheid

2 primaire smaken

Time

Concave Model

Rel

iab

lity

Time

S - Model

Rel

iab

ility

Page 70: 2016 11-15 - nvrb - software betrouwbaarheid

Voorwaarden voor gebruik

• Testen moet met toekomstig gebruik te relateren zijn

• Vereist een minimum aantal fouten om toe te kunnen passen

• Registratie van fouten moet zeer nauwkeurig plaatsvinden

Page 71: 2016 11-15 - nvrb - software betrouwbaarheid

Methodische problemen met RGM

• Fouten, MTBF en failure on demand worden door vele modellen als gerelateerd gezien

• Meeste modellen maken geen onderscheid tussen verschillende functies van software

• Aanname van gestage “afname van fouten” matcht niet met praktijk

• Aanname van “uniforme foutdistributie” klopt in praktijk niet

Page 72: 2016 11-15 - nvrb - software betrouwbaarheid

Praktische problemen met RGM

• Modelselectie is erg uitdagend (er zijn wel hulpmiddelen voor)

• Bijhouden registratie is een serieuze belasting

• High reliable systems zijn vaak te goed om het minimum aantal fouten te halen

• Vraag is of een afnemer een hoog aantal fouten accepteert!

Page 73: 2016 11-15 - nvrb - software betrouwbaarheid

Waarde van RGM

• Het is kwalitatief een van de beste praktische benaderingen

• De grote lijn klopt het vaak wel

• Wetenschap is geinteresseerd

– Verhelpt methodische fouten

– Maakt het praktischer toepasbaar

Page 74: 2016 11-15 - nvrb - software betrouwbaarheid

TOPAAS

Task Oriented Probability of Abnormalities Analysis for Software

• Centraal staat dus de functie-uitvoering door software

• Bepaalt de restkans dat een goed ontworpen systeem zich random misdraagt (Mandelbugs, of goed verstopte Bohrbugs)

• Vereist wat van de foutenboom (moet functie van software ook benoemen)

Page 75: 2016 11-15 - nvrb - software betrouwbaarheid

Bayesiaanse kansopvatting

• Als je geen kans kunt bepalen, dan vraag je een expert

• Het vertrouwen dat de expert in het systeem heeft, is dan de faalkans

Page 76: 2016 11-15 - nvrb - software betrouwbaarheid

Een tweetrapsraket

Werkelijke Faalkans

Expert afschatting

2 TOPAAS

afschatting

• Gebruikt een expertpanel om tot een intersubjectieve afschatting te komen van de faalkans

• Gebruikt vragenlijst om het expertpanel te simuleren

Page 77: 2016 11-15 - nvrb - software betrouwbaarheid

Decompositie van taakuitvoering

• Moet onderscheidbaar zijn en zichtbaar gedrag vertonen

• Zo abstract mogelijk

• Alleen splitsen als belangrijke parameters anders worden:

– Ontwikkelteam

– Gebruiksintensiteit

Page 78: 2016 11-15 - nvrb - software betrouwbaarheid

Basisopzet TOPAAS

• Basisfaalkans is 1

• Bij toevoegen kennis verbeterd deze faalkans

Page 79: 2016 11-15 - nvrb - software betrouwbaarheid

Typische Resultaten

• Voor een normale ontwikkelaar 10-4 is realistisch:

– Systems Engineering aanpak

– JSTD-016 goed ingezet

– Testen grondig doen

• Voor een goede ontwikkelaar is 10-5 realistisch:

– IEC 61508, SIL-4

– Goed testen van primaire taakuitvoering

Page 80: 2016 11-15 - nvrb - software betrouwbaarheid

Hoe betrouwbaar is TOPAAS zelf?

Werkelijke Faalkans

Expert afschatting

2 TOPAAS

afschatting

R² = 0,9363

0

1

2

3

4

5

0 1 2 3 4 5 Expert Opinion (10-x)

Expert Opinion vs. Model Estimate

Mo

del

Ou

tco

me

(10

-y)

Wetenschappelijke studies geven

aan dat in het algemeen experts

conservatief zijn. Maar:

• Waren deze experts dat ook?

• Hoe erg conservatief dan?

Page 81: 2016 11-15 - nvrb - software betrouwbaarheid

Praktische problemen met TOPAAS

• Wordt soms zeer slordig toegepast

• Soms is berekenen op basis van velddata gewoon makkelijker en betrouwbaarder

• Men schiet regelmatig door met de “modules”

• Hoe kom je van Q naar een λ?

Page 82: 2016 11-15 - nvrb - software betrouwbaarheid

Waarde van TOPAAS

• Levert altijd betrouwbaarheidsgetal op

• Wetenschap is geinteresseerd

– Meerdere vergelijkbare modellen

– TOPAAS is de enige die ook wordt toegepast

Page 83: 2016 11-15 - nvrb - software betrouwbaarheid

Conclusies TOPAAS

• Minst slechte alternatief als:

– RGM niets oplevert

– Monte Carlo testen te duur wordt

• Vereist kennis over de opbouw van het systeem en de totstandkoming ervan

Page 84: 2016 11-15 - nvrb - software betrouwbaarheid

Conclusies (1)

• Software is enorm fragiel

• Softwarebetrouwbaarheid is erg moeilijk te maken

– Systemen simpel/bouwbaar houden is essentieel

– Volgen IEC 61xxx is eigenlijk gewoon een vereiste

– Mensen maken het verschil

Page 85: 2016 11-15 - nvrb - software betrouwbaarheid

Conclusies (2)

• Software betrouwbaarheid is moeilijk te kwantificeren

– Vereist echt aandacht voor “goed ontwerp”

– Methodes zijn er wel

• Kwantificeringsmethode moet per geval bekeken worden – Als er genoeg representatieve velddata is, gewoon gebruiken

– Als RGM toepasbaar is, gewoon doen

– Hou rekening met het toe moeten passen van TOPAAS

Page 86: 2016 11-15 - nvrb - software betrouwbaarheid

Vragen?