\documentclass[../thesis.tex]{subfiles}

\input{subfilepreamble}

\begin{document}
\input{subfileprefixsmall}
\begin{otherlanguage}{dutch}
\ifSubfilesClassLoaded{\chapter*{Samenvatting}}{\chapter{Samenvatting}}%
\label{chp:samenvatting}
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 voorkomend uit de grote verscheidenheid aan hard- en software karakteristieken tussen de lagen bij aan dit probleem.
Veel van deze computers zijn \emph{randcomputers} die onderdeel zijn van het \IOT{}.
Randcomputers bestaan vaak uit goedkope microcontrollers, ontworpen voor geïntegreerde systemen, en ze interacteren met de buitenwereld door sensoren en actuatoren.
Enerzijds hebben ze weinig geheugen, langzame rekenkernen en trage communicatie.
Anderzijds zijn ze klein en hoogst energie-efficiënt.

Taakgeörienteerd programmeren (TOP) is geschikt om met de uitdagingen van \IOT{} systemen om te gaan.
In TOP zijn abstracte representaties van werk, de taken, de 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.
Van deze beschrijving wordt een computersysteem gegenereerd dat gebruikers begeleidt in het uitvoeren van het werk.
Randcomputers hebben ook baat bij TOP, al is niet eenvoudig om TOP-systemen erop in te zetten.

Deze dissertatie laat zien hoe gehele \IOT{}-systemen georkestreerd kunnen worden met {TOP}.
Gebruik makend van techniek kunnen alle lagen van een \IOT{}-systeem en hun samenwerking uitgedrukt worden in één hoog abstractieniveau, programmeertaal, paradigma en typesysteem.
Allereerst laat ik enkele technieken zien om ingebedde domein-specifieke talen te maken.
Daarna beschrijf ik mTask, een TOP-systeem voor randcomputers ingebed in iTask.
Taken worden tijdens het uitvoeren opgebouwd, 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 dataverwerking.
Alle aspecten van het mTask-systeem worden beschreven: voorbeeldprogramma's, taalontwerp, implementatiedetails, integratie met iTask en de energiezuinige functionaliteit.

Het laagloos programmeren van \IOT{} systemen wordt ook vergeleken met traditioneel gelaagd programmeren.
Laagloos programmeren leidt tot minder code en minder programmeertalen.
Door het gebruik van één paradigma en een systeembreed typesysteem verlaagt laagloos programmeren de semantische wrijving, onderhouds- en robuustheidsproblematiek en moeizame onderlinge samenwerking.
\end{otherlanguage}
\end{document}
