1 Introduction

As its own title indicates, this special issue is devoted to the Application of Software Engineering Techniques to Improve the Reliability of Intelligent Environments (ASET2IRIE). Although this is a follow-up special issue connected to the 5th International Workshop on the Reliability of Intelligent Environments (WoRIE 2016),Footnote 1 which seeks to strengthen and make more visible the close relationship existing between this journal and the workshop, there was an open call for papers so that any researcher working on the topics addressed, regardless of whether or not s/he had participated in the mentioned workshop, could submit articles to this special issue. In fact, only one of the four selected articles to be published in this special issue corresponds to an extension of a paper presented at WoRIE 2016.

The main purpose of this workshop is to serve as a forum to discuss the state of the art, trends and novelties on methodologies, techniques and tools to improve the reliability, safety and security of Intelligent Environments (IE). It also intends to build solid bridges of collaboration among the researches and practitioners belonging to the different communities involved in the research and development of IE. This special issue aims to expand in a more detailed way some of the most exciting and challenging topics addressed in the workshop, as well as strengthen the sense of community among the professionals involved in the mentioned field.

We can say that IE and Ambient Intelligence (AmI) systems include two layers [1]: the operational layer and the intelligent layer. The former is made up of a network of sensors, processors and actuators deployed in the environment that, respectively, are in charge of sensing, computing and controlling the relevant events, information, devices and appliances to provide support and assistance to people in such environment. It also contains a middleware to appropriately distribute the events, communication protocols, databases, etc. The latter applies some methods and techniques coming from Artificial Intelligence to make the system (i.e., its applications and services) smarter.

Accordingly, it is easy to understand that everything related to IE and AmI systems is really a multidisciplinary field [2], where researchers and practitioners of diverse disciplines, such as Ubiquitous/Pervasive Computing, Software Engineering, Artificial Intelligence, Human–Computer Interaction, Robotics, etc., will have to collaborate to design and implement systems that provide adequate solutions to important problems and challenges that developed societies have to face in relation to the aging of their population. Among them are those related to: assistance to vulnerable people, healthcare, quality of life, social inclusion, lifelong learning, and intelligent and adapted transport, to mention just a few.

IE are systems made up of a complex combination of very diverse hardware components and sophisticated software modules that run on a distributed basis, where there are a lot of interactions between the people to which the system serves and its diverse elements. They are also context-aware systems that need to recognize the specific situations in which they have to provide the corresponding services or functionalities [3]. Thereby, the system behaviour can be adapted to allow a better human–computer interaction and a minimization of user effort. However, the sensors needed to sense the context can give unreliable values or fail from time to time, the communication network that connect the different components of the system are occasionally unstable, unforeseen events can happen sometimes, and even the users can put the system to the test in situations that were not originally anticipated. All this makes the development of these systems a very hard task, and a significant challenge.

Consequently, it is essential to apply the best practices, such as the ones coming from Software Engineering [4], in the different stages (e.g., requirements elicitation, specification, analysis, design, implementation, deployment, and maintenance) of the development of this type of systems. Thus, the use of formal and/or semi-formal methods and techniques, as well as appropriate methodologies and tools, will allow analysing and determining more adequately the correctness of these error-prone systems, and as a result improving their reliability, safety and security, as well as increasing the user confidence in them.

Although a series of methodologies have been recently proposed to improve the development and the reliability of IE [5] and related systems, such as Pervasive/Ubiquitous Computing [6,7,8], Ambient Assisted Living (AAL) [9], Multi-Agent [10], and Sense/Compute/Control [11] ones, each of them is generally focused on solving certain development issues and are disconnected from each other [3]. Accordingly, more effort and work is necessary to provide standardized and unified methodologies, techniques and tools that can be collectively adopted by the community involved in the development of these systems.

For all this, the present issue aims to collect and publish recent advances and novelties coming from Software Engineering to improve the development of reliable IE, as well as showcase convincing examples and best-practice applications in relevant domains.

2 Contents of this special issue

As indicated above, four articles have been selected to be published in this special issue. A brief summary of the contents of each of them is presented just below.

In the first paper [12], Preuveneers and Joosen propose the framework called QoC\(^{2}\) Breaker as a software solution that extends the circuit breaker pattern to further improve the reliability of distributed systems in general, and IE in particular, by adding notions of Quality of Context (QoC) that complement typical techniques used at both analysis and design time, such as formal verification with model checkers. Thereby, context-aware applications offer a greater stability and resilience against different types of faults, and cascading failures through the system can be avoided. In addition, the authors present an evaluation of their framework on a prototypical case study, showing that their proposal, though with a limited performance overhead, can mitigate situations where isolated or transient errors can cascade into catastrophic failures throughout the whole IE.

In the second paper [13], Vithanwattana, Mapp and George present a detailed analysis of a comprehensive information security framework for mHealth and discuss the key mechanisms to implement it and develop an Advanced Digital Medical Platform based on it. As is known, mHealth consists of the use of mobile devices and wireless technologies to provide more patient-focused healthcare services wherever the user is. Thereby, the overall efficiency of the healthcare system is improved and its global cost can be potentially reduced. mHealth solutions can be used in IE, facilitating real-time data collection and input to enable various functionalities. As the services provided by mHealth solutions are delivered using unsure wireless technologies, the paper focusses on the fundamental aspects to guarantee privacy and data security.

In the third paper [14], Cicotti proposes an evidence-based risk-oriented V-model methodology to develop Ambient Intelligent Medical Software (AmI-MS) that defines a seamless and unified development process by interleaving the conventional Software Development Life Cycle (SDLC) process with risk management activities that integrate new phases specifically intended for the development of assurance cases driven by risk analysis to control quality concerns. As AmI-MS is directly related to people safety, it has to pass an approval process as medical device that determines its quality regarding safety and effectiveness. So far, this has been carried out by two separated processes: one for software development and the other for risk management. But this approach is not able to consider the interactions between both processes, leading to insufficient or inappropriate evidence, and undiscovered, or not adequately controlled, risk scenarios. This highlights the importance of the proposal presented in the paper. Furthermore, its application to a case study is also presented, showing the strengths and weaknesses of the methodology proposed.

Finally, in the fourth paper [15], Gallardo, Lavado, Panizo and Titolo propose the use of Hy-tccp, which is a concurrent and synchronous language for hybrid systems, to model IE. Since hybrid systems are characterized by combining continuous dynamics, which models the behaviour of physical components, with discrete dynamics, which models the software components in charge of controlling the evolution of the physical variables, IE can be described using Hy-tccp. This language has high-level notations that facilitate the description of computational systems and their abstraction from implementation details. The paper presents an operational semantics based on hybrid automata for Hy-tccp that constitutes the theoretical basis for the analysis and verification of hybrid systems in general and IE in particular. In addition, the authors include several extensive appendices where they provide a detailed set of rules that allow the implementation of tools for Hy-tccp, as well as different examples of IE modelled with Hy-tccp, to show the expressiveness of the modelling language. For these examples, they also provide interesting correctness properties expressed in a temporal logic.