Efficient Model-Driven Prototyping for Edge Analytics: Comparison
Please note this is a comparison between Version 1 by Hafiz ahmad awais chaudhary and Version 2 by Peter Tang.

Software development cycles in the context of Internet of Things (IoT) applications require the orchestration of different technological layers, and involve complex technical challenges. The engineering team needs to become experts in these technologies and time delays are inherent due to the cross-integration process because they face steep learning curves in several technologies, which leads to cost issues, and often to a resulting product that is prone to bugs.

  • model driven development
  • internet of things
  • digital thread platform
  • domain specific languages
  • low-code/no-code

1. Introduction

Modern IoT architectures enable efficient communication among interconnected infrastructures of sensors, devices, and systems, with the intention of offering innovative solutions for diverse applications [1]. In recent years, there has been a significant increase in the adoption of various IoT platforms and there is a growing demand for these platforms, devices and solutions from different vendors to seamlessly work together. This need not only leads to interoperability challenges in the ecosystem, but also makes the software development process more complex. The complexity across the different technological layers that compose a system requires deep and cross-functional technical expertise and integration knowledge for each of the involved heterogeneous system. In this context, IoT middleware platforms become an integral part of the IoT ecosystem that provides a common interface between the different sensors, computing devices, and actuators. These platforms address different kinds of requirements and often push project managers to perform an exhaustive analysis before choosing and implementing a specific type of architecture. From the point of view of application developers, the lack of compatibility between IoT platforms introduces an extra step towards tailoring their application to support platform-specific APIs. Considering the specifications of the application under development, the analysis may concentrate on various aspects such as interoperability, scalability, security and privacy, spontaneous interaction, or an unfixed structure.
The widespread availability of technologies such as IoT, Cloud Computing, and communication protocols (e.g., Bluetooth, WiFi, LoRaWAN, etc.) has revolutionised the IT industry by enabling decentralisation of not only data locality but also computing resources. This allows improvement in large-scale data management in real-time and leads towards a high degree of innovation and simplicity in development workflows. Low-code development platforms are increasingly being adopted by the Information technology (IT) industry and enabling rapid development of complex workflows and software solutions by following a model-like paradigm, which focuses on composition behaviours rather than boilerplate code. In a worldwide survey, 96% of the IT professionals agreed that low-code development in comparison with traditional development is much faster [2][7] and expected to generate approximately 65 billion U.S. dollars revenue globally by 2027 within the low-code platforms market [3][8], which also demonstrates the potential and capabilities of this paradigm.

2. General Purpose Low-Code Platforms

Many industrial solutions support the visual composition of the orchestrations, which is more intuitive than manual coding. Several tools are available in the industry to work in a low-code fashion, e.g., Tines [4][9], an Irish-based company providing automatised solutions for security prevention; PTC ThingWorx [5][10], an all-in-one IIoT platform developed by PTC providing a pre-built solution for several requirements in the context of manufacturing; AWS IoT [6][11], a popular and scalable solution to handle up to billions of devices in the IoT context, allowing a cross-integration of capabilities with different services such as ML, analytics for Data-Driven decisions, etc; Microsoft Azure IoT Suite, another solution from Microsoft delivering integration with several services, not only with ML and analytics, but also adding security layers and connecting, monitoring and controlling in the cloud up to billions of devices as well [7][12] or H2o.ai [8][13], a complete no-code platform to deliver AI/ML solutions in the cloud targeting non-technical people to be able to complete working pipelines. Many of these tools either support control-flow or dataflow models, but not both, and do not have formal models incorporated. Several use cases also have appeared in academia, to work in different domains to rapidly fulfil these requirements in a low-code way. For instance, [9][14] proposes an AI engineering platform for smart IoT services, enabling data analytics and ML parts to run partially or completely on the IoT edge devices. In [10][15], the authors establish an IoT-enabled application with early analysis of performance characteristics, such as timing and performance properties. This approach has a direct application in identifying issues with performance attributes, decreasing development time/effort, and delivering better quality without budget overshooting. The application itself is being developed using a lightweight interface tool framework, developed with the Eclipse Modeling Framework (EMF) [11][16].

3. Model-Driven Development

Model-driven development is a type of low-code development approach that focuses on the use of models to automate the software development process. In model-driven approaches, code generators are typically utilised to generate code automatically from higher-level specifications [12][17]. An interesting case for MDD IoT simulators can be found in [13][18], where new projects require a highly specialised setup (devices, fog/cloud/analytic nodes, hardware and software) and, together with the development cost, could be quite expensive. The AToMPM tool [14][19] is a web-based open-source framework to design DSL environments, perform model transformations and manipulate and manage models [15][20]. It also has an API for binding Python language. Component-based development [16][17][21,22] is another similar paradigm where independently deployable components are developed and then integrated into the bigger ecosystem. The modeling in component-based development, referred to as component modeling, defines the standards for the composition, modeling and deployment mechanism for the implementations of components. The authors of [18][19][23,24] used UML annotations for component models while [20][25] developed their own modeling languages. The PROGRESS project [20][25] defines the component models in the domain of embedded systems and consists of two modeling layers to handle different kinds of operation, i.e., ProSys models the systems and subsystems while ProSave captures the data transfer and control flow between the components. The functional behaviours of components are defined using REMES [21][26], a hierarchical modeling language. Domain-Specific Languages in context of low-code platforms typically include pre-built components, templates, visual interfaces for designing and arranging application components and tools for integrating with external data sources and systems. Some prominent platforms that use DSLs are OutSystems [22][27] for enterprise applications, Mendix [23][28] for mobile applications, Appian [24][29] for business processes, Cinco [25][30] for metamodeling and [26][31] for big data workflows. To make this more cost-efficient, simulation environments can help to model and obtain more useful insights about the architecture and focus on high-level concepts. Moreover, these types of architectures require programming skills to create the simulation environments. In order to make it accessible to everyone and enable the design of complex IoT simulation environments without writing code, a graphical and model-to-text approach was developed. Furthermore, these model-based languages often have a lower barrier to entry since they utilise graphical symbols and diagrams instead of code, which reduces the overall learning curve for domain experts. The study [27][32] compared various language workbenches with Cinco-family products and concluded that the LDE approach through DSLs overcomes the challenge of an extremely steep learning curve associated with development with traditional approaches.

