International Journal of Software Engineering and Technology
Knowledge Management in Agile Software Development: A Case Study of XP Methodology Zeinab Tavakoli Dept.ofComputer Engineering Khomein Branch, Islamic Azad University Khomein, Iran
[email protected]
Taghi Javdani Gandomani Dept. of Computer Engineering Boroujen Branch, Islamic Azad University Boroujen, Iran
[email protected]
knowledge essentially is and what knowledge management means? Francis Bicken [6] defines knowledge as power. Prousak and Davenport [6] believe that knowledge is a dynamic combination of the experiences, values, field information, and professional thought which provides a framework for evaluating and offering the new knowledge. Therefore, it seems that knowledge management means the utilization and development of knowledge sources towards the achievement of the objectives and having capacity for gathering, storing, managing, evaluation, and distribution of knowledge [3].
Abstract—Knowledge management is an essential issue is software development process and different software methodologies have different perspective about it. This issue is a challenging area in XP methodology as a famous Agile methodology. The main aim of this paper is to present how XP phases support knowledge management. This means that although knowledge is informal in XP, it can be managed well in XP. Keywords—Knowledge development; XP
I.
management;
Agile
Mohammad Ahmadi Dept. of Computer Engineering Shahrekord Branch, Islamic Azad University Shahrekord, Iran
[email protected]
software
INTRODUCTION
The major purpose of the present study is to examine the contribution of knowledge management to Agile software development based on XP methodology. Accordingly, the present study is structured in six sections. Section two introduces Agile software development methodologies. In Section three XP methodology will be described. The contribution of knowledge management to the Agile software development with the adaptation of the elements existing in knowledge management cycle and XP life cycle will be considered in Section four. Knowledge producers and consumers will be introduced in section five. In the last Section a summary of the mentioned issues will be presented.
Software engineering means the application of systematic, organized, and measurable approach in order for the software to be developed, executed and maintained and also it means the application of the IEEE engineering principles in software development [1]. Thus, it seems that software engineering is an activity which is focused on knowledge [2]. Accordingly, for the organization of software development the most important issue is not developing, building, and offering it to the customer, but it is about knowledge which employees have in hand [3]. Software engineering is evaluated in four layers including tools, methodologies, processes, and quality [1]. Methodology is one of the essential layers of software engineering in which documents have a major role.
II.
AGILE SOFTWARE DEVELOPMENT METHODS
Agile software development methods were introduced formally to the software world through the composition of Agile manifesto in 2001 [5]. Signatories of this manifesto emphasized the exploration of the new methods of software development in order to achieve more appropriate results.
Software methodologies are divided into two groups including heavy-weighted and light-weighted [4]. Agile Software Development (ASD) is a reaction against insufficiency of the heavy-weight methodologies (traditional/plan-driven) [5]. These two groups of software development methodologies have structural differences one of which is consideration of documents. In heavy-weight methodologies consideration of the documents is one of the developmental principles, but in light-weight methodologies documents have been reduced to the minimum [4].
According to the opinion of the composers of this manifesto Agile methods focus on principles and values which are contrary to the previous viewpoints towards software development. This manifesto seriously emphasizes on the individuals’ roles and human interactions instead of processes and tools, making attempts for the development of the efficient software instead of trying to create comprehensive and inefficient documents, focusing on customer collaboration versus absolutely following a job contract, and trying to respond to the changes needed by customer versus following a comprehensive plan [5]. Therefore, agility of the methodologies means quick delivery, quick changes, and
Strategies, technologies, systems, and human resources are considered as providers of agility in software development process [5]. One of the subclasses of the human resources is knowledge workers. Agile development with the help of knowledge resources such as operators, employers, customers, and engineers can be effective in knowledge management and software development [3]. Here, the question arises that what 20
Zeinab Tavakoli et al./ IJSET Vol. 2, No.1 (2016)
possibility of the implementation of the changes in each step of the development phase [7].Agile methodologies have been very successful in this regard through the acceptance of quick delivery and change. III.
stored appropriately in order to be used in necessary time, place, and circumstances [12]. The first phase in the XP life cycle is exploration phase [15]. This phase which consists of the Spike architecture is based on the definitions proposed by customers, which are called user stories [14].
XP METHODOLOGY
User stories are considered as major motivations in the XP methodology. These stories provide high-level needs of the system and are considered as definite inputs in planning process [13]. Thus, it can be said that in this phase customer has the role of knowledge producer. Therefore, as is seen in Figure 1, it seems that the first phase of the knowledge management cycle has the capacity to overlap the exploration phase of the XP, because both make attempts toward knowledge recognition and achievement in order to be adapted to the needs. This means that requirements related to the release planning as well as system metaphors related to the basic architecture are made available to the developers through the knowledge obtained from user stories. In this step, developers have the role of knowledge consumers.
The XP Agile methodology was created by Kent Beck in 2000 [8]. This methodology is based on the principles of simplicity, collaboration, and quick feedback [8,9]. Accordingly, XP is a strategy for the development of the highquality software [8]. In XP, individuals have two major roles as customers and developers and two supplementary roles as trackers and couches [10]. Although there are other supplementary roles such as programmer, consultant, examiner, and manager have been introduced in some references, but XP activities are based on these four roles [10]. In this methodology an Agile development team as a whole includes the complete skills needed for software development without assigning any special duty to group members and each member of the team has tendency toward collaboration, accordance, and communications in order for the duties to be done well [7]. The XP life cycle consists of five phases which finally lead to the development of the high-quality software with lower cost and in shorter time [8,11]. These phases consist of exploration, planning, iterations to release, production, and maintenance [8]. IV.
ROLE OF KNOWLEDGE MANAGEMENT TO THE AGILE SOFTWARE DEVELOPMENT
In the modern world everything is moved toward new management and knowledge management is not an exception [4]. New management approaches mentioned a four-step cycle including knowledge recognition and achievement, knowledge sharing, knowledge utilization and creation for knowledge management [12]. According to this cycle knowledge and its resources (including the individuals’ explicit and implicit knowledge, information banks, documents, etc) are recognized and stored appropriately. Then, in order to create more value for the related awareness and more possibility of the regeneration of the knowledge, the achieved knowledge should be shared between the individuals. Then, it is necessary for the achieved knowledge to be utilized for the purposes and creation of the knowledge finally happens based on the entrance and utilization of the new information [10]. According to the new management approach, software development cycle consists of steps including needs, analysis, planning, implementation, examination, and maintenance [13].
Fig. 1. Adaptation of the exploration phase to the first element of knowledge management
B. Knowledge sharing Knowledge sharing means that knowledge should always be continuing and it should be avoided to be stagnant, because the only dynamic flow is knowledge which can keep its value [12]. The second phase in the XP life cycle is planning phase [14,15]. In this phase, developers use knowledge created by customers in order to reach an agreement on prioritized user stories. This phase is related to the agreement on the user’s prioritized stories with features which the system should have from the viewpoint of the developers [11]. In this step two types of estimation including uncertain and confident estimations derived from the achieved and recognized knowledge are done [14,15].
This cycle consists of engineering activities which are designed and programmed with the purpose of managing the life cycle of a software product. These are generally divided into three parts including programming, implementing, and maintaining [9,14]. As XP methodology is one of the Agile software development methodologies which consists of the new management activities of the Agile software development cycle, it seems that factors existing in the XP life cycle have the capacity to be adapted to the elements existing in the knowledge management cycle. A. Knowledge recognition and achievement Knowledge recognition and achievement means that knowledge is achieved and adapted to the related needs and is 21
Zeinab Tavakoli et al./ IJSET Vol. 2, No.1 (2016)
D. Knowledge creation Creation of knowledge means that the organization should be able to recognize its needed knowledge appropriately and if necessary add some points to it or achieve it from the external resources of knowledge [12]. The last step of the XP life cycle is maintenance phase [14]. This phase encompasses planning, iteration, and distribution phases. It needs an attempt for doing the duties related to customer support. This phase leads to knowledge creation from customer through encompassing planning, iteration, distribution, and production phases. Knowledge created in this phase has to be recognized again and if needed, some points should be added to it, because development of the system stops in this phase until the time when all of the customer’s needs are satisfied in all of the related aspects. In Figure 4, adaptation of the mentioned threefold phases to the knowledge creation element is shown.
Fig 2. Adaptation of the planning phase to the second element of knowledge management
In fact, based on Figure 2, these estimations are going on circulatory between the Spike and release planning stages in order for the feedback achieved from this dynamic process to finally lead to the increase of the awareness connected with the related system and then to lead to the release planning. C. Knowledge utilization Knowledge utilization happens after knowledge recognition and achievement, sharing and dividing in order to use knowledge. In the next steps on the XP life cycle there is the iteration and release step. As is seen in Figure 3, in this step, a lot of iterations are done many times and after some little iterations an acceptance test is done by customer [14]. If the test scenario is confirmed by the customer, additional tests are done in the production phase in order to check performance of the system. If not, the process remains in the same iteration in order for the errors to be totally removed. Due to this reason these iterations and releases lead to decreasing the danger of misleading development [13].
Fig. 4. Adaptation of the three-fold phases to the fourth element of knowledge management
V.
KNOWLEDGE PRODUCER AND CONSUMER IN XP KNOWLEDGE MANAGEMENT CYCLE
Based on the adaptation mentioned in previous sections, it is seen that in the process of knowledge management in XP agile methodologies two major roles including customers and developers are continuously producing and consuming knowledge.
Fig. 5. Knowledge producer and consumer As is seen in Figure 5, customer is a knowledge producer through mentioning user stories and taking acceptance test. Developers achieve system requirements and belongings related to the basic architect through utilization of the knowledge achieved from user stories. On the other hand, developers use this created knowledge for certain and uncertain estimates for distribution planning. Also, developers are consumers of the knowledge created by the acceptance test for system patterning, testing and consolidating.
Fig. 3. Adaptation of the iretation, desrtibution, and production phases to the third element of knowledge managemnet
Thus, it can be generally said that these steps help with utilization of the knowledge created by the acceptance test in order to remove the explored faults and they lead to utilization of this knowledge in order to pattern, test, and consolidate the related system.
VI.
CONCLUSION
Agile software development is a knowledge-focused activity. In the present study, phases of the life cycle of the XP 22
Zeinab Tavakoli et al./ IJSET Vol. 2, No.1 (2016)
Agile methodologies have been adapted to the elements of knowledge management cycle as a case study in order to understand the way of knowledge management in Agile software development. It has been seen that there is a product named Spike architect in the discovery phase. This product provides requirements related to the basic architecture through realization and control of the knowledge achieved from user’s stories.
[13] P. Abrahamsson, O. Salo, J. Ronkainen, and J. Warsta, "Agile software development methods: Review and analysis," ed: VTT Finland, 2002. [14] R. Fojtik, "Extreme Programming in development of specific software," Procedia Computer Science, vol. 3, pp. 1464-1468, 2011. [15] S. Ambler, Agile modeling: effective practices for extreme programming and the unified process: John Wiley & Sons, 2002.
Planning phase in which agreement of user’s stories happens consists of dynamic flow of knowledge from estimates which lead to knowledge sharing. In iteration, distribution and production phases, an acceptance test is given to customer after each small iteration as well. This test leads to the application of knowledge for removing flaws on one hand and it leads to the application of knowledge for modeling of the related system on the other hand. Finally, repair and maintenance phase requires an attempt for doing the duties related to customer support. This phase leads to knowledge creation through encompassing planning, iteration, distribution, and production phases. Knowledge created in this phase has to be recognized again and if needed, some points should be added to it, because development of the system stops in this phase until the time when all of the customer’s needs are satisfied in all of the related aspects. REFERENCES [1]
R. S. Pressman, Software engineering: a practitioner's approach: Palgrave Macmillan, 2005. [2] F. O. Bjørnson and T. Dingsøyr, "Knowledge management in software engineering: A systematic review of studied concepts, findings and research methods used," Information and Software Technology, vol. 50, pp. 1055-1068, 2008. [3] G. Melnik and H. Holz, Advances in Learning Software Organizations: 6th International Workshop, LSO 2004, Banff, Canada, June 20-21, 2004, Proceedings vol. 3096: Springer, 2011. [4] D. Stenholm, J. Landahl, and D. Bergsjö, "Knowledge management life cycle: An individual's perspective," in DS 77: Proceedings of the DESIGN 2014 13th International Design Conference, 2014, pp. 1905-1914. [5] k. beck. (2001). Manifesto for Agile Software Development. Available: www.Agilemanifesto.com [6] M. Alavi and D. E. Leidner, "Review: Knowledge management and knowledge management systems: Conceptual foundations and research issues," MIS quarterly, pp. 107-136, 2001. [7] G. van Valkenhoef, T. Tervonen, B. de Brock, and D. Postmus, "Quantitative release planning in extreme programming," Information and software technology, vol. 53, pp. 1227-1235, 2011. [8] K. Beck and C. Andres, "Extreme Programming Explained: Embrace Change, Book, 2005, Chapter 11," ed: AddisonWesley, Reading, MA. [9] C. Andres and K. Beck, "Extreme Programming Explained: Embrace Change," Reading: Addison-Wesley Professional, 2004. [10] R. Jeffries, A. Anderson, and C. Hendrickson, Extreme programming installed: Addison-Wesley Professional, 2001 [11] A. Qumer and B. Henderson-Sellers, "An evaluation of the degree of agility in six Agile methods and its applicability for method engineering," Information and software technology, vol. 50, pp. 280-295, 2008. [12] M. Hasanzadeh, "Knowledge management (concepts and infrastructure)," Tehran: Ketabdar Publication, 2008.
23