Finding common denominators for agile software development : a systematic literature review

Context: In the last decade, Agile software development methods were proposed as a response to plan-driven methods. The main aim for this paradigm shift was to cope up with constant changes. Core values that are central to agile methods are described in Agile Manifesto. Agile practices define how agile methods are implemented in practice. Objectives: This study aims to investigate what practices were considered and adopted as part of agile philosophy, and identify evidence on the use of agile practices in reference to what defines agile. Methods: We conducted a systematic literature review. The review includes 186 primary studies published between 2000 and 2010. Quality assessment based on rigor and relevance as identified in the selected papers has been conducted. Non-empirical papers were classified based on themes they addressed. Empirical papers were analyzed based on two factors: 1. if they described the use of agile practices for a software project/product in general, 2. if they described the use of agile practices for a specific purpose/activity Application type, team size and experience of subjects in the primary studies were extracted. The alignment between practices reported in the studies with the core agile values is analyzed. Results: A total of 119 studies were conducted in industry and 67 in academia. Nearly half the papers published by researchers are non-empirical and present analysis of agile practices in various topics. Over half of the empirical papers were focused on evaluation/assessment of a specific aspect of agile. ‘Pair programming’ received most attention in this direction. Among the empirical studies that described agile practices for academic projects, ‘Pair programming’ and ‘Test driven development’ were the most considered practices. Among the 119 studies conducted in industry, 93 studies described the use of agile practices for the overall project/product development while the remaining studies described experiences of single practices like Pair Programming or the modification/adoption of agile for non-software aspects in software projects. Practices adopted have been ranked based on team size, practitioners’ experience and application type. A method for agile assessment based on core agile values is developed and exemplified. Conclusions: Practices that are considered agile vary with context although ‘Pair programming’, ‘Continuous integration’, ‘Refactoring and Testing continuous throughout the project are the most common practices used. ‘Test driven development’ was not highly adopted by practitioners. But it was not clear if test cases were written before code construction in projects where continuous testing was performed. However, this was completely opposite in academic projects. Practices ‘On-site frequently modified. In many of the studies inspected, practices adopted were not aligned with agile values. Although practices related to technical aspects of software development are in place, agile practices that focus aspects like ‘working together’ and ‘motivated individuals’ are often not used in practice. Moreover, many of the studies were not reported to an extent that it was possible to draw any inferences on the usability/applicability, benefits and limitations of the agile practices. To this end, a major implication is to improve the quality of the studies and a need for a common framework to report the results of agile practices’ adoption.