Geen enkele bug is meer veilig voor de tools van Vector Fabrics uit Zaltbommel. Het bedrijf gebruikt dynamische softwareverificatie om fouten in miljoenen regels op te sporen, die er bij de gebruikelijke tests en statische controles doorheen glippen. Na bijna tien jaar wil het bedrijf met zijn nieuwste product Pareon Verify wereldwijd gaan oogsten.
Vector Fabrics is een Nederlands bedrijf dat in 2007 is opgericht door drie experts op het gebied van programmeren voor multicore-systemen: Martijn Rutten (ceo), Jos van Eijndhoven (cto) en Paul Stravers (chief architect). Ze kennen elkaar van hun werk bij de halfgeleiderfabrikant Philips Semiconductors, dat in 2006 – van Philips afgesplitst – verder gaat als NXP Semiconductors. Slimme jongens op het gebied van chips, multicore programming, de architectuur van embedded software en softwareanalysetools. Alle drie hebben ze diverse patenten op hun naam staan.
Rutten, Van Eijndhoven en Stravers delen een visie op de ontwikkeling van embedded software: zij constateren dat de groei ervan bijzonder hard gaat, en zeker straks in een wereld waarin alles met alles verbonden kan worden. Die groei geldt ook voor de schaal en complexiteit van de softwarecode. Ontwikkelaars bouwen steeds vaker multicore/multi-threaded applicaties met parallel draaiende systemen in de kern van de software. Zat er in 1980 nog gemiddeld vijftig regels code in ingebedde software, tegenwoordig gaat het om tienduizenden tot miljoenen regels code.
Runtime analysis
Maar niet alleen het programmeren wordt ingewikkelder, ook het aantal fouten neemt toe. Volgens de statistiek zit er in elke duizend regels aan software een bug. Een door hen graag gegeven voorbeeld: de software van de Joint Strike Fighter omvat 24 miljoen regels code. Potentieel kan elke bug een JSF in onze achtertuin doen belanden. En wat te denken van zelfrijdende auto’s: die bevatten zelfs nog veel meer software (tot wel honderd miljoen regels code) die vanwege de veiligheid uiteraard foutloos moet werken. Zo niet, dan zullen deze auto’s geen succes worden.
Het trio wil softwareontwikkelaars helpen met tools om programmeercode te analyseren en te verifiëren. Met als uiteindelijk doel om software foutloos, veilig en snel te laten werken. In hun ogen moeten die analyses en testen niet achteraf worden uitgevoerd maar tijdens het ontwikkelen van applicaties. Dynamische analyses, ook wel runtime analysis genoemd, is dan ook het uitgangspunt, waarbij ook fouten worden ontdekt die normaliter niet worden gevonden. Daar zit de markt op te wachten, volgens het drietal.
Geldschieters
Rutten, Van Eijndhoven en Stravers nemen in 2007 de stap en starten in Eindhoven met een snel aangeschafte Ikea-vergadertafel voor het kantoor aan de Kanaaldijk met Vector Fabrics. Ze weten financiële steun te krijgen van ‘angel investors’ uit Silicon Valley en twee technologiefondsen van de overheid: Point-One Starter Fund en Technostars. ‘Serial entrepreneur’ Mike Beunder neemt de eerste vijf jaar de rol van algemeen directeur op zich. Met de tools die Vector Fabrics levert kunnen ontwikkelaars softwarefouten voor hun klanten voorkomen en de time-to-market van hun producten verkorten.
Het bedrijf blijft niet lang onopgemerkt. In 2011 stapt Newion Investments als geldschieter in, waarbij de bestaande financiers hun inleg ook nog eens verhogen. Het extra kapitaal gebruikt Vector Fabrics om zijn marketing- en verkoopactiviteiten uit te breiden en een kantoor in Silicon Valley te openen.
Het softwarebedrijf zegt met zijn tools in te spelen op de trend van fabrikanten uit onder meer de auto-industrie, consumentenelektronica en medische wereld, om steeds meer processoren in hun apparaten te stoppen. Deze processoren moeten de rekenkracht van de apparaten vergroten, waardoor ze veel sneller worden, meer kunnen en minder energie verbruiken. Bekende voorbeelden zijn de quad- en octacore processors, dus met vier en acht processors, in de nieuwste smartphones.
Multicore
In de praktijk ontstaan echter bij de aansturing van de extra processoren twee soorten problemen. Ten eerste wordt de programmeercode van de software een stuk ingewikkelder, waardoor meer fouten optreden. Ten tweede blijken apparaten, bijvoorbeeld smartphones, nog steeds hoofdzakelijk op één processor hun werk te doen. ‘De bestaande software is eigenlijk niet geschikt voor multicore processors. Fabrikanten worstelen er enorm mee het werk daadwerkelijk te verdelen over de meerdere processoren en dat goed parallel te laten lopen’, meent algemeen directeur Martijn Rutten.
Rutten beweert dat Vector Fabrics deze techniek van multicore programmeren wel beheerst. De tools van het bedrijf vertellen programmeurs hoe de software moet worden aangepast om de rekenkernen parallel te kunnen laten werken. Dezelfde technologie moet voorkomen dat kritische fouten ontstaan in de duizenden regels programmeercode in de software en dat er daardoor bijvoorbeeld bij bedrijven terugroepacties nodig zijn, vorig jaar nog bij onder andere autofabrikant Toyota die alleen al in Nederland ruim twintigduizend auto’s terugriep om ze van een software-update bij de dealer te kunnen voorzien. Door een bug konden er te grote spanningswisselingen in de inverter plaatsvinden; mogelijk dat auto’s hierdoor tot stilstand zouden kunnen komen. Een nachtmerrie, omdat zo’n actie miljoenen kost en reputatieschade oplevert.
Over de bühne krijgen
In februari 2015 krijgt Vector Fabrics opnieuw een financiële injectie. De investeringsmaatschappij Participatiemaatschappij Oost Nederland (PPM Oost) stapt als nieuwe aandeelhouder in. Tegelijk investeren de bestaande aandeelhouders Newion Investments en Point-One Innovation Fonds (de fondsmanager van het eerder genoemde Starter Fund) opnieuw in het bedrijf uit Eindhoven. Met het extra kapitaal wil Vector Fabrics internationaal groeien.
Voor Rutten en zijn collega’s is deze hernieuwde steun ook een teken om te gaan oogsten. Vector Fabrics wil het extra geld voor een deel gebruiken om het bedrijf scherper voor het voetlicht te brengen. De tijd is gekomen om potentiële klanten te overtuigen dat de analysetools daadwerkelijk zo goed werken als het bedrijf beweert, stelt de algemeen directeur. ‘Ons probleem is het standaard probleem van disruptieve innovatie: het bestaat nog niet bij anderen, is heel technisch en bedrijven kunnen niet geloven dat het echt doet wat we zeggen. Softwarebedrijven hebben jarenlang gepoogd om hun bestaande software te optimaliseren voor de multicore chips. Steeds weer was de conclusie dat er geen oplossing is voor dit complexe probleem. Vector Fabrics laat zien dat dit nu wel kan. Maar het kost veel tijd en geld om dat over de bühne te krijgen bij de grote fabrikanten.’
Het bedrijf verhuist in de loop van 2015 naar Zaltbommel, waar inmiddels ruim twintig man werken. Een mooie vestingstad aan de Waal, maar niet echt een locatie met een bloeiende technologische scene. Vector Fabrics wil echter dichter op de Randstad zitten omdat het zoekt naar knappe koppen op informaticagebied. Die vind je meer in Utrecht en Amsterdam dan in Eindhoven.
Dynamische analyses
In het najaar van 2015 introduceert het bedrijf het nieuwe paradepaardje Pareon Verify, een tool om kritieke softwarefouten en securitybugs in een vroeg stadium te detecteren. De tool vindt fouten waarbij het normaal gesproken weken tijd kost om ze te vinden en te verhelpen. Pareon Verify analyseert aan de hand van een intelligent algoritme hoe de software zich gedraagt wanneer deze wordt uitgevoerd. Een digitaal forensisch sporenonderzoek, als het ware. Hierdoor krijgen ontwikkelaars werkelijk zicht op de data en de stuurmechanismen binnen hun software. Bijkomend voordeel is dat er ook geen ‘false positives’ meer optreden: meldingen van mogelijke bugs die uiteindelijk vals alarm blijken te zijn en waar andere analysetools last van hebben, aldus Vector Fabrics.
Bovendien, merkt Rutten op, wordt het voor programmeurs makkelijker om in te schatten hoe lang het ontwikkelwerk nog duurt. ‘Vaak slaan ze er een slag naar. Dan roepen ze: ‘het duurt nog twee weken’ tegen de manager, die dan boos wordt vanwege de vertraging omdat er tijdens de integratie en systeemtesten opnieuw softwarefouten zijn ontdekt. Die manager moet zijn klant dan het slechte nieuws gaan vertellen.’ Zeker in zwaar concurrerende markten voor bijvoorbeeld netwerkapparatuur of smart-tv’s is uitstel van productintroducties een commerciële ramp en moeten lange vertragingen door moeilijk te vinden bugs voorkomen worden.
Heisenbugs
Bij een statische analyse in een softwareverificatieproces gaat het doorgaans om het ontdekken van syntax-fouten. Die ontstaan bijvoorbeeld wanneer een programmeur niet volgens bepaalde coding-standaarden heeft gewerkt. Bij een dynamische analyse vinden verificaties plaats terwijl het programma in een labomgeving of test-setup draait. De analyse kijkt daarmee naar het werkelijke gedrag van het programma en niet slechts naar de syntax of de structuur. De tool Pareon Verify vindt hiermee kritische bugs in code die reeds met allerlei tests en tools voor statische analyse gecontroleerd is.
Het gaat om bugs die met de huidige middelen erg moeilijk te vinden zijn, zoals een bufferoverflow (dan is een programma op paden buiten de grens van gereserveerd geheugen bezig geweest), het gebruik van variabelen die nog niet bekend zijn (wat tot datacorruptie en crashes leidt), data races (multiple threads die toegang hebben tot dezelfde data zonder goede synchronisatie), use-after-free (verwijzen naar geheugen dat niet meer bestaat) en memory leaks (gebruikt geheugen dat niet is vrijgegeven waardoor een systeem vertraagt of uitvalt).
Een belangrijk type softwarefouten zijn de zogenaamde ‘Heisenbugs’, genoemd naar het onzekerheidsprincipe van de Duitse natuurkundige Heisenberg, omdat deze soms wel, soms niet optreden. Bijvoorbeeld een bug die met een timingprobleem te maken heeft. Wanneer de programmeur deze bug probeert op te sporen in een debugger, dan verandert de timing en lijkt de bug te verdwijnen. Door het ongrijpbare karakter kan het veel tijd kosten eer zo’n bug gereproduceerd kan worden. Vervolgens kan het nog veel langer duren om de uiteindelijke oorzaak te vinden. Volgens Rutten geeft Pareon Verify voor elke Heisenbug exact aan waar de oorzaak ligt. Dan weet de programmeur ook direct hoe deze fout opgelost moet worden.
Libraries plakken
Een stokpaardje van Rutten cum suis is de matige kwaliteit van de (embedded) software. Althans, de kwaliteit van software is wel omhoog gegaan in de afgelopen jaren, maar omdat de groei van software exponentieel omhoog is gegaan, is het effectief slechter geworden. Vandaag de dag programmeren betekent libraries tegen elkaar plakken met veel ‘copy-paste’ van code. Bij traditionele computertalen zoals C en Fortran keken programmeurs nog echt naar de betekenis van wat ze schreven, vindt Rutten. ‘Bijkomend probleem is dat programmeurs van embedded software vaak ook nog eens geen informatici zijn, maar machinebouwers, elektrotechnici, natuurkundigen of medische ingenieurs. Die weten alles van een waferstepper, injectiemotor of röntgenapparaat, maar weinig van hoe de software eigenlijk op de onderliggende processor draait, met alle gevolgen van dien.’
Hij benadrukt het toenemend belang van kwalitatief goede code door de groei van software in embedded systemen waar een fout grote gevolgen kan hebben. In een auto of vliegtuig is dat evident. Maar denk ook aan internet of things (IoT) waar het gevolg van een fout in bijvoorbeeld een slimme thermostaat kan zijn dat alle leidingen kapotvriezen. Rutten merkt dat de druk om iets snel te testen toeneemt omdat bedrijven niet te lang kunnen wachten met marktintroducties. Daarbij worden de releasecycli steeds korter: softwareupdates zijn er tegenwoordig bijna dagelijks. Hoe zorg je dan dat de kwaliteit in orde is? Rutten toont zich pleitbezorger van een keuringsdienst van software: een soort Kema die de software op kwaliteit test voordat die officieel door klanten in gebruik mag worden genomen. Misschien iets voor de it-industrie of de overheid om dit op te pikken.
Ambities
Maar tegelijkertijd liggen hier natuurlijk kansen voor bedrijven als Vector Fabrics met hun dynamische analysetools. Rutten verwacht dat de behoefte om te investeren in kwaliteitstooling toeneemt. Hij spreekt van een kantelpunt: de markt is klaar om dynamische softwareverificatie op te pakken. De financiële belangen zijn ook groot: het aanpassen van software nadat het is opgeleverd is stukken duurder dan gedurende het ontwikkelproces en levert vertraging op. ‘Het gaat meestal om bedrijven met hoge kwaliteitseisen, zoals uit de medische sector, auto-industrie en defensie. Die beschikken al over een testingtool die meer doet dan alleen een statische analyse. Dat zijn echter toch vrij beperkte hulpmiddelen die als een laatste reddingspoging bij een softwareprobleem worden ingezet. Ze draaien niet continu mee in de main setup met rapportages en al, zoals onze software.’
De dynamische analyse in Pareon Verify is complementair aan de statische analysetools van leveranciers als Synopsys (dat Coverity overnam). Daarnaast zijn er met name een aantal open source-oplossingen, maar Rutten slaat deze producten minder hoog aan. De lat ligt hoog: de ambitie is om de grootste te worden op de internationale markt van softwaretesting. Er lopen inmiddels al lijntjes, naast Nederland en de Verenigde Staten, naar Zuid-Korea, Japan (de auto-industrie) en Duitsland.
Dit artikel is ook verschenen in Computable Magazine, jaargang 49, nummer 3, maart 2016.
Vector en Fabrics
Het trio oprichters heeft een achtergrond in het bouwen van speciale ‘vector processors’, die parallellisme uitbuiten op de schaal van bijvoorbeeld een enkele videolijn. De naam ‘fabric’ (stof/weefsel) wordt in de computerwereld metaforisch gebruikt om een onderliggende, sterk verbonden structuur aan te duiden. Met programmeerbare chips als eerst de FPGA’s (Field Programmable Gate Arrays) en later de standaard multicore processoren zijn oneindig veel mogelijkheden voor parallellisme mogelijk. Vandaar de bedrijfsnaam Vector Fabrics.
Pareon en Verify
In de naam van de tool Pareon Verify is naast ‘verifiëren’ gekozen voor een verwijzing naar ‘parallellisme’. Dat verwijst weer naar het dna van Vector Fabrics: het multi-threaded/multicore programmeren en het voorkomen van gerelateerde Heisenbugs, zoals data races en deadlocks.
Pareltjes
In deze rubriek worden bedrijven geportretteerd die een opvallende rol hebben gespeeld of nog spelen in de Nederlandse ict-wereld.
Eerdere afleveringen:
– Centraal Beheer Automatisering:‘Laat onze kaboutertjes ’s nachts het werk voor u doen’
– Exact: Van studentenkamer naar de cloud
– Unit4: Maakt zich op voor de wereldtop
– Afas Software: Familiebedrijf met een roeping
– Minox Software: Administratieve software met hart en ziel
– TomTom: Waar een wil is, is een weg
– Appmachine: Nederlandse app-bouwer met koninklijk vleugje
– Centric: Allrounder in het centrum van de Nederlandse ICT
– Chipsoft: Dertig jaar zorgen voor automatisering in de zorg
– Keylane: Legacy effent weg in Europa
– Pantheon Automatisering: ERP-software van vaderlandse bodem