Keywords

1 Introduction

With recent advances in software technology, we are experiencing a fundamental shift in how people interact with software-intense systems and what is expected from these systems. In different domains, new types of systems are emerging with characteristics that make them very different from the systems we are used to and that software development organizations have traditionally developed. As one example, and as highlighted in a trend forecast published by Gartner [1], Internet of Things systems offer fundamentally new opportunities for value creation, and are rapidly permeating our everyday lives. These systems incorporate a number of functions such as e.g. sensing, actuation and control, and they use advanced data collection and analysis mechanisms to initiate actions and to make decisions in a predictive or adaptive manner [2, 3]. As a result, these systems foster new user behaviors and allow new forms of user interaction, they enable new service- and value creation and they allow innovative business models and opportunities. However, while these new types of systems offer a wide range of opportunities, they also pose significant challenges to the organizations developing these. Instead of being systems that are specified upfront, and for which there are pre-defined purposes and tasks, these systems are interconnected systems in which emergent configurations allow for dynamic system capabilities that evolve and adjust over time, and in which advanced data collection and analysis mechanisms allow continuous and automated optimization of system functionality. For most software development companies, these characteristics make the systems we see emerge very different from the systems that they have traditionally developed.

In this paper, and based on multiple case study research in three different domains, we identify emergent system characteristics that pose new challenges on software development. We present a model that outlines the transition that software development companies experience when moving from traditional development towards what we term ‘Human/System Synergistic Development’ (HuSySD). In this development approach, software development is no longer only a human effort conducted by software development teams, but instead a joint effort in which human development teams and autonomous intelligent systems share effort and responsibility in development of continuously evolving systems.

2 Background

Due to rapid advances in technology, new types of systems are emerging with characteristics and capabilities that we didn’t experience up until now. With physical objects becoming connected to the Internet, data revealing users’ behaviors being collected and shared, and systems with computational power beyond what we can imagine and abilities to learn, adjust and take action [4, 5], the potential of future software systems and services is stunning. As a consequence, the ways in which software systems are developed, and the ways in which development organizations and teams traditionally work, are being disrupted. At the same time as these new types of systems allow tremendous opportunities, they pose great challenges on current software development practices. Below, we discuss some of the characteristics that distinguish these systems from other systems, and that pose new challenges on current software development practices.

First, today’s systems are becoming increasingly powerful with advanced data collection and analysis mechanisms. They collect data continuously, they efficiently process vast amounts of data, and they response to queries during run-time [6, 7]. For instance, and as a well-established practice in the web and software-as-a-service industry, companies increasingly adopt A/B testing techniques [8] as a way to continuously learn from the data they collect, and to have this data inform experiments with different aspects of their systems. Also, and with increasingly intelligent systems, there is the potential to have the systems experiment with different behaviors and learn from these experiments to more rapidly adjust according to e.g. user preferences. With rapid developments in the areas of embedded intelligence and adaptive systems [5, 9], we will have systems that can experiment within boundaries set by development teams, and perform automated and frequent validation of functionality in relation to requests from these teams [10].

Second, as a means to accelerate the development of new innovative services, systems are becoming increasingly interconnected [1113]. Interconnectivity implies having a multitude of heterogeneous systems dynamically discover one another, and seamlessly interconnect at runtime. Typically, this is achieved by having mediators [14], mediating adapters [15], or converters [16] perform the necessary coordination and translation that allow applications to interoperate despite the heterogeneity of their data models and interaction protocols. Given the huge heterogeneity and dynamism characterizing these systems, automated solutions are used to achieve interoperability timely and with the needed level of flexibility [17]. As a result, interconnected systems can increasingly learn from each other and start to autonomously adapt, adjust and predict actions [18, 19] based on the collective knowledge generated in the network.

Third, the concept of systems that adapt and improve over time has been a topic of interest in the artificial intelligence and machine learning communities for a long time. The basic premise is a software system that learns to reconfigure or adapt itself to new or changing inputs [3, 9], and that take decisions based on continuous data collection. In contrast to traditional systems, an adaptive system with embedded intelligence is the one initiating action [9]. As a result, systems with adaptive characteristics require less user interaction the more they learn about the user.

3 Research Methodology

3.1 Case Companies

The research presented in this paper builds on close collaboration with software development companies in the online gaming, the embedded systems and the Internet of Things domain. In Table 1, we describe the case companies that were involved in our study, the domain in which they operate and the systems they produce.

