Betrouwbaar als een lichtknopje

Software zo betrouwbaar als een lichtknopje, is dat mogelijk? Wanneer is software betrouwbaar? En hoe betrouwbaar moet software zijn?

Betrouwbaar als een lichtknopje
Photo by Patrick Tomasso / Unsplash

Je drukt thuis op het lichtknopje en het licht gaat aan. Druk je er nog een keer op, dan gaat het licht weer uit. Gaat het licht niet aan? Dan is eerder de lamp kapot, dan dat de knop niet werkt. We gaan er simpelweg van uit ‘dat het werkt.’ En minstens even belangrijk: is de schakelaar wel kapot, dan is die eenvoudig te repareren. Wij vinden dat software als een lichtknopje moet zijn. Het moet het doen. En als de software niet werkt, dan moet die eenvoudig te herstellen zijn.

Ook voor jouw organisatie, wil je software die betrouwbaar als een lichtknopje is. Daarom bouwen wij bij Semantica robuuste software. Software die betrouwbaar is en ‘tegen een stootje’ kan. Applicaties die, als toch een keer fout gaat, eenvoudig te herstellen zijn. Voor ons is betrouwbare en robuuste software meer dan beschikbare software. Maar wanneer is software betrouwbaar? Daarop willen we een antwoord geven. En als we de kosten tegenover de baten zetten, dan moeten wij ook de vraag stellen: “Hoe betrouwbaar moet software zijn?

Vijf soorten betrouwbaarheid

Wij delen betrouwbaarheid in vijf verschillende onderdelen op. Maar het ene onderdeel is niet belangrijker is dan het andere onderdeel. Juist de balans tussen de vijf onderdelen bepaalt hoe betrouwbaar jouw programma is. Je kan niet zeggen: “mijn lichtknopje moet altijd beschikbaar zijn, alleen vind ik robuustheid niet belangrijk.” Wanneer je zulke eisen aan jouw schakelaar stelt, dan krijg je lichtknopje dat 100% van de tijd werkt en breekt zodra je op de knop drukt. Niet echt een ideale schakelaar.

Uiteindelijk willen we allemaal software die altijd online is, nooit stuk gaat en waar niemand naar om hoeft te kijken. Helaas is dat een doel waar we naar streven, maar nooit helemaal halen. Bij Semantica is één van onze taken het balanceren van de soorten betrouwbaarheid. Moeten we juist veel investeren in preventie zodat er geen verkeerde data het systeem in komt. Of moet er juist worden ingezet op herstelbaarheid? Zodat jouw systeem na bijvoorbeeld een stroomstoring of update snel online is en dat de kans op dataverlies kleiner wordt. Kortom, ons doel is zorgen voor de juiste betrouwbaarheid heeft.

Beschikbaarheid

Beschikbaarheid gaat over ‘uptime’: hoeveel minuten van een uur, week, maand of jaar is een computerprogramma online. Meer concreet gaat beschikbaarheid over de vraag: is jouw applicatie beschikbaar als je het nodig hebt? Een bank probeert zijn betaalsysteem zo veel mogelijk online te laten zijn. Maar een kantoorapplicatie hoeft misschien alleen tussen 7 uur ‘s ochtends en 9 uur ‘s avonds online te zijn: de tijden dat er mensen waarschijnlijk werken.

Stabiliteit

Stabiliteit is voor iedereen herkenbaar: zijn er geen crashes? Maar crashes zijn maar één manier waarop een programma laat zien dat iets fout gaat. Vergelijk het met een vaatwasmachine. Normaal maakt die jouw servies goed schoon. Maar als jouw vaatwasser continu draait, dan hoop vuil zich in de machine op. Het gevolg: je vaat wordt minder schoon. Maak de machine van binnen schoon en hij werkt weer als vanouds. Hetzelfde kan gebeuren met software: hoe langer de applicatie draait hoe meer ‘foutjes’ blijven hangen tot er uiteindelijk ongewenst gedrag ontstaat. Stabiliteit gaat dus over de vraag: hoe lang kan een programma of systeem werken zonder dat er fouten optreden?

Weerbaarheid

Waar stabiliteit gaat over onverwachte dingen in de applicatie, gaat weerbaarheid over de manier waarop een programma omgaat met problemen buiten het programma. Bijvoorbeeld als een database niet werkt en gegevens niet beschikbaar zijn. Of wanneer een externe website niet of verkeerd reageert. Samengevat is weerbaarheid het omgaan met onverwachte externe situaties zonder dat de gebruiker het merkt, of op zijn minst er zo min mogelijk last van heeft.

Robuustheid

Robuustheid ligt in het verlengde van weerbaarheid en zegt iets over afwijkingen van ‘het normale’. Wij mensen kunnen heel goed overweg met ‘bijzondere situaties’. Een Nederlands huisnummer is meestal een cijfer, maar als wij Grote Weg 1-B zien, dan weten wij dat 1B een huisnummer is. Voor een computer is iedere uitzondering een nieuwe situatie, terwijl wij een variant zien. Wanneer software niet op een ‘uitzondering’ voorbereid is, dan kan een programma zelfs verkeerde dingen doen. Robuuste software kan tegen bijzondere data ‘afwijkingen’ zonder ‘kapot’ te gaan.

Herstelbaarheid

Tenslotte hebben we herstelbaarheid. Want als het een keer toch mis gaat, dan moet de boel zo snel mogelijke weer werken. Zodat je website weer snel in de lucht is. Je de facturen weer kan versturen. Of een productieproces weer hervat kan worden. Maar herstelbaarheid gaat ook over het behoud van data. Is na een incident je data behouden en kan je verder waar je gebleven was? Of is er een (veel) data verloren en moet je helemaal opnieuw beginnen?

Betrouwbaarheid als uitingsvorm

