fix small typo in presentation
[msc-thesis1617.git] / intro.intro.tex
1 \subsection{Internet of Things}
2 \Gls{IoT} technology is emerging rapidly. It offers myriads of solutions
3 and is transforming the way people interact with technology.
4
5 The term \gls{IoT} was coined around 1999 to describe \gls{RFID} devices and
6 the communication between them. After a small slumber of the term, it
7 resurfaced recently and has changed definition slightly. In the current day and
8 age, \gls{IoT} encompasses all small devices that communicate with each other
9 and --- most of all --- with the world. It has been estimated that there will
10 be around 30 billion \gls{IoT} devices online in 2020. Even today, \gls{IoT}
11 devices are already in everyone's household in the form of smart electricity
12 meters, smart fridges, smartphones, smart watches. These devices are often
13 equipped with sensors, \gls{GNSS} modules\footnote{e.g.\ the American \gls{GPS}
14 or the Russian \gls{GLONASS}.} and actuators~\cite{da_xu_internet_2014}. With
15 these new technologies information can be tracked accurately using little
16 power, bandwidth and money. Moreover, \gls{IoT} technology is coming into
17 healthcare as well~\cite{riazul_islam_internet_2015}. For example, for a few
18 euros a consumer ready fitness tracker watch can be bought that tracks
19 heartbeat and respiration levels.
20
21 The architecture of \gls{IoT} systems is often divided into layers. A very
22 popular division is the four layer architecture but there are also proponents
23 of a five layer structure. The first layer of the four layer architecture is
24 the sensing layer. This layer contains the actual sensing and acting hardware.
25 In a smart electricity meter, this layer would contains the sensors detecting
26 the current drawn. There are myriads of device available to use in this layer
27 and they can be programmed using a variety of different low level programming
28 languages such as \gls{C++}, \gls{C} but also higher level languages such as
29 \gls{Python} and \gls{LUA}. The second layer of \gls{IoT} is the networking
30 layer and is responsible for connecting the first layer with the outer world.
31 In the electricity meter example, this would be the \textsc{GSM} modem
32 connecting the meter to a server. Existing networking techniques --- such as
33 WiFi and GSM --- are used to convey \gls{IoT} information but there are also
34 specialized communication techniques devised for \gls{IoT} such as ZigBee, LoRa
35 and Bluetooth Low Energy. The third layer is the service layer. This layer is
36 responsible for all the servicing and business rules surrounding the
37 application. It provides \glspl{API} and interfaces to the data. Finally there
38 is the application layer. This final layer provides the applications that the
39 user can use to interact with the \gls{IoT} devices. In the electricity
40 example, this layer would be the app that can be used to monitor the
41 electricity consumption. These tools on the application layer can again be
42 created into a wide variety of programming languages and different paradigms.
43
44 The separation of \gls{IoT} in layers is one of the causes of an integration
45 problem in \gls{IoT}. The different layers are built with different paradigms,
46 programming languages and different architectures which is difficult to
47 connect. Rolling out updates is also complicated since reprogramming
48 microcontrollers in the field is very expensive.
49
50 \subsection{Task Oriented Programming}
51 The \gls{TOP} paradigm and the corresponding \gls{iTasks} implementation offer
52 a high abstraction level for real world workflow
53 tasks~\cite{plasmeijer_itasks:_2007}. These workflow tasks can be described
54 through an \gls{EDSL} hosted in \gls{Clean} and modeled as the basic blocks of
55 the paradigm called \glspl{Task}. The system will generate a multi-user web
56 application from the code. This web service can be accessed through a browser
57 and is used to complete these \glspl{Task}. Familiar workflow patterns like
58 sequential, parallel and conditional \glspl{Task} chaining can be modelled in
59 the language.
60
61 \Gls{iTasks} has proven to be useful in many fields of operation such as
62 incident management~\cite{lijnse_top_2013}. \Gls{iTasks} is highly type driven
63 and depends heavily on generic function for generating function for arbitrarily
64 given types. This results in the programmer having to do very little
65 programming on the details such as user interfaces.