Elsevier

Journal of Systems and Software

Continuous software engineering: A roadmap and agenda

Abstract

Throughout its short history, software development has been characterized by harmful disconnects between important activities such as planning, development and implementation. The problem is further exacerbated by the episodic and infrequent performance of activities such as planning, testing, integration and releases. Several emerging phenomena reflect attempts to address these problems. For example, Continuous Integration is a practice which has emerged to eliminate discontinuities between development and deployment. In a similar vein, the recent emphasis on DevOps recognizes that the integration between software development and its operational deployment needs to be a continuous one. We argue a similar continuity is required between business strategy and development, BizDev being the term we coin for this. These disconnects are even more problematic given the need for reliability and resilience in the complex and data-intensive systems being developed today. We identify a number of continuous activities which together we label as 'Continuous*' (i.e. Continuous Star) which we present as part of an overall roadmap for Continuous Software engineering. We argue for a continuous (but not necessarily rapid) software engineering delivery pipeline. We conclude the paper with a research agenda.

Introduction

Software development has been characterized by harmful disconnects between important activities, such as planning, analysis, design and programming. This is clearly reflected in the traditional waterfall process for software development described (and criticized) by Royce (1987). In the last two decades, there has been a widespread recognition that increasing the frequency of certain critical activities helps to overcome many challenges. Practices such as 'release early, release often' are well established in open source software development (Feller et al., 2005), which offer several benefits in terms of quality and consistency (Michlmayr et al., 2015). The pervasive adoption of agile methods (Kurapati, Manyam, Petersen, 2012, Papatheocharous, Andreou, 2014) provides ample evidence of the need for flexibility and rapid adaptation in the current software development environment. Very complex and business- and safety-critical software is being developed, often by distributed teams. A tighter connection between development and execution is required to ensure errors are detected and fixed as soon as possible. The quality and resilience of the software is improved as a result. This is manifest in the increasing adoption of continuous integration practices. The popularity of continuous integration is facilitated by the explicit recommendation of the practice in the Extreme Programming agile method (Beck, 2000), and indeed the practice is highly compatible with the frequent iterations of software produced by agile approaches. Also, many open source toolsets such as Jenkins CI1 are freely available to automate the continuous integration process which makes this practice readily available to potential adopters.

However, a number of recent trends illustrate that a more holistic approach is necessary rather than one which is merely focused on continuous integration of software. For example, the Enterprise Agile (Overby et al., 2005) and Beyond Budgeting (Bogsnes, 2008) concepts have emerged as a recognition that the benefits of agile software development will be sub-optimal if not complemented by an agile approach in related organizational functions such as finance and HR (Leffingwell, 2007, Overby, Bharadwaj, Sambamurthy, 2005). In a similar vein, the recent emphasis on DevOps recognizes that the integration between software development and its operational deployment needs to be a continuous one (Debois, 2009). Complementing this, we argue that the link between business strategy and software development ought to be continuously assessed and improved, "BizDev" being the term we coin for this process. Several researchers across the management, information systems and software engineering disciplines have provided arguments which reinforce the BizDev concept and we elaborate on this in Section 4 below.

Furthermore, the holistic approach mentioned above should not assume that the process is complete once customers have initially adopted a software product. Digital natives, the term for those who have been born in the technology era (Vodanovich et al., 2010) have high expectations of software and are not put off by the high switching costs associated with moving to alternatives. Frequently, third-party opinions and word-of-mouth can cause customers to switch, and software providers must be more proactive in such a market-place. Also, privacy and trust issues loom much larger in the data-intensive systems being used today. Run-time adaptation is increasingly a factor as software is expected to exhibit some degree of autonomy to respond to evolving run-time conditions.

We believe that rather than focusing on agile methods per se, a useful concept from the lean approach, namely that of 'flow' (Reinertsen, 2009) is useful in considering continuous software engineering. Rather than a sequence of discrete activities, performed by clearly distinct teams or departments, the argument for continuous software engineering is to establish a continuous movement, which, we argue, closely resembles the concept of flow found in lean manufacturing and product development (Morgan and Liker, 2006), a school of thought that is called 'Lean Thinking' (Womack and Jones, 2003). In recent years, there has been much interest in lean software development (Conboy, Fitzgerald, 2004, Fitzgerald, Musiał, Stol, 2014, Maglyas, Nikula, Smolander, 2012, Petersen, 2011, Wang, Conboy, Cawley, 2012), however, there has been a frequent tendency to adopt a somewhat narrow view on the topic by closely linking it to agile practices only.

In this paper we review a number of initiatives that are termed 'continuous.' This paper extends our preliminary view on this topic (Fitzgerald and Stol, 2014). The goal of this paper is to sketch a holistic view of these initiatives and position them within the continuous software engineering context, and illustrate how Lean Thinking is a useful and relevant lens to view continuous software engineering. Furthermore, we look beyond software development, and consider issues such as continuous use, continuous trust, etc. and coin the term 'Continuous*' (pronounced as "Continuous Star") to refer to this holistic view.

