Het ontwikkelen van betrouwbare software voor internet of things (IoT)-systemen is moeilijk omdat ze dynamisch, interactief, gedistribueerd, samenwerkend, meerlaags en multitasking zijn. Ook draagt de semantische wrijving vanwege de grote verscheidenheid aan hard- en softwarekarakteristieken tussen de lagen bij aan deze complexiteit. Veel computers in IoT-systemen zijn randcomputers die interacteren met de buitenwereld door sensoren en actuatoren. Randcomputers bestaan vaak uit goedkope microcontrollers, ontworpen voor geïntegreerde systemen. Ze hebben weinig geheugen, langzame processoren en trage communicatie, maar ze zijn ook klein en energiezuinig.
Taakgeoriënteerd programmeren (TOP) is geschikt om met de uitdagingen van IoT-systemen om te gaan. In TOP zijn taken, abstracte representaties van werk, de belangrijkste bouwstenen. Tijdens het uitvoeren van een taak kan de huidige waarde geobserveerd worden en hierop kunnen andere taken reageren. Door taken te combineren of te transformeren kunnen samenwerkingsvormen uitgedrukt worden. TOP is ook nuttig voor het programmeren van randcomputers, al is het niet eenvoudig om zo'n systeem te laten draaien binnen de beperkingen van microcontrollers met beperkte middelen.
Deze dissertatie laat zien hoe randcomputers kunnen worden opgenomen in TOP-systemen met behulp van domeinspecifieke talen (DSL's). Met deze technieken kunnen alle lagen van een IoT-systeem en de samenwerking daarvan uitgedrukt worden in één hoog abstractieniveau, programmeertaal, paradigma en typesysteem. Allereerst laat ik enkele technieken zien om ingebedde DSL's te maken. Daarna beschrijf ik mTask, een TOP-systeem voor randcomputers ingebed in iTask. Taken worden tijdens het uitvoeren opgebouwd en samengesteld, waardoor ze afgestemd kunnen worden op de huidige werkeisen. Vervolgens worden ze naar het apparaat gestuurd ter interpretatie. Na eenmalig uitgerust te worden met het domeinspecifieke besturingssysteem is een randcomputer geschikt voor mTask. Dit stuurprogramma voert de ontvangen taken energiezuinig uit en automatiseert tevens alle communicatie en gegevensuitwisseling. Alle aspecten van het mTask-systeem worden beschreven: voorbeeldprogramma’s, taalontwerp, implementatiedetails, integratie met iTask en energiezuinige hardwarefunctionaliteit zoals sluimerstand.
Tot slot vergelijk ik laagloos IoT-programmeren met traditioneel gelaagd programmeren. Bij laagloos programmeerkaders is de code aanzienlijk compacter en zijn er een stuk minder programmeertalen nodig. Door het gebruik van één paradigma en een systeembreed typesysteem verlaagt laagloos programmeren de semantische wrijving, onderhouds- en robuustheidsproblematiek, en moeizame onderlinge samenwerking.
Mart Lubbers (1990) behaalde zijn master Computing Science in 2017. Na werkzaam te zijn geweest als docent aan de Nederlandse Defensie Academie (NLDA) begon hij aan een promotietraject aan de Radboud Universiteit onder begeleiding van Rinus Plasmeijer, Pieter Koopman en Jan-Martin Jansen (NLDA).