Abstract
Artificial intelligence-driven software development paradigms have been attracting much attention in academia, industry and the government. More specifically, within the last 5 years, a wave of data analytics is affecting businesses from all domains, influencing engineering management practices in many industries and making a difference in academic research. Several major software vendors have been adopting a form of ‘‘intelligent’’ development in one or more phases of their software development processes. Agile for example, is a well-known example of a lifecycle used to build intelligent and analytical systems. The agile process consists of multiple sprints; in each sprint a specific software feature is developed, tested, refined and documented. However, because agile development depends on the context of the project, testing is performed differently in every sprint. This paper introduces a method to predict software failures in the subsequent agile sprints. That is achieved by utilizing analytical and statistical methods (such as using Mean Time between Failures and modelling regression). The novel method is called: analytics-driven testing (ADT). ADT predicts errors and their locations (with a certain statistical confidence level). That is done by continuously measuring MTBF for software components, and using a forecasting regression model for estimating where and what types of software system failures are likely to occur. ADT is presented and evaluated.
1 Introduction
The agile software development lifecycle is based on the concept of incremental development, iterative deliveries, and context-driven testing (Sommerville 2007). Agile development does not promote best practices; rather, agile it is about adaptive planning and evolutionary development. After the agile manifesto1 was introduced, multiple forms of lifecycles were influenced by it, such as extreme programming, crystal clear, feature-driven development, and scrum (Sommerville 2007) (the lifecycle of choice in this paper). The scrum process consists of the following entities: roles, sprints, stakeholders and a scrum master. Agile and scrum are discussed in more detail in the next section.