The various developments are by and large at different levels of maturity—continuous integration is a concept and practice that has gained widespread currency, probably in large part due to it being a formal practice in XP. However, recent research shows that different organizations implement this practice in different ways (StĂĄhl and Bosch, 2013). In contrast, continuous delivery is an idea that has not widely been established in the software industry. Thus, we consider our holistic overview as a conceptual research agenda, and we envisage future research to operationalize each of the concepts identified, much as StĂĄhl and Bosch have initiated for continuous integration.

This paper proceeds as follows. Section 2 describes a number of developments that have attempted to scale up the agile paradigm, such as Enterprise Agile, Beyond Budgeting and DevOps. Section 3 reviews a number of key concepts from the school of Lean Thinking, of which the concept of 'flow' is the most important as it can be used as a suitable foundation for the holistic concept of 'Continuous*' that we propose in this paper. Section 4 presents the activities which comprise Continuous* in more detail, and we observe how the various concepts of lean thinking can be identified within these activities. Section 5 discusses a number of directions for future research and implications for practice.

Section snippets

Trends in the software engineering landscape

A number of recent trends have focused on the need to transform organizations to deliver software more rapidly. We discuss these in turn.

Lean Thinking

The term 'lean' was coined by Krafcik (1988) to describe the mode of operation in the Toyota Production System (TPS) (Liker, 2004). Numerous books have been published on TPS and 'lean manufacturing,' such as 'Lean Thinking' (Womack and Jones, 2003). While a full outline of the lean philosophy is outside the scope of this paper, we introduce a number of key lean concepts that can be observed in many distinct software engineering practices (see Table 3 for a summary of terms).

Continuous*: continuous software engineering and beyond

We view Continuous* as a holistic endeavor. The '*' implies that other 'continuous' activities may emerge over time which could also be positioned within this holistic view. Continuous* considers the entire software life-cycle, within which we identify three main sub-phases: Business Strategy & Planning, Development, and Operations. Within these sub-phases, we position the various categories of continuous activities (see Fig. 3 and Table 4).

Discussion and conclusion

The current identification of Continuous Software Engineering as an important topic is presaged by a number of emergent phenomena which at their core reflect the necessity of a focus on continuous activities. Here, we identify the sub-topics that underpin the emergence of Continuous*.

Acknowledgments

We thank the anonymous reviewers for constructive feedback to an earlier version of this paper. Thanks to Garry Lohan for his insights on Beyond Budgeting. This work was supported, in part, by Science Foundation Ireland grant 13/RC/2094 to Lero—the Irish Software Research Centre (www.lero.ie), Enterprise Ireland grant IR/2013/0021 to the ITEA2-SCALARE project, the Irish Research Council under the New Foundations programme, and the Royal Irish Academy (www.ria.ie).

Prof. Brian Fitzgerald is Chief Scientist at Lero—the Irish Software Research Centre. He holds an endowed chair, the Frederick Krehbiel Chair in Innovation in Business and Technology at the University of Limerick. His research interests include open source software, inner source, crowdsourcing, and lean and agile methods. Contact him at [email protected]