Table 1. Case companies in three domains.

3.2 Case Study Design

The research reported in this paper is based on longitudinal multi case study research [20] in fourteen companies in three different domains: online games, embedded systems and Internet of Things. Our research is based on close collaboration and frequent meetings with these companies over a period of more than five years. In each company, we conducted interview studies, group interviews workshops, observations and validation sessions with people representing the software development teams, the release organization, project and product management and sales and marketing. In this paper, we present a summary of our learnings from the different domains, with a special focus on how new types of systems, and emergent system characteristics, pose fundamentally new challenges on software development.

4 Findings

Online Games.

During the last two years, we have engaged with three companies in the online gaming domain. In these companies, data is systematically collected from products in the field, and there are defined metrics that serve different stakeholders and teams in the organization. The companies run continuous experiments with customers and they collect data revealing system performance and operation. There are specialized data analytics teams that serve the organizations by processing requests, creating reports, defining data dashboards and by automating analysis. Typically, management and development teams have identified a set of key metrics that provide insights into how the organization is delivering value to its customers, and there is a close collaboration between management, the development teams and the data analytics team. However, the companies collect far more data than what they use, and they struggle with identifying key indicators that effectively drive the overall business goals.

Embedded Systems.

We have studied six companies in the embedded systems domain for the last five years. In all companies, huge amounts of data are collected to help assess product performance and operation. Primarily, this data works as the basis for troubleshooting and support activities, and as input for understanding any misbehavior or deviation in the system. However, although there are significant advances in data collection and use, there is no systematic analysis and use of the data. Often, ad hoc practices emerge in relation to individual or team needs or based on specific requests from a customer. Analysis is not fully automated and some of the companies report on tedious work for individuals when shifting through large sets of data to answer a query.

Internet of Things.

We studied five companies developing Internet of Things systems during the last two years. These companies experience an explosion in the amounts of data that is generated from their systems, and they are in the midst of trying to understand how to make effective use of this data in relation to systems that interconnect and interact with other systems in larger networks. The processing of the data needs to become much quicker as the company feels that innovative value propositions and interesting business cases might otherwise be lost.

In Table 2, we summarize the challenges we identify in the case companies.

Table 2. Summary of challenges identified in the case companies.

To summarize our empirical findings, we see that the companies we studied are experiencing major shifts in the types of systems they develop. To manage this transition, there is the need for companies to move beyond current software development practices and adopt new ways-of-working that support development of continuously evolving systems.

5 Towards ‘Human/System Synergistic Development’

Based on the case, we see the first beginning of a number of emerging system characteristics. These are: (1) self-learning systems, (2) self-actuation systems, and (3) decentralized control. First, self-learning systems refer to adaptive systems whose operation algorithm improves based on trial and error. Second, self-actuation systems refer to systems that actively initiate actions based on input from the environment in which they operate [9]. Finally, decentralized control refers to systems in which each master in the network has all data. This supports local decision-making and allows for rapid actions to be taken in the network. A key challenge that all companies experience, is how to transition towards new development approaches that cater for the emergent system characteristics they experience. In a number of studies, the transition from traditional development towards agile development has been outlined [22], as well as the move beyond agile development practices [6]. Recently, and due to increasingly intelligent systems [10], we are experiencing a shift towards intelligent systems that experiment and adjust their responses and behaviors. To reflect this synergy between development teams and systems, we coin the term ‘Human/System Synergistic Development’ (HuSySD) to denote a development approach where the development team provides functionality to the system in the field, and set boundaries within which the system itself can run automatic experiments (Fig. 1).

Fig. 1.
figure 1

The challenges and emerging system characteristics influencing current software development practices, and how the new development approach ‘Human/System Synergistic Development’ (HuSySD) address these.

In the development approach we describe above, development teams do hypothesis testing while smart systems do automated experimentation and adjust according to the results from these. In Fig. 2, we outline the ‘Human/System Synergistic Development’ (HuSySD) model with regards to the human and system loops, as well as the steps that can be deployed to confirm system behaviors.

Fig. 2.
figure 2

The ‘Human/System Synergistic Development’ (HuSySD) model.

6 Conclusion

In this paper, we identify emergent system characteristics that pose new challenges on software development. We identify these challenges and we present a new development approach in which software development is a joint effort between software development teams and smart systems.