Keywords

1 Introduction

Software is an essential component to make the human life more comfortable. Specifically, in the present scenario where the computer system is widely used in many fields of our life. As per the history of software engineering (SE) and the survey results of software development methodologies, development organizations are highly dependent on the software that makes it more interesting and attractive as well. There are many types of software systems, from simple embedded systems to complex global information systems. Depending on different types of software product, development procedure and related complexities are also varying. Hence, software engineering needs optimized software development life cycle model. Some fundamental questions that are likely to arise in your mind are: How do you define software and software engineering? What exactly is artificial intelligence? What features of software engineering lend themselves to artificial intelligence concepts and techniques? The term software crisis and software engineering was coined in 1986 by NATO. The software engineering discipline incorporates different aspects of software development from requirement gathering to maintenance to delivery.

To develop software products in a disciplined and systematic manner, we need a software development life cycle (SDLC). Without a SDLC model, it is impossible to identify the phase’s entry or exit criteria. Without software life cycle models, software project managers will struggle to keep track of the project’s development. There are 6 phases in SDLC are: requirement analysis, planning, designing, developing, testing, and maintenance. Alternatively, artificial intelligence, which is part of computer science, seeks to make machines do things humans have traditionally performed. Its goal is to develop machines that can engage in actions that humans see as intelligent. Despite the complexity of AI, the introduction of machine learning and deep learning has led to a paradigm change in almost every area of the software business. In software engineering, AI plays a crucial role in streamlining processes, reducing waste, and automating repetitive manual tasks. A number of research and practice areas have demonstrated the effectiveness of AI techniques in software engineering, including probabilistic engineering, learning and prediction, and search-based engineering. This is true not only of the software systems we create, but also of the methods we use to create them, which are frequently based on estimates. As a result of its use, machine learning develops ways to compute that are more efficient. When AI tools are used successfully, human developers’ creative potential is multiplied.

2 Literature

In the literature, the importance of AI on various phases of software development life cycle can be seen. Robert et al. presented AI in software engineering application levels taxonomy, which categorizes different applications based on the nature of AI technology employed and the level of automation allowed [1]. Their work demonstrates the use of presented taxonomy by classifying numbers of research work and various workshop editions. Their work is helpful for businesses in determining how to incorporate AI into their software products and developing AI strategy. Software engineers haven’t paid much attention to artificial intelligence (AI), despite its growing importance in self-organizing IT applications. The current state of AI application to software engineering, prospective future developments, and risks related to it is evaluated by Barenkamp et al. [2]. Several qualitative interviews with various stakeholders who are utilizing or desiring to utilize artificial intelligence tools are paired with a systematic evaluation of prior studies in the subject. Insights from the software development life cycle are also categorized in the study. Automated test tools and agile testing automation would also benefit from improved software development environments. According to Narayan et al. [3], artificial intelligence can be used to improve software quality and the software engineering process. A major focus of their research is improving software quality systems using artificial intelligence and reducing time to market. Al-Ahmad et al. [4] developed a swarm intelligence-based model with the goal is to improve the prediction rate as much as possible in the software development process. After comparison from most of the AI techniques, they found that as compared to distinctive ML classifiers and traditional model, their suggested model consistently outperforms them. Additionally, Ammar et al. [5] evaluated how artificial intelligence approaches can be applied to software engineering. They suggested that enterprises need to closely partner with Microsoft to utilize cloud-first technology and AI solutions improve software system quality overall, shorten time to market, and operational efficiency. It also necessitates a number of distinct stages in order to combine these different sorts of knowledge into a single final result. By considering this, Ebbah et al. [6] examined AI techniques from the point of view of their use in software development process. The technique examines AI techniques that can solve problems in software engineering procedures that have been discovered (or are looming in future). Rech et al. [7] presented and looked at an approach to SE that focuses on artificial intelligence: KBS, AmI, and CI. They review the strong ties between artificial intelligence and SE with emphasis on areas the publications focus on.