Wanneer de vijf delen van betrouwbaarheid in samenkomen en in balans zijn, dan is dat op drie verschillende manieren te zien. Dit noemen we de uitingsvormen van betrouwbaarheid. Net zoals de vijf onderdelen in balans moeten zijn, geldt dat ook voor de drie uitingsvormen. Een schakelaar elke dag werkt, maar die onderdeel is van een systeem zonder elektrische bedrading, daar heb je niets aan, in dat geval is de betrouwbaarheid over delen niet in orde.

Betrouwbaarheid als uitingsvorm

Betrouwbaar over (onder)delen

Het resultaat dat je krijgt wanneer je met een programma werkt, is het resultaat van samenwerkende software onderdelen. De schakelaar die steeds genoemd wordt, die doet op zichzelf niets. Het knopje is onderdeel van een systeem: bedrading, fitting, lamp enzovoort. In een betrouwbare lichtbron werken al die delen ‘samen’ zodat jij licht hebt. Deze samenwerking noemen we betrouwbaarheid over de (onder)delen.

Hetzelfde geldt voor software. Software is meestal opgedeeld kleinere ‘componenten’. Dit kan je bijvoorbeeld zien in verschillende bestanden die geïnstalleerd worden. Achter die componenten zitten duizenden (soms zelfs miljoenen) regels code. Wanneer die regel code goed samenwerken in de stukjes en de verschillende stukken vervolgens samenwerken in de applicatie, dan hebben we een betrouwbare applicatie over de delen.

Betrouwbaarheid over tijd

Ze zeggen dat tijd alle wonden heelt. Maar in de computerwereld is tijd vaak de grootste vijand van betrouwbaarheid. Voor de meeste applicaties geldt: hoe langer het programma draait, hoe groter de kans dat er een keer iets fout gaat. Betrouwbaarheid over tijd gaat daarom over herhaalbaarheid en consistentie: over ‘elke keer hetzelfde doen’. Als je vandaag dezelfde actie uitvoert als gisteren, of vorige week, of misschien zelfs vorig jaar, dan moet de uitkomst van vandaag hetzelfde zijn als de vorige keren.

Betrouwbaarheid over gebruikers

Uiteindelijk brengt dit ons tot de mens: de gebruiker van de software. Dit noemen we betrouwbaarheid over gebruikers, of wat in de statistiek ‘inter-rater reliability’ genoemd wordt. Zoals de benaming al aangeeft gaat het over meerdere (inter) beoordelaars (rater) ofwel een methode waarbij meerdere mensen een waardering geven. Hoe meer mensen een beoordeling geven en hoe duidelijker de voorkeur in de beoordeling is, hoe betrouwbaarder de uiteindelijke waardering.

Het lichtknopje is daarvan weer het perfecte voorbeeld. Schakelaars werken vrijwel altijd. Jouw schakelaar werkt vandaag, gisteren werkte die ook en sommige knoppen werken al dertig of langer. De schakelaar is vervolgens onderdeel van een systeem van bedrading, fitting, lamp enzovoort. In een betrouwbare lichtbron werken al die delen ‘samen’ om ervoor te zorgen dat jij licht hebt. En tenslotte zijn er de ‘gebruikers’ die allemaal kunnen bevestigen dat jouw lamp licht geeft.

Gameboy Pocket with Tetris
Photo by Ravi Palwe / Unsplash

Misschien toch maar betrouwbaar als een Gameboy?

Uiteindelijk is betrouwbaarheid nog veel breder dan waar we in deze blog op in kunnen gaan. Betrouwbaarheid is niet één ding, maar opgebouwd uit vele kleine onderdelen. Honderd procent betrouwbaarheid is een illusie, zelfs met onbeperkte budgetten. De betrouwbaarheid van het lichtknopje is iets moois om naar te streven: een doel op de horizon dat we nooit helemaal zullen krijgen. Als we concessies moeten doen, en lichtknop-betrouwbaarheid niet haalbaar is, dan is de oude Gameboy misschien een betere vergelijking.

Want wat je ook van de Gameboy vindt, welke nadelen je ook ziet: het is een apparaat dat ontzettend betrouwbaar is, maar waarin ook veel concessies zitten. De Gameboy is inmiddels meer dan dertig jaar oud. Maar stop er een spel en batterijen in en de kans is heel groot dat de machine nog steeds werkt. Veel betrouwbaarder kan je het niet krijgen.

Hoe betrouwbaar de Gameboy ook is: er zijn duidelijk concessies gedaan. Zijn de batterijen op? Dan kan je niet spelen. Een spel opslaan is meestal niet mogelijk, maar niet ongebruikelijk voor de tijd. En spelen in de schemering is al helemaal niet mogelijk. Maar doen deze concessies af aan het eindresultaat? Nee, het doel: ‘draagbaar en betaalbaar gamen waar je wilt’ was meer dan bereikt. De Gameboy werd een hit, op een set batterijen kon je twintig uur spelen en een val of 30 jaar stof kunnen de werking niet stoppen.

Voor jou betekent ons uitgangspunt “betrouwbaar als een Gameboy” dat wij samen met jou kijken wat software voor jou betrouwbaar maakt. Hoe graag wij ook 'lichtknop-betrouwbare' software bouwen, uiteindelijk willen wij dat jij software krijgt die jou helpt en waar voor zijn geld geeft. Daarom stellen wij kritische en soms misschien zelfs vervelende vragen als: welke eisen zijn het meest belangrijk? Want pas als dat soort vragen bekend zijn, kunnen wij ervoor zorgen dat jij de juiste betrouwbaarheid krijgt. Dat je niet betaalt voor betrouwbaarheid die jij niet direct nodig hebt en je uiteindelijk de meeste betrouwbare software krijgt voor jouw doel.