Software Engineering for Internet of Things: The Practitioners’ Perspective
Posted by j.laird
on 18 April 2022 - 10:00am
By Mahdi Fahmideh (Senior Lecturer in Cyber Security, University of Southern Queensland) and Ali Behnaz (University of New South Wales).
Internet of things (IoT) has been gaining ground in the last few years; wearable devices, smart grids, smart cities, and self-driving cars are some tangible and ubiquitous examples of IoT. IoT based systems are a representation of a more connected physical world, for example, in Cisco’s words are “the network of physical objects that contain embedded technology to communicate and sense or interact with their internal states or the external environment” . Given today’s enormous size and popularity of IoT systems, the software engineering discipline needs revisited and evolved to address emerging challenges in the development of IoT based systems.
To this end, in this research, we have tried to provide a broad and collective development process view for the research objectives of (i) investigating the literature on software engineering for IoT based systems, (ii) obtaining domain experts’ opinions about the perceived importance of this framework, (iii) exploring challenges in development of IoT based systems in the view of experts, and (iv) developing practical recommendations by experts to negate these challenges.
Given the immaturity and discrepancy of the extant literature on software engineering for IoT based systems, we deemed to employ both qualitative and quantitative research methods to address the abovementioned research questions. This mixed approach would increase the reliability and accuracy of our proposed framework and research findings.
Firstly, we set the assumption that IoT based systems are grounded in underlying core concepts and logic. We characterise an IoT based system by fundamental components of infrastructure, people, applications, platforms, and things. These components led us to derive a conceptual framework via synthesising literature informing common steps in IoT development. Our conceptual framework constitutes 27 tasks that were organised into three phases: analysis, design, and implementation. The analysis phase focuses on tasks such as ideation, requirement analysis, plan definition and stakeholder analysis. The design phase concerns tasks related to architecture design as its main component. The implementation phase consists of coding and testing related tasks.
Next, we conducted a questionnaire survey of IoT domain experts to examine how the development tasks suggested in the proposed framework are perceived as sound and relevant for incorporation into the development process of IoT based systems. The purpose of the validation phase was to examine if IoT experts believe the framework’s tasks are important. The experts also shared their overall advice for software teams in addressing the challenges in developing IoT based systems. IoT domain experts believe that the development of IoT based systems should be viewed as a “multi-disciplinary”, “co-operative”, “bespoke”, and “agile-driven” development endeavour. It was also highlighted that the development process for this class of systems should be anticipated in an “integrated architecture driven”, “test-driven”, “automated”, and “energy-aware” fashion.
We found that multiple implications arise from this study both in research and practice. In research, there is an overlap between IoT and software engineering principles, and in practice, the proposed framework can be used as a guideline by development teams and their managers.
We believe our proposed framework and research findings provide solid guidelines for software engineering practitioners and stimulate a starting point for researchers associated with IoT based systems.