Artificial intelligence (AI) and machine learning (ML) approaches have been heavily applied in software engineering to enhance decision-making, programme quality, and developer productivity. Such AI/ML models for software engineering, however, continue to be unreliable, mysterious, and useless. These problems frequently hinder AI/ML model adoption in software engineering methods. Tantithamthavorn et al. [8] emphasized the need of explainable AI in software engineering. They provided a variety of case examples to validate the work. The impact of automation and AI on the practice of software engineering is not well understood. In their research, Latinovic et al. [9] interviewed skilled software practitioners to find a solution to this problem. Their findings demonstrate that incorporation of AI and SE with the effect of automation makes the SDLC process more effective in terms of cost, effort, and time.

Kulkarni et al. [10] proposed an integrated architecture to optimize software development processes. They have incorporated AI activities with the extended waterfall and agile model. In addition to that, five projects were also used to measure and validate the performance of the architecture. UGAM and IoI metrics they used to assess the project against proposed goals.

Hourani et al. [11] have made an attempt to present the AI pillars that can be applied specifically in the testing phase. In terms of AI and software testing, they have also recommended several potential future research directions.

Sofian et al. [12] have given a thorough mapping assessment of the contributions and trends involving AI approaches. The stages of SE, the AI methods utilized in SE, and performance evaluation have all been covered. Following a thorough investigation, their findings indicate that machine learning (ML) has been utilized most frequently for the automation and efficient improvement of SDLC procedures.

Dam [13] highlighted few AI applications and use of machine learning in SE. They have also discussed other areas of AI like: evolutionary computing, knowledge representation, and agent technology to solve software development problems.

3 AI in Software Development Life Cycle Phases

The problems that beset all low-quality software endeavours were the reason why software engineering was developed. The bulk of problems arise from software projects that go above their allotted spending, timelines, and quality standards. Because of how quickly the user environment is changing and the demands that applications must fulfil, there is a greater demand for software engineers [14,15,16].

Adding another layer of indirection can solve all problems in computer science except for those caused by too many layers of indirections [17, 18]. This is particularly true when the user-friendliness, rapidity, and ease of deployment of software development processes can be demonstrated that can be enabled by the aforementioned programming and modelling abstraction layers. Millions of computer programmes needed to be developed, updated, modified, or improved for specific tasks during the 1960s, and as a result, the need for software programmers increased tremendously. Everyone was writing code in a more complex, inefficient way that didn’t take advantage of hardware capabilities, making it difficult for others to understand. This resulted in delays in finding bugs and troubleshooting, which delayed the creation of software and led to what was at the time referred to as a “software crisis”.

It is the goal of artificial intelligence (AI) to make computers smart, yet some of the most challenging systems ever built by humans are defined, built, and implemented by software engineers. Current AI approaches to SE are geared towards solving specific problems, such as finding test data for certain branches or criteria and fitting equations to predict system quality. Instead of staying at the lowest level of abstraction, we can transcend individual instances of problems to whole classes of problems, and then present solutions methodologies. Several aspects of the software development process have benefited greatly from software intelligence automation. Design, deployment, quality assurance, and testing are the areas that have been most impacted. AI has been successfully used in earlier parts of the software engineering process, such as real software development and requirements engineering, according to numerous advances and studies [3]. Research suggests that incorporating AI into the software development process might minimize work and risks throughout the process.

3.1 AI Techniques Used in SDLC Phases

In SDLC life cycle phases, we use different AI techniques to automate things which have their own advantages and disadvantages. Let us discuss them one by one.

A software project begins with the establishment of goals and client specifications by software developers and clients. It is of the utmost importance to schedule and plan software development projects to ensure technical efficacy and financial viability. In the project planning stage, we can utilize search-based software engineering techniques to make the process more effective [18,19,20,21].

Recently, numerous requirement engineering strategies have concentrated on determining the requirements for employing AI to solve client problems [17]. Some strategies have since looked into how to use AI with the RE phase. Techniques employed in this era include self-learning algorithms, ontology-based approaches, and big data strategies.

