Building a Framework for Internet of Things and Cloud Computing
Internet of Things (IoT) is the concept of connecting multiple objects together in an Internet-based architecture. Applications built around this concept are constantly growing in variety and quantity. Technologies in IoT have been evolving rapidly and the alternatives also have increased quickly. As a result, it becomes challenging to conduct system and software trade-off analysis or select suitable IoT technologies for applications. The paper emphasizes variability management (consisting of alternative technologies) and aims to provide a framework as a result, which would allow or facilitate users to create their own IoT applications. In order to achieve this goal, we have adopted the idea of software product line engineering (SPLE) and created a framework with a layered architecture consisting of a Cloud Layer, a Central Hub Layer, and an End Devices Layer. The layers are loosely coupled with well-defined interfaces allowing for variability to be added at each layer. We were successfully able to create a framework which allows users to build their own applications, only being limited by the devices supported by the framework.