Global software engineering and agile practices: a systematic review

Agile practices have received attention from industry as an alternative to plan-driven software development approaches. Agile encourages e.g. small self-organized collocated teams, whilst global software engineering (GSE) implies distribution across cultural, temporal and geographical boundaries. Hence, combining them is a challenge. A systematic review was conducted to capture the status of combining agility with GSE. The results were limited to peer-reviewed conference papers or journal articles, published between 1999 and 2009. The synthesis was made through classifying the papers into different categories (e.g. publication year, contribution type, research method). At the end 81 were judged as primary for further analysis. The distribution of papers over the years indicated that GSE and Agile in combination has received more attention in the last five years. However, the majority of the existing research is industrial experience reports, in which Agile practices were modified with respect to the context and situational requirements. The emergent need in this research area is suggested to be developing a framework that considers various factors from different perspectives when incorporating Agile in GSE. Practitioners may use it as a decision-making basis in early phases of software development. KEYWORDS: Agile Practices; Global Software Engineering; Distributed Software Development; Systematic Review 1. INTRODUCTION Distributed teams consisting of stakeholders from different national and organizational cultures, different geographic locations and potentially different time zones characterize global software engineering. These characteristics have significant effects on communication, coordination, and control, and mitigating the effects is a challenge [27]. In comparison with plan-driven software development approaches, Agile methods are more flexible when it comes to taking requirements’ changes into consideration in all phases of software development [11]. They emphasize extensive collaboration between customers and developers, and encourage small self-organized collocated teams [20]. Although mitigating the GSE challenges by themselves is not a straightforward task, combining Agile practices with a global or distributed context complicates things even further. Frequent face-to-face communication among collocated team members improves a feeling of “teamness” and builds trust [7], whilst distance in GSE implies a different way of working, organizational standards, organizational cultures and policies, which may decrease the team’s cohesion. However, (globally) distributed Agile has attracted attention due to its potential associated benefits such as shorter time to market, reduced development cost, and managing late requirements’ changes. This indicates the need for investigating the experiences reported in the current research literature to determine how Agile practices can be efficiently applied in (globally) distributed projects. Although several studies have reported successful integration of Agile and GSE (e.g. [26][9]), a thorough analysis of the studies to reveal the applicability of the reported experiences and best practices in different organizational settings and project demands is yet unexplored. This research primarily aims at extending the systematic mapping study conducted by Jalali and Wohlin [13] into a systematic review. The previous study provided a classification and a visual summary of the type of research reports and results that have been published. The study methods and classification approaches in a systematic mapping and a systematic review differ in terms of goals, breadth and depth [17]. Therefore, we have used both methods complementary. In this paper, the list of databases is expanded and the analysis is extended to research method, contribution, and the results of the included papers. Further, the discussions are enriched and detailed in order to better explain the current status of using Agile practices in GSE based on Please	  cite	  as:	  Jalali,	  S.	  and	  Wohlin,	  C.	  (2011),	  Global	  software	  engineering	  and	  agile	  practices:	  a	  systematic	  review. J.	  Softw.	  Maint.	  Evol.:	  Res.	  Pract.	  doi:	  10.1002/smr.561 findings from the literature. Hence, the objective of this study is to first summarize the current research literature, and then to investigate which Agile practices have been used effectively in which GSE contexts. The remainder of the paper is organized as follows. Section 2 gives a brief background and summarizes related work. Section 3 discusses the research methodology and explains different steps of conducting this systematic review. The results of the study are presented in Section 4, and discussion and observations around them are provided in Section 5. Finally, conclusions and future research directions are presented in Section 6. 2. BACKGROUND AND RELATED WORK The Agile practices and GSE alternatives are shortly presented in this section before putting Agile practices in the context of GSE. Moreover, related research work regarding Agile practices and GSE is summarized, and finally the motivations and objectives of this study are explained. 2.1. Agile Practices Agile methods consist of a set of practices for software development that have been created by experienced practitioners [28], aiming at overcoming the limitations of plan-based approaches through considering changes of the system’s requirements [11]. Agility is defined as “flexibility” and “leanness” [6], and mentioned to be about “feedback and change” in a way to “embrace, rather than reject, higher rates of change” [24]. Agile approaches focus on establishing close collaboration between customers and developers, and delivering software within time and budget constraints. Since they rely on frequent informal face-to-face communication rather than providing lengthy documentation, the process is repetitive, adaptive, and minimally defined [3]. The key features of Agile methods are continuous requirements gathering; frequent face-to-face communication; Pair Programming; refactoring; continuous integration; early expert customer’s feedback; and minimal documentation [4]. The most widely used methodologies based on the Agile principals are Extreme Programming (XP) and Scrum. However, other methods such as Feature-driven Development, Dynamic Systems Development Method, Crystal Clear method, and Lean development have been also used [1][10]. 2.2. Global Software Engineering Geographically distributed software development teams characterize distributed software development, whilst globally distributed teams characterize global software development [19]. In this study, we have considered both as GSE. The description of different terms related to GSE is inspired by [19], and the authors have only made minor changes and generalization presented as follows. Outsourcing (offshore/onshore outsourcing): an external company is responsible for providing software development services or products for the client company. When both subcontracting and client companies are located in the same country, it is known as onshore outsourcing. Offshoring (offshore insourcing): a company creates its own software development centers located in different countries to handle the internal demand. Distributed team: team members are spread in different locations and work remotely on different parts of the project (independent tasks) with or without any face-to-face interactions. The difference between a virtual and a distributed team is that virtual team members work jointly on the same tasks. 2.3. Agile Practices in Global Software Engineering Although Agile methods are well suited when customers and developers are collocated and there is frequent interaction among them [3], several software organizations have reported their successful experience of incorporating Agile in distributed software development (e.g. [26][9]). Please	  cite	  as:	  Jalali,	  S.	  and	  Wohlin,	  C.	  (2011),	  Global	  software	  engineering	  and	  agile	  practices:	  a	  systematic	  review. J.	  Softw.	  Maint.	  Evol.:	  Res.	  Pract.	  doi:	  10.1002/smr.561 However, there are challenges associated with this combination, and to get it to work effectively considerable effort is needed. The major difficulties are summarized as related to communication, personnel, culture, different time zones, trust, and knowledge management [4]. Nevertheless, various tactics and solutions are also reported by different software organizations to mitigate these challenges. 2.4. Related Work Here, a summary of the previous relevant research is presented. Systematic review studies on Agile methods or/and global software engineering are briefly presented. In addition, studies that have partially explored the combination of any Agile method in any GSE context are introduced even though if they are not a systematic review study. Dybå and Dingsøyr [10] conducted a systematic review of empirical studies of Agile software development up to 2005 resulted in identifying 36 relevant empirical studies. Besides the comprehensive analysis of the papers, the need to increase both the number and the quality of studies and to establish a common research agenda in the area of study is pinpointed. In a systematic review study by Smite et al. [22] the empirical evidence in GSE-related research literature has been investigated. The amount of empirical studies in the area was found to be relatively small, hence it is concluded that the GSE field is still immature. Hence, they have shed light on paths for future work for both researchers and practitioners. Taylor et al. [23] conducted a study in 2006 to evaluate the usefulness for practitioners of the existing research on Agile global software development. The study included articles published between 2001 and 2005. They concluded that the published research is of min