From Verification to Herding: Exploiting Software's Sparsity of Influence

Dit paper stelt een verschuiving voor van dure softwareverificatie naar 'herding', een modelvrije zoekmethode die gebruikmaakt van de 'Sparsity of Influence' en het EZR-algoritme om systemen efficiënt naar doelen te sturen met slechts een fractie van de benodigde steekproeven.

Tim Menzies, Kishan Kumar Ganguly

Gepubliceerd Thu, 12 Ma
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je een enorme, duizenddeurs kast moet vinden in een labyrint van een miljoen deuren. De traditionele manier om dit te doen (wat softwareontwikkelaars nu doen) is om elke deur één voor één te openen, te controleren of er iets achter zit, en te noteren of het veilig is. Dit heet "verificatie". Het is extreem duur, kost de helft van de tijd van een project, en bij moderne, complexe systemen is het vaak onmogelijk om alles te checken.

De auteurs van dit artikel, Tim Menzies en Kishan Ganguly, zeggen: "Stop met die hele kast te doorzoeken. Er is een truc."

Hier is de kern van hun idee, vertaald naar gewoon Nederlands met een paar leuke vergelijkingen:

1. Het geheim: De "Sparsity of Influence" (De Kracht van de Weinigen)

Stel je voor dat die ene duizenddeurs kast in het labyrint niet willekeurig werkt. In werkelijkheid wordt de hele kast bestuurd door slechts 3 of 4 specifieke sleutels. Als je die 3 of 4 sleutels draait, verandert alles. De andere 996 deuren zijn eigenlijk nutteloos om te proberen; ze doen niets of zijn al open.

In software noemen ze dit de "Sparsity of Influence" (Schaarste aan Invloed).

  • De oude gedachte: Software is een chaotisch, willekeurig systeem waar alles met alles samenhangt.
  • De nieuwe gedachte: Software is eigenlijk heel simpel. Het gedrag wordt bepaald door een paar "meestersleutels" (vaak minder dan 10 variabelen). Als je die vindt, heb je de controle.

2. Van "Verificatie" naar "Herding" (Heren)

In plaats van te proberen te bewijzen dat er geen fouten zijn (verificatie), stel je voor om te herden (herding).

  • Verificatie is als een politieagent die elke verdachte in de stad ondervraagt om zeker te weten dat niemand een misdaad heeft begaan.
  • Herding is als een herder met een fluitje. Je hoeft niet elke schap te tellen. Je blaast op je fluitje (je test een paar inputs) en de schapen (het systeem) lopen vanzelf naar de wei waar je ze wilt hebben (de "Heaven"-staat: geen bugs, snelle snelheid).

Je zoekt niet naar waarom het werkt (dat is te ingewikkeld), maar gewoon naar welke knoppen je moet indrukken om het goed te laten werken.

3. De oplossing: EZR (De Slimme Zoeker)

De auteurs hebben een tool bedacht die EZR heet. Je kunt het zien als een slimme, snelle zoekrobot die niet naait over de theorie, maar gewoon proberen en kijken.

Hoe werkt EZR?

  1. Probeer een paar keer: Het systeem probeert willekeurig 4 of 8 instellingen.
  2. Kijk wat er gebeurt: Welke instellingen gaven het beste resultaat? Welke gaven een ramp?
  3. Zoek het verschil: EZR kijkt naar de "beste" en de "slechtste" resultaten en vraagt zich af: "Wat is het enige verschil tussen deze twee?"
  4. Focus: Zodra het ziet dat één specifieke variabele (bijvoorbeeld "geheugenlimiet") het verschil maakt tussen succes en mislukking, focust het zich daarop.
  5. Herhaal: Het doet dit steeds sneller en slimmer.

Het is alsof je in het donker een schakelaar zoekt die het licht aan doet. Je hoeft niet alle muren te aftasten; je voelt gewoon welke schakelaar werkt.

4. Het verrassende resultaat: Weinig moeite, veel resultaat

Het meest verbazingwekkende is hoeveel data ze nodig hebben.

  • Traditionele methoden proberen miljoenen combinaties te testen.
  • EZR heeft vaak maar 32 proeven nodig om 90% van het beste mogelijke resultaat te bereiken.

De analogie:
Stel je voor dat je een perfecte pizza wilt bakken.

  • De oude manier: Je test elke mogelijke combinatie van meel, water, gist, temperatuur en tijd die er bestaat. Dit duurt eeuwen.
  • De EZR-methode: Je maakt 32 pizza's. Je merkt dat als je de oven op 200 graden zet en de gist 10 minuten laat rijzen, het altijd goed is. De rest van de ingrediënten maakt niet zoveel uit. Je hebt je "meestersleutels" gevonden met slechts 32 pogingen.

Waarom werkt dit?

De auteurs zeggen dat dit werkt omdat software door mensen is gemaakt. Mensen hebben een beperkt brein. We kunnen niet 1000 dingen tegelijk in de gaten houden. Daarom bouwen we software in kleine, beheersbare stukjes. Hierdoor is de "echte" complexiteit veel kleiner dan het lijkt.

Conclusie

De boodschap van het artikel is simpel:
Stop met het bouwen van enorme, dure modellen om software te testen. Dat is als proberen een olifant te tekenen door elke haar op zijn huid te meten.
In plaats daarvan: Kijk gewoon naar de data. Probeer een paar dingen, zoek naar de kleine groep knoppen die het meeste doen, en stuur het systeem daarheen.

Met slechts een handvol tests (32 stuks) kun je vaak al 90% van het perfecte resultaat halen. Dat is sneller, goedkoper en werkt beter voor de complexe software van vandaag.