\ifSubfilesClassLoaded{\chapter*{Summary}}{\chapter{Summary}}%
\label{chp:summary}%
\glsresetall%
-Programming \gls{IOT} systems is complex since they are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking in nature.
+The development of reliable software for the \gls{IOT} is difficult because \gls{IOT} systems are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking in nature.
The complexity is increased further by semantic friction that arises through different hardware and software characteristics between tiers.
Many computers that operate in \gls{IOT} systems are \emph{edge devices} that interact with the environment using sensors and actuators.
-Edge devices often use low-cost microcontrollers designed for embedded applications.
+Edge devices are often powered by low-cost microcontrollers designed for embedded applications.
They have little memory, unhurried processors, and are slow in communication but are also small and energy efficient.
-%Hence they require additional care.
\Gls{TOP} can cope with the challenges of \gls{IOT} programming.
In \gls{TOP}, the main building blocks are tasks, an abstract representation of work.
Programming edge devices benefits from \gls{TOP} as well, but running such a system within the limitations of resource-constrained microcontrollers is not straightforward.
This dissertation demonstrates how to include edge devices in \gls{TOP} systems using \glspl{DSL}.
-With these techniques, all tiers and their interoperation of an \gls{IOT} system is specified in a single high-level source, language, paradigm, high abstraction level, and type system.
+With these techniques, all tiers and their interoperation of an \gls{IOT} system are specified in a single high-level source, language, paradigm, high abstraction level, and type system.
First, I present advanced \gls{DSL} embedding techniques.
Then \gls{MTASK} is shown, a \gls{TOP} \gls{DSL} for \gls{IOT} edge devices, embedded in \gls{ITASK}.
Tasks are constructed and compiled at run time in order to allow tasks to be tailored to the current work requirements.
Finally, tierless \gls{IOT} programming is compared to traditional tiered programming.
In tierless programming frameworks, the size of the code and the number of required programming languages is reduced significantly.
-By using a single paradigm and a system-wide type system, tierless programming reduces problems such semantic friction; maintainability and robustness issues; and interoperation safety.
+By using a single paradigm and a system-wide type system, tierless programming reduces problems such as semantic friction; maintainability and robustness issues; and interoperation safety.
%This is a summary of 350--400 words.
\end{document}