International Conference on Recent Advances and Future Trends in Information Technology (iRAFIT2012) Proceedings published in International Journal of Computer Applications® (IJCA) 33 Managing Knowledge in Agile Software Development Amitoj Singh Assistant Professor Patel Memorial National College, Rajpura Kawaljeet Singh Director, University Computer Centre, Punjabi University, Patiala Neeraj Sharma Associate Professor Punjabi University, Patiala ABSTRACT These days business activities are changing at very rapid rate and there are increasingly complex requirements set on programming solution that puts traditional software development methods (also called heavyweight) at the rear and leads to the need for other development practices which can overcome the problem of software crises. Modern approaches, also known as agile or lightweight methodologies, claim to provide solution to above said problem. Heavyweight methodologies, commonly known for its traditional ways to develop software put emphasis on comprehensive planning, detailed documentation, and expansive design. Unlike traditional methods, agile methodologies employ short iterative cycles, and rely on tacit knowledge within a team. Knowledge Management (KM) can be easily accepted into agile software development environments. Following are two reasons in favor of this point of view. First, the agile cultural infrastructure already encourages values such as cooperation, communication and knowledge sharing; specifically, agile software development processes include some practices that support KM, e.g. stand- up meetings, the planning game, pair programming and the informative workplace. Second, KM is about learning, and ASD set up an environment that supports learning processes. In this paper, attempt is made to find out specific agile practices which promote KM. General Terms Knowledge Management, Agile software development Keywords Scrum, Extreme programming, Knowledge Sharing 1. INTRODUCTION For many years a large number of different software development methodologies have been proposed to tackle the problems associated with software development. Avison and Fitzgerald define methodology as a set of procedures, techniques, tools and documentation aid which help developers to implement a new information system [1], [37]. Methodologies help in imposing a closely controlled process upon software development with a goal to make a software development process more efficient and predictable [2]. One of the reasons for using these methodologies is to put in order the different work processes by emphasis on planning, and so that it can help the development team to succeed in the project in which they are working. Another reason is to make software development process more predictable and efficient [3]. Traditional methodologies are plan-driven i.e. work begins with the elicitation and documentation of an entire set of requirements, complete architectural plan and followed by high-level design. Traditional methodologies emphasize on complete planning, detailed documentation, and expansive design. Because of these heavy features, this methodology is popularly known as heavyweight. But in spite of these features, lots of projects get failed, over budget or delayed. Lot of studies have been conducted which have reported the failures with these heavyweight methodologies. These failures are also referred to as „software crises (e.g. [4],[5]). Glass (2001) makes use of the term methodology warsto illustrate the often unfriendly dispute between advocates of agile and plan-driven software development. He further added that with the publication of the Manifesto for Agile Software Development(Agile Alliance 2001) [7] the dispute became more severe [6]. Advocates of agile argued that these methodologies cope successfully with common problems of software projects. To support this argument many surveys have been carried out (e.g. [34], [35], [36]). 2. AGILE SOFTWARE DEVELOPMENT What is the meaning of being agile? According to Jim Highsmith being agile means being able to deliver quickly, change quickly, and change often [8]. With an agile approach, one can deliver business-oriented results rapidly and effectively. Differentiating from the working point of view of traditional methods, agile methodologies use short iterative cycles, and rely on tacit knowledge within a team. The name lightweight or agile can be defined as “1) marked by ready ability to move with quick easy grace or 2) having a quick resourceful and adaptable character[9]. An agile method generally encourages incremental development and delivery of software product. This process should be able to allow changes occurring during the development phase and should be adaptive in nature [10]. The name “agile” came about in 2001, when seventeen process methodologists held a meeting to talk about the future trends in software development. The outcome to this meeting was the formation of “Agile Alliance” and its manifesto for agile software development. 2.1 Features of agile manifesto [7] Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan. Agile techniques may differ in practices (XP, ASD, DSDM, SCRUM, CRYSTAL etc.) but, they contribute to common characteristics, including iterative development, and a focus on interaction and communication. Cockburn and Highsmith explain what is new about agile methods is not the practices they use, but their recognition of people as the main driving force which can lead to project success [11]. Many surveys