The software project is distinctly organized at the design phase, and development jobs are delegated. The analysis of conclusiveness of code or stories, testing programme logics, and probabilistic planning is done during the software design process. Search algorithms, genetic algorithms, etc., are used to optimize this phase.

Artificial intelligence (AI) techniques are used to convert natural language into code. Procedures for automatic encoding, debugging, and optimization decreased implementation costs and timelines, more effective teamwork.

We use different AI techniques in testing phase to check and test scripts, predict errors probabilistically using big data, shorten test times and reduce costs, integrate existing programmes, and increase efficiency through automated debugging and compiling. Self-adaptive software routines, pattern recognition, and artificial neural networks are employed in the software deployment and maintenance phase for classifying inquiries, evaluating mistakes, and other tasks. Eliminate unnecessary code, increase speed, and simplify maintenance.

4 Discussion

This section highlights major outcomes in the form of table based on our survey study. Table 1 presents the systematic mapping of AI techniques corresponding to each phase of software development life cycle. The first column represents the SDLC phase like: planning, requirement gathering, designing, testing, development, and deployment/ maintenance. Each of the mentioned phase has their own importance in the development of any software. And the aim of this paper is to provide an insight to optimize the product and quality of all those phases with the incorporation of different AI techniques. The second column represents problem associated with each phase during the software development process. As per the study, there are various issues which hampered the effectiveness of development process. During the software development, the main factors that greatly affect the whole procedure is: customer requirements, project type with their associated risk and status of development team. So, the problem is formulated accordingly. Third and fourth column shows the AI techniques and tools that are identified from the previous work and can be used by the user/ developer to solve the associated problem with the phases. The next column is for methodologies that have been used extensively by many researchers to facilitate different activities in software development phases as per the problem associated with them. And we have observed that ontology-based approach, natural language processing (NLP), search-based approach, and many machine learning techniques that is increasingly being adopted in the system development phases. The last two columns are for outcome after using AI in each phase and limitation corresponding to each technique.

Table 1 Summarized table For AI in software engineering

Study observed that major category of AI techniques like: machine learning, deep learning, data-driven approach, and heuristic algorithm in SDLC phases that are extensively used till now. We can also use possible combination of the mentioned AI techniques like: machine learning (ML) with data driven (DD), ML with deep learning (DL), ML with heuristic algorithm (HA), etc., to optimize the outcomes. Figure 1 shows the number of publications between year 2010 and year 2021. And it is being observed that the numbers are increasing gradually as per the importance of software engineering is also increasing.

Fig. 1
A vertical bar cum line chart represents the number of publications from 2010 to 2021. The numbers are 2, 1, 6, 1, 2, 1, 5, 3, 12, 3, 37, and 3 arranged in from left to right respectively. The highest bar is numbered 37 for the year 2020.

Publications of artificial intelligence in software engineering (year 2010–2021)

5 Conclusion

Systematically mapping contributions to the SE literature using AI techniques provides an overview of trends. Several AI techniques have been used in SE in the literature, which is heterogeneous in this study. Literature on SE phases and AI is mainly devoted to these topics. Summarized table on various parameters is presented to get an insight on AI techniques used in each one of the phases of software development life cycle. Machine learning effectiveness and precision are always increasing. Machine learning has been heavily utilized mostly for automation and enhancement tasks throughout the requirement gathering stage. Furthermore, hybrid strategies that combine ML with other AI techniques improved the usefulness of the metrics in their respective assessments. In dynamic or uncertain contexts, this combination can handle multidimensional and multi-variety data effectively. Along with the benefits of AI, we have also listed phase-by-phase restrictions or problems that many researchers encountered when applying AI approaches. It was also noted that AI techniques have a great deal of potential to be effectively applied in numerous other software development operations. There are a couple stages of SE that have seen very little application of AI. The future study stage was to conduct additional research and review the major findings to pinpoint those SDLC phases in which AI techniques may be applied more frequently in future.