A Systematic Exploration on Challenges and Limitations in Middleware Programming for IoT Technology

A Systematic Exploration on Challenges and Limitations in Middleware Programming for IoT Technology

Pedro Taveras (Pontificia Universidad Catolica Madre y Maestra, Santo Domingo, Dominican Republic)
DOI: 10.4018/IJHIoT.2018070101


In a distributed environment, such as IoT, the requirement for constant sensing and actuating from a diverse source of devices increases the complexity and therefore, the operational cost of the software required to keep the system running. The article covers the conceptual and technological aspects, together with a series of previous experiences, findings, and literature that constitute the essence of the body of knowledge related to the issues and challenges for developing a middleware that supports the IoT domain's independent functionality. The article provides the foundation to understand the challenges faced in the development of IoT middleware, focusing on five sensitizing elements, namely, IoT evolution, architecture, security, middleware, and programming. The systematic exploration on limitations for IoT software development revealed the need for programming methods and language abstractions to cope with the demands of IoT scenarios, specifically to deal with the challenges of massive communications, limited infrastructure, and multiplicity of devices.
Article Preview

1. Introduction

Developing IoT based products is a complicated task, regardless of whether the product is an autonomous vehicle, a smart home appliance or a factory automation system. IoT-based products contain thousands, if not millions, of embedded lines of codes. And many of these products and the systems and software that control them are critical from a security point of view. Therefore, programmers must be confident that the software code that controls these devices is 100% accurate and responds in the manner and speed intended. The consequences can be dire if these were not so. Additionally, many of these products must be certified or the product design flow must follow a standard process of industrial certification. Progressively, there is increasing pressure for companies to design IoT enabled devices and products more quickly and economically, while maintaining the highest level of security and performance. However, there are known problems and limitations faced in software development for IoT middleware, using models and tools that are not adequate to achieve the computational performance level demanded by a robust IoT middleware. Considering that developing IoT software does not necessarily means to create an algorithm for an object to be intelligent, but rather to connect it to the network and thus integrate it with the world of information. This integration allows to scale a solution, and thus add more value to the end user, and can even change a business model. The cloud and big data are part of this ecosystem. The cloud and all its services make the IoT possible because of its low costs in relation to its size and the possibility of scaling. On the other hand, big data makes the IoT truly useful in being able to have distributed solutions that can be analyzed comprehensively and thus obtain statistics and probabilities to predict possible situations.

Nonetheless, defining IoT is a fuzzy task. IoT is the result of the integration and evolution of different technological and social fields (IEEE, 2016). Some researchers attempted to address IoT features to find the ground for its definition and facilitate the understanding of the subject. In this sense, Haller (2010) asserted that all the different definitions of the term “Internet of Things” agree that the concept is linked to the integration of the physical world with the digital world of the Internet. The term “thing” in IoT refers to the daily physical objects that we normally handle, equipped with sensors, identifiers, and an Internet Protocol (IP) address. These objects are electronic devices with basic computational features, which are capable of communicating with other objects with similar characteristics, are appointed as “things.” The “things” can access resources from the outside world through a collection of procedures (software pieces) that can be called from anywhere on the Internet. As shown in Figure 1, this mechanism for invocation, a resource called service, is completely independent of the platform used and the programming language in which the system is implemented. These resources may offer a middleware that function as a direct interface to a given endpoint (computer, sensor, device) or network resources that act as proxies, possibly providing additional levels of aggregation and abstraction (Haller, 2010).

Figure 1.

IoT architecture (RoboQ, 2018)

Complete Article List

Search this Journal:
Open Access Articles: Forthcoming
Volume 3: 2 Issues (2019): Forthcoming, Available for Pre-Order
Volume 2: 2 Issues (2018)
Volume 1: 2 Issues (2017)
View Complete Journal Contents Listing