4. DIME

DIME [28][5] is an Eclipse-based Integrated Modeling Environment that provides graphical DSLs for the development and deployment of prototype-driven web applications. DIME follows the One Thing Approach (OTA) [29][33] and the Model-Driven Design (XMDD) paradigm [30][34] for modeling and development. It provides a family of model types that are programming Language DSLs in order to tailor the environment to specific application domains. The different models are the following:
  • Data Model: To describe the database layer.
  • Process Model: This model type defines the business logic of the application. It uses control and data flow together to give a detailed view of the described logic.
  • UI Model: A WYSIWYG editor for the web user interface.
The collections of components that can appear in the process models can be extended with Java code through a Native Service Independent Building Blocks (SIBs) mechanism, enabling the definition of new SIB palettes. SIB palettes are typically domain-specific and grow over time due to incremental extensions. These native DSLs are collections of ready-to-use functionalities, as described later in Section 3.3 for theour Stable Storage Facility (SSF) use case.

5. Pyrus

Pyrus [31][6] is a web-based graphical modeling platform specialised for Data Analytics that supports pipelines in a data-flow-driven fashion. The Python functions are implemented, stored and executed in Jupyter and displayed as a family of reusable DSLs in Pyrus. On execution, Pyrus performs automated model-to-code transformation on designed pipelines and executes them on Jupyter instance.

6. Node-RED

Node-RED [32][35] is a JavaScript-based, low-code platform, widely used for IoT projects. Originally developed by IBM, it is now also fully open source. The Node-RED modeling style is based on Flows, which are simple control workflows that can contain multiple operations (see Figure 1). Each operation is started by a trigger node, and successor nodes are linked via flow edges. If a node has multiple successors, they are executed in parallel. Node-RED flows are directly deployable from the flow editor in a single-click fashion. The dataflow is not visually presented and is implemented through Java Script Object Notation (JSON) messages passed along the control flow edges.
Figure 1.
Example of a flow in Node Red.
Node-RED comes with a default set of available blocks and functions, but can easily be extended by adding modules to the Node-RED instances. As Node-RED has a very active community, there are many modules available, which can be installed directly through the UI interface. There is no notion of a data layer or database for the created flows, but there are modules to interact with files and databases. There is no out-of-the-box UI element for the flows, but several UI modules are available. The Node-RED Dashboard is the de facto standard tool to create simple interactive UIs (see Figure 2). In the Node-RED Dashboard, the UI elements are introduced via node inflows and arranged via different node properties. There is no WYSIWYG editor for the UI, and the flow developer must specify the position of the element within a fixed page, tab, or row-like structure. This limits the available ways to position elements, but it creates very consistent UIs.
Figure 2.
Example of a UI definition in Node-RED. (
a
) Simple UI Model in Node-RED. (
b
) The Node-RED Dashboard created by the UI Model (* indicates a required field).

7. Embedded Hardware Platforms

A plethora of low-power embedded computing and wireless sensor platforms have been developed over the past two decades by academic researchers, commercial enterprises and the Maker community. These platforms range from single board computers such as RaspberryPi, Beaglebone, and BananaPi to low-power, small-scale sensor nodes such as Rene, Mica, MicaZ, TelosB, IRIS, SunSPOT, the latter developed to study wireless sensor networks and their applications. The Maker community is served by several companies that develop and supply low-power embedded systems boards and platforms under labels such as Arduino, Adafruit, Sparkfun, and PyCom. The Pycom IoT device consists of a wireless module (Fipy) mounted on a Pysense expansion board equipped with several sensors: a temperature, humidity (SI7006A20) and light sensor (LTR329ALS01). The light sensor typically provides two channels labelled as ctrl_ch1 and ctrl_ch2, etc. to measure light intensity in different parts of the spectrum: one for visible light and one for infrared light. The outputs of these two channels are then combined to determine the overall light intensity in the environment. These computing platforms use microcontroller technologies from ARM, NXP, ST Microelectronics, Nordic, TI, or Espressif among others. They include wireless chipsets based on IEEE802.11 (Wi-Fi), Bluetooth (standard and BLE), IEEE802.15.4 and wide-area wireless technologies such as LoRa, Sigfox, NB-IoT and LTE-M. A wide range of commercial low-power embedded systems platforms are also available [33][34][36,37], but they tend to be designed for specific applications and use cases. A broad range of companies from system solutions providers to chip manufacturers also provide similar low-power embedded hardware and prototyping boards. The space is particularly vibrant with small companies and start-ups. A comprehensive survey of academic prototypes and commercially available wireless sensor platforms for Internet of Things applications can be found in [35][38].
Video Production Service