References (118)

  • On understanding laws, evolution, and conservation in the large-program life cycle

    J. Syst. Softw.

    (1980)

  • FrowN. et al.

    "Continuous" budgeting: reconciling budget flexibility with budgetary control

    Account., Organ. Soc.

    (2010)

  • ClapsG.G. et al.

    On the journey to continuous deployment: technical and social challenges along the way

    Inf. Softw. Technol.

    (2015)

  • Ackoff, R., 1994. The learning and legacy of Dr. W. Edwards Deming. Available at:...
  • AdamsR.J. et al.

    Creating small products at a big company: Adobe's "pipeline" innovation process

    Proceedings of CHI'13 Extended Abstracts on Human Factors in Computing Systems. ACM

    (2013)

  • Ă…gerfalkP.J. et al.

    Not so shore anymore: the new imperatives when sourcing in the age of open

    Proceedings of the 23rd European Conference on Information Systems

    (2015)

  • Ambler, S., 2001. When does(n't) agile modeling make sense. http://www.agilemodeling.com/essays/whenDoesAMWork.htm...
  • BaresiL. et al.

    The disappearing boundary between development-time and run-time

    Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research (FoSER'10). ACM

    (2010)

  • BeckK.

    Extreme Programming Explained: Embrace Change

    (2000)

  • BernhartM. et al.

    Applying continuous code reviews in airport operations software

    Proceedings of the 12th International Conference on Quality Software

    (2012)

  • BhattacherjeeA.

    Understanding information systems continuance: an expectation–confirmation model

    MIS Q.

    (2001)

  • BoehmB.

    Get ready for agile methods, with care

    IEEE Comput.

    (2002)

  • BogsnesB.

    Implementing Beyond Budgeting: Unlocking the Performance Potential

    (2008)

  • BogsnesB.

    Keynote: beyond budgeting in a lean and agile world

  • BoschJ.

    Building products as innovation experiment systems

    Proceedings of the Third International Conference on Software Business (ICSOB), LNBIP

    (2012)

  • BoschJ. et al.

    The early stage software startup development model: a framework for operationalizing lean principles in software startups

  • CA Technologies, 2012. The innovation imperative: Why it needs to lead now....
  • ChangT.-F. et al.

    "Continuous verification" in mission critical software development

    Proceedings of the 30th Hawaii International Conference on System Sciences

    (1997)

  • ChenX. et al.

    Continuous SPA: continuous assessing and monitoring software process

    Proceedings of the IEEE Congress on Services (SERVICES)

    (2007)

  • ChesbroughH.

    Open Innovation: The New Imperative for creating and Profiting from Technology

    (2003)

  • ColeR.

    From continuous improvement to continuous innovation

    Qual. Manage. J.

    (2001)

  • ConboyK. et al.

    Towards a conceptual framework of agile methods

    Extreme Programming and Agile Methods-XP/Agile Universe 2004, LNCS

    (2004)

  • CordeiroL. et al.

    Continuous verification of large embedded software using smt-based bounded model checking

    Proceedings of the 17th IEEE International Conference and Workshops on Engineering of Computer-Based Systems

    (2010)

  • DalyJ.L.

    Pricing for Profitability: Activity-Based Pricing for Competitive Advantage

    (2002)

  • DavisF. et al.

    User acceptance of computer technology: a comparison of two theoretical models

    Management Science

    (1989)

  • Debois, P., 2009. DevOps Days Ghent. http://www.devopsdays.org/events/2009-ghent/ (accessed on July 8,...
  • DeboisP.

    Devops: a software revolution in the making?

    Cutter IT J.

    (2011)

  • Del RossoC.

    Continuous evolution through software architecture evaluation: a case study

    J. Softw. Maint. Evol.: Res. Pract.

    (2009)

  • EarlM. et al.

    From management information to information management

    Trends in Information Systems

    (1980)

  • FagerholmF. et al.

    Building blocks for continuous experimentation

  • FeitelsonD. et al.

    Development and deployment at facebook

    IEEE Internet Comput.

    (2013)

  • FellerJ. et al.

    Perspectives on Free and Open Source Software

    (2005)

  • Fitz, T., 2009. Continuous deployment at IMVU: doing the impossible fifty times a day....
  • FitzgeraldB.

    Formalized systems development methodologies: a critical perspective

    Inf. Syst. J.

    (1996)

  • FitzgeraldB. et al.

    Customising agile methods to software practices at Intel Shannon

    Eur. J. Inf. Syst.

    (2006)

  • FitzgeraldB. et al.

    Evidence-based decision making in lean software project management

    Proceedings of the 36th International Conference on Software Engineering (ICSE-SEIP). ACM

    (2014)

  • FitzgeraldB. et al.

    Continuous software engineering and beyond: Trends and challenges

    Proceedings of the First International Workshop on Rapid and Continuous Software Engineering (RCoSE). ACM

    (2014)

  • FitzgeraldB. et al.

    Scaling agile methods to regulated environments: an industry case study

    Proceedings of the 35th International Conference on Software Engineering (ICSE-SEIP)

    (2013)

  • FowlerM.

    Refactoring: Improving the Design of Existing Code

    (1999)

  • GaleA.
  • GebauerL. et al.

    Towards understanding the formation of continuous IT use

    Proceedings of the 34th International Conference on Information Systems

    (2013)

  • GefenD. et al.

    Trust and tam in online shopping: an integrated model

    MIS Q.

    (2003)

  • HamelG.

    What Matters Now

    (2012)

  • HoehleH. et al.

    The role of continuous trust in information systems continuance

    J. Comput. Inf. Syst.

    (2012)

  • Holmström OlssonH. et al.

    Climbing the "stairway to heaven": a multiple-case study exploring barriers in the transition from agile development towards continuous deployment of software

    Proceedings of the 38th EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA)

    (2012)

  • HopeJ. et al.

    Beyond budgeting: how managers can break free from the annual performance trap

    Proceedings of the Harvard Business Review

    (2003)

  • Humble, J., 2010. Continuous delivery vs continuous deployment....
  • HumbleJ. et al.

    Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

    (2010)

  • HumbleJ. et al.

    Why enterprises must adopt devops to enable continuous delivery

    Cutter IT J.

    (2011)

  • JansenA. et al.

    Software architecture as a set of architectural design decisions

    Proceedings of teh 5th Working IEEE/IFIP Conference on Software Architecture

    (2005)

  • Cited by (381)

    Prof. Brian Fitzgerald is Chief Scientist at Lero—the Irish Software Research Centre. He holds an endowed chair, the Frederick Krehbiel Chair in Innovation in Business and Technology at the University of Limerick. His research interests include open source software, inner source, crowdsourcing, and lean and agile methods. Contact him at [email protected]

    Dr. Klaas-Jan Stol is a research fellow at Lero—the Irish Software Research Centre at the University of Limerick. His research interests include open source software, inner source, and agile and lean methods. Previously, he was a contributor to an open source project. Contact him at [email protected]

    View full text