Role of Agile Methodologies for Ensuring Quality in Complex Systems: A Systematic Literature Review

_____


Introduction
Software development is a set of resource-constrained, goal-directed cooperative innovation and communication activities [1].Agile software methodology, a relatively new approach to software development that was originally introduced in the late 1990s and is now widely considered "mainstream" software engineering throughout the world, has been prevalent in the IT industry for more than 3 decades.Using self-organizing, cross-functional teams and the customer as partners, agile approaches are a collection of software development techniques centered on incremental and iterative development [2].Agile approaches have been shown to be significantly more agile and flexible than conventional software development [3].It is a time-boxed iterative approach and encourages rapid and flexible responses to changes [4].
In the current world, we are highly dependent on technology in all aspects of our daily life and technology is changing day by day.With the change in environment, the demands of the customer regarding software requirements also change [5] which results in the complexity of the software products.Software systems are required to be interdependent, maintainable, secure, and usable.Complex software systems are challenging because uncertainty is high, requirements are not clear and high efficiency is required.Meeting the quality criteria of complex systems can be much more challenging.Agile methodologies come to the rescue which ensures quality in software products.
Principles and practices of agile methodologies may help cope with the complexity and uncertainty of complex systems and ensure enduring quality in these systems.Different practices of agile development methods ensure various quality characteristics in software systems.Meeting customers' expectations which is the highest priority of agile methodologies, the agile development methods i.e., Scrum, and extreme programming, can be beneficial to maintain the quality of the product.
However, the software development community still knows little about the role of agile in complex software products and how agile practices can achieve quality characteristics in software systems and especially in complex systems.We are motivated to fill in this knowledge gap and embarked on mapping out the published evidence available about agile practices for complex products.For this purpose, we conduct a Systematic Literature Review (SLR) by answering the following research questions.RQ1.Which quality attributes are required in complex software systems?RQ2.What agile methods are commonly used for the development of complex software systems?RQ3.How do agile methodologies ensure product quality in complex systems?The purpose of this paper is to evaluate the effectiveness and impact of agile methodology in complex software systems.Our main focus is to identify and analyze how various quality characteristics are achieved in complex systems using agile methodologies.

Related Work
In this section, we present relevant literature in the fields of product quality of complex systems using different agile practices.Different studies discussed different methods of agile for achieving a quality product in a complex system.Different problems were found in complex systems and how agile methods are applied to mitigate those problems by their inherited problem-solving nature as compared to the traditional methods.In a study, Setiadi et al. [6] implemented Scrum for online transaction processing in hospitals.The reason for implementing Scrum is because of the frameworks of agile development which can address complex adaptive problems, by increasing the productivity and creativity of all stakeholders [6].
A study conducted by Abdelhamid et al. [7] discussed how product quality is achieved using agile methods in software products by different techniques of requirements verification.Pair programming and test-driven development are the best choices to be used to ensure the quality of the product [7].Scrum aims to develop high-quality products that can be used to be completed on time for complex systems.
For critical problem domains such as core business systems which require a long-term evolution, XP is used to deliver high-quality software because it facilitates in a changing environment [8].This study discussed various methods for achieving quality using agile methods by Scrum and extreme programming considering them as a problem-solver for the complex problem domain.Quality assurance is one of the major components of software development, but agile methodologies lack high-quality assurance during the development however iterative and incremental development with the proper testing before the release still produces high-quality software products.
In [9] Fernando Selleri Silva proposed a reference model to improve the quality of software products by keeping quality assurance practices the highest priority for productivity and quality of the product.The model took into account the guidelines provided in CMMI and MPS, BR maturity models.Parita Jain [10] stated that there is a need for a quality model that must ensure that moving from traditional development to agile development leads to the ever-improving quality of the software.
Legowo [11] stated that Agile Software Methodology with Scrum is very precisely implemented in the case of developing a Quality Assurance System.In that study, the choice of Agile development methodology with Scrum was considered very appropriate, specifically in the development process.Finally, the results showed that the Agile Software methodology with Scrum is the right method to increase the efficiency and effectiveness in Quality Assurance System application development For critical systems, the critical quality factors should be kept in the highest priority due to their critical nature but functional requirements are given more attention than quality requirements which can result in a lack of quality in some of the critical systems, more attention is given to functional requirements than to quality requirements [12].The reason behind this is to ensure the highest critical qualities are the highest priority for a critical system.
Aggarwal et al. [13] focus on the measures of quality for agile software by highlighting the role of Quality Assurance within the agile development process.Testing as a key component is discussed with a brief understanding that in agile no separate testing team exists.The authors have also provided some metrics for measuring quality in agile as a future scope.
High-quality assurance of software is somehow compromised for agility but iterative and incremental combined development still produced high-quality software.Proper Testing is performed before release to make sure the product meets its quality or not [14].

Material And Methods
This study was carried out according to the standards set forth by Kitchenham and Charters [15][16] for conducting a Systematic Literature Review (SLR).To conduct SLR, review we formulate research questions, define and validate review protocols, search and selection of research papers performed, and screening of papers conducted through inclusion/exclusion criteria [17] The section includes the processes for searching for the literature, discussing the search resources and search keywords, inclusion and exclusion criteria data extraction strategy, and data synthesis method.

b) Search Resources
The search included electronic sources, and the main focus for the search string was Agile and complex software products both combined keywords, and those keywords are modified according to our specific requirements for search in digital libraries, the digital library which was chosen for conducting search strategy was: The IEEExplore Digital library, The ACM Library, and Science Direct [20].The search criteria used for the SLR in this review consist of a string related to keywords such as agile, complex software products, and quality attributes.An example of a search done in the electronic databases is shown below: "Agile" and "Complex software Product" Based on the search options provided by each database, we manually created the search string in each one.We approached each database search as a process of learning and experimenting.We use the following inclusion and exclusion criteria to assess the papers for SLR.inclusion/ is presented in Figure 2. i.

Inclusion criteria
For inclusion criteria, the paper must have the following features ➢ Available on digital libraries (IEE Explore, ACM, Science Direct digital libraries).➢ Focused on the implementation of agile for complex systems.➢ Focused on Scrum or Extreme Programming or Agile processes for critical systems.➢ Do not be a prior systematic literature review paper.➢ Published between the years 2008 and 2021.➢ Written in the English Language.➢ Non-redundant since the main focus is to study Agile methods and their applications in complex systems, and complex software product quality. ii.

Exclusion criteria
Any paper not having any of the inclusion criteria was excluded after reading the remaining papers carefully.A list of papers that were included and excluded was preserved.Multiple publications of comparable research were excluded to minimize results bias.The SLR protocol was evaluated for internal consistency confirmation, the research questions are derived from the search strings, the data extraction forms allow for answering the research question(s), and the data analysis procedure is adequate to answer the research questions.To guarantee that the publications addressed our research questions, the following screening criteria were employed.1) and agile practices for complex systems?2) Does a paper discuss any quality attributes of complex systems?
The following two criteria were included relating to the quality of each paper's description for extra quality evaluation.3) Does the paper's goal appear to be stated clearly?4) Does the article appropriately address the background of the Agile methods and complex systems?39 papers were selected by carrying out the quality assessment based on those quality assessment criteria.The summary of those selected papers is given in Table 1.

f) Data extraction
Data extraction was carried out on the 39 studies that satisfied the inclusion and exclusion criteria the data of each study were recorded in a textual file.The recorded files included agile methodologies implementation and the complex systems quality attributes included in any of those studies.The data extraction process faced some difficulties because the quality achievements were not reported in certain studies.Due to this fact, all data from the studies were extracted by both authors.All disagreements were resolved by discussion.

g) Synthesis of findings
The study followed the synthesis method to combine the results of the studies.The most common method which was used is the Meta-ethnography approach, by combining the results of different studies to create an understanding of phenomena under study greater than the individual ethnographic studies [21], in the first stage of following this approach, the results of those studies were collected in the tables for the agile methodologies used and the product quality attributes of complex systems, in the second phase the findings were compared, the study revealed different approaches used different agile methodologies and different quality attributes of the complex systems which are mentioned in the result section.Finally, the findings were translated, compared, and synthesized to meet our research questions.The synthesis of the studies is given in Table 2 for the quality attributes and in Table 3 for the Agile Method used in the studies.

Result And Discussion
This research involves SLR in the fields of product quality of complex systems using different agile practices.Different studies discussed different methods of agile for achieving a quality product in a complex system.This section presents the results of the SLR by answering the following research questions.RQ1: Which quality attributes are required in complex software systems?
In the selected studies, various quality attributes were re-discussed according to the complexity of the systems and their requirements in the domain they are using, but most of the major quality attributes which were mentioned in those papers are shown in Figure 3. Different papers discussed different quality attributes according to their systems and implementations in that area but the major and most commonly discussed quality attributes from the studies are correctness consistency, security, extensibility/responsiveness to change, response time, maintenance, reliability, accuracy, and performance.
Figure 3: Number of quality attributes in complex systems mentioned in studies The identified quality attributes can be categorized into four categories to understand the type of quality characteristics required in complex systems.We categorized them into 4 main categories i.e.SAFETY, PERFORMANCE, CHANGEABILITY, and RELIABILITY as shown in Figure 4. From this, the most important and frequently mentioned Quality attributes identified are in category B. So attributes in Class B will be of high priority in complex system applications practicing agile approaches as shown in Figure 3.
Category A describes the security and safety characteristics of software.The security of complex systems is one of the highest quality factors, especially in the domain of hospital management and banking systems.Therefore it must be as secure as possible.Category B represents quality attributes related to the performance of a software system.The complex software system should be accurate (i.e.having not a single error in any value), have better response time (should be "hard" in real time which means it should respond in that specific time without any delay), and correct (verification of specifications of what the software will do, and do correctly in a safe manner).
Category C represents quality attributes related to software changeability [22][23] [24].It represents that software should be responsive to change (should be easy to upgrade and its functionalities should be easily extended without taking too much down or losing data), maintainable (should be updateable easily) [25][26] [29].Category D represents quality attributes related to the reliability of a software system.Complex software systems should be consistent (should be consistent with their results/outputs), reliable (should be reliable to be used), and stable (should be operable in various environments).To achieve quality characteristics in complex software systems, agile methodologies selected by the software companies/process managers will help in suggesting appropriate agile methods for achieving quality characteristics in new complex systems.Table 4 shows the studies in which agile methodologies were used for the development of complex systems.
There are some research studies where Scrum is combined with a variety of other frameworks to get the benefits of agile methods [14].In some studies, Scrum and XP are combined to get the full benefits of the principles and values of agile methods which proved to be productive for their complex systems [9].
Different studies use agile for achieving various quality attributes in a complex system.The most commonly used agile methods in our selected studies are Scrum and Extreme Programming for complex systems because these two methodologies are problem-solving as compared to the traditional methods [30]- [32].In a study, a case study for an online transaction processing system is conducted where Scrum is used as a process model.Analysis of the study revealed that the reason for using Scrum is to achieve high-quality attributes like usability, reliability, and accuracy that are required for an online transaction processing system.Practices of Agile like implementing different techniques for requirements verification, pair programming, and Test-Driven Development ensure quality in the software.
In another study, extreme programming (XP) is applied to a complex problem domain.Analysis of the case study shows that XP addresses complex adaptive problems through its values, principles, and practices.It also increases the productivity and creativity of all stakeholders.Furthermore, its incremental approach allows product quality to improve with each deliverable.For critical problem domains such as core business systems that benefit from a long-term evolutionary approach, XP can be used to deliver high-quality software that keeps up with a changing environment [26].The reason behind their success and popularity is their ability to deal with changing requirements and adopting to change [33].Scrum along RUP (Rational Unified Process) [14] RQ3: How do the agile methodologies ensure product quality in complex systems?As we know that agile methodologies focus on customer satisfaction, adapting to change, and customer feedback, in this RQ, we will analyze how these practices result in improvement in the quality of products, especially in complex systems.As two methodologies i.e. extreme programming and Scrum are mainly used in the development of complex systems, we will analyze how these practices ensure quality in complex systems.
Our analysis shows that agile approaches use combinations of best practices to incorporate quality into the product, resulting in a new viewpoint on quality management.Many studies have supported and promoted the benefits of agile approaches in terms of quality [27], [31] [34].
Agile methodologies overcome the conventional development methods' limitations and provide flexibility to adopt the changes in requirements at any stage [28].Applying values from the principle of the agile method can enhance the success of complex systems implementation and minimizes the risk of failure.Due to its ability to welcome change, the principles of agile play a vital role in dealing with the complexity and uncertainty of large-scale projects [35].Practices of extreme programming e.g.test-driven development and pair programming play a major role to ensure high quality in complex systems and reducing bugs [36].
From a development perspective, Agile software development offers the development team a lot of benefits of management and responsiveness in problem discovery and solving [37][38].The composition of a team in agile practices has a great relationship with the practices available in highperforming teams and organizations.These practices provide a great development environment which results in a good quality product [39].Other major benefits of agile methods include sprints in XP and Scrum, better communication practices, test-driven development, and customer feedback [40].All these principles and the values in Scrum and XP ensure major quality attributes in complex systems.

Conclusion.
In this paper, we aim to provide detailed insight into applying agile methodologies to complex software systems.So, to determine the influence of agile methodology and frequently used quality attributes, we carried out a thorough review of the literature and identified the major quality attributes of complex software systems, the agile methodologies implementation in the complex systems, and analyzed how the agile methodologies meet those quality attributes of complex systems.Our analysis shows that complex systems have complex interdependencies of quality attributes.Some of the complex systems mainly focus on security, reliability, and efficiency whereas other emphasizes safety, response time, and maintainability which are for different domains.Various domains define quality attributes according to their applications.Most complex systems share common quality attributes i.e. reliability, correctness, security, response time, and performance.Our study shows that Scrum and extreme programming are the common agile methodologies used for developing complex software systems.The reason behind the use of the method is the features, principles, and values in both methodologies which are the key success factors to ensuring the quality attributes in complex systems.
In the future, we'll provide guidelines to suggest to developers which agile approach is more effective for complex systems in the view of experts.
[18][19].Our research methodology involves different activities such as the selection of processes, search resources, search keyword selection, and data extraction methods.The detail of the workflow is depicted in Figure 1.Detail description of our methodology is as follows.a) Search Process

Figure 1 :
Figure 1: Overview of SLR stages c) Search CriteriaThe search criteria used for the SLR in this review consist of a string related to keywords such as agile, complex software products, and quality attributes.An example of a search done in the electronic databases is shown below: "Agile" and "Complex software Product"Based on the search options provided by each database, we manually created the search string in each one.We approached each database search as a process of learning and experimenting.

Figure 2 :
Figure 2: Detail process of paper selection for SLR d) Study selection criteriaWe use the following inclusion and exclusion criteria to assess the papers for SLR.inclusion/ is presented in Figure2.i.Inclusion criteriaFor inclusion criteria, the paper must have the following features ➢ Available on digital libraries (IEE Explore, ACM, Science Direct digital libraries).➢ Focused on the implementation of agile for complex systems.➢ Focused on Scrum or Extreme Programming or Agile processes for critical systems.➢ Do not be a prior systematic literature review paper.➢ Published between the years 2008 and 2021.➢ Written in the English Language.➢ Non-redundant since the main focus is to study Agile methods and their applications in complex systems, and complex software product quality.

Figure 4 :Figure 5 :
Figure 4: Categorization of quality attributes in complex software systems

Table 1 :
Summary of included papers

Table 2 :
Quality attributes found in the studiesNo.

Table 3 :
Agile methods used for complex systemsNo.