Agile Software Development Methodologies & Correlation with Employability Skills Dineshkumar Lohiya School of Computer and Information Science University of South Australia, Adelaide Dineshkumar.Lohiya@postgrads.unisa.edu.au Abstract A comprehensive knowledge of available software development methods becomes vital to serve rapidly changing environment of software engineering world. Some methods works better than other based on the characteristics of project and customer requirements. This paper is focusing on both the positive as well as negative sides of Agile Methods. Comparison between Agile methods and other plan driven traditional methods focused on its challenges. Paper covers how education sector has started preparing courses on Agile methods and why it failed to serve basic principles of project management. Research shows the success of agile methods on smaller scale. S I. INTRODUCTION oftware engineering is an emerging industry in 21 st century. Number of traditional methods are vastly used to serve various SD projects depends on their characteristics and requirements. The changing environmental conditions and innovative technology has created demand of some quicker and better quality product methods. To meet with these needs of industry some software development methods are found, which serves better than other in some perspectives [1]. They are known as Agile methods. Firstly, this paper looks on various agile methods available for software development (SD). They are extreme programming, SCRUM, Dynamic system development method, Adaptive software development, Crystal methods and Feature driven development. Their convergence in Agile manifesto is also discussed at end of section II. After that benefits and limitations of Agile methods are highlighted in section III with help of some tabular data. Section IV focused on comparison between Agile methods and some traditional SD methods like waterfall model and cowboy. The major challenges of accepting Agile methods are briefly described too. It also demonstrated that how Agile methods serves speedily with needed quality requirements based on the project size. Section V gives light on how Agile methods have introduced new area of study in education sector. The impact of Agile methods on project management is also covered in this section. Finally, the paper shows the conclusion of the survey that extensive research is needed in field of Agile methods. Major limitations of these methods make it unsuitable for larger SD project. Although Agile methods serve effectively for small organization. Lastly, the paper focused on various employability skills like communication, team work, problem solving, self management, planning and organizing, technology and learning. It demonstrates how these skills are required and also get developed among professionals of software industry. II. BRIEF FOCUS ON AGILE METHODS In this section some agile methods are briefly described and discussed their convergence in the Agile Manifesto [2]. A. Extreme Programming The most successful Agile Method is extreme Programming (XP). XP has five stages in it life cycle, to meet the goals. First stage is exploration in which customer explains their requirements and SD team decide that which tools and technology will probably useful. In second stage of Planning, SD team prepares a work schedule and divides the work into several iteration which called third stage iterations to release. Necessary testing has been conducted in Productionizing stage and the improvements identified should be corrected in maintenance stage. Death is the last stage of XP method where customer agrees with the application design with no changes required in future [1]. B. SCRUM SCRUM is a method of developing software in changing environment and keeping coordination between team members to deal with the issues of changing situations [3]. It has three phases: Pre-game, Development and Post-game. Pre-game have two sub-phases: Planning in which the requirements are identified and design of the application is briefly discussed in Architecture sub-phase. New functions are identified in development phase. Development phase is based on several iterative cycles which are known as Sprints which have further sub-stages like requirements, analysis, design, evolution and delivery [1]. C. Dynamic System Development Method (DSDM) In DSDM the time is fixed and resources are firstly required. After this the SD team adjusts the amount of functionality as per the requirement. It has five phases: Feasibility study, Business Study, Functional Model Iteration, Design and Build Iteration and Implementation. DSDM is the most suitable framework for rapid application development
2 (RAD). DSDM was very famous in UK since the mid 1990 s. [4]. D. Adaptive Software Development (ASD) The founder of ASD was James A. Highsmith III. ASD generally used for large and complex SD projects. The main characteristic of ASD is that it designs the framework for the large project which reduces the confusion and keeps the development team working on track. The important characteristics of ASD are like it is Mission-driven, Component-based, Iterative, Time-Boxed, Change-Tolerant and Risk-Driven [4, p.71]. E. Crystal Methods The underlying assumption of Crystal methods is that the people involved in SD project are more important than the tools or processes used throughout the project life cycle. Crystal methods are combinations of various methodologies which are best suitable according to the individual projects needs. These methodologies are selected based on three main factors: level of communication needed, life-threatening implications and corporate priorities [5]. F. Feature Driven Development (FDD) A Singapore based bank was in need of a development process which becomes easy to use as well as provides timely & accurate data of progress to management for review. FDD methodology was the outcome of that. The major benefit of FDD methods is that it does not require insidious training for SD team. FDD has five development phases and customer gets output at each phase end which provides more flexibility to work on high priority feature [5]. Convergence of Agile Methods in Agile Manifesto Agile Manifesto was formed in 2001 to ties all Agile methods together. The main four values has been expressed are: Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation and Responding to change over following a plan [1], [2]. Main idea of manifesto was to focus on the skills of the personnel rather than process. Research says that some best processes also get failed because of the lack of knowledge of the people involved in the project [6]. III. PROS AND CONS OF AGILE METHODS Characteristics and Benefits of Agile Methods Agile methods have certain unique characteristics over traditional SD methods which serves some important benefits too. It broadly described in table I [4]-[7]. After looking at benefits of Agile methods, we come to know that how they are emerge as a new successful SD methodologies by overcoming crucial limitations of traditional methods in practice. Table I: Correlation between Characteristics and Benefits of Agile Methods Characteristics Benefits Cost & Time saving, Meet changing Iterative nature requirements and quick modification, Incremental Minimizing risk, feedback control Knowledge sharing, Better product Cooperative quality, Expert solution (Benefits of (Collaborative) individual s talent) Simple Minimal training, Lesser documentation Close Physical face to face communication & Quick location of teams decisions collaborative Adaptive Able to make emergency changes Customer consultation at every stage People-oriented leads to greater satisfaction, Superior employee moral Research shows that at least one agile method has been used by many organizations in late 2000 [6]. Though, some negative aspects of Agile methods limits them to be useful only for smaller organisations. Agile manifesto is working to make Agile methods officially useful in software engineering [4]. Limitations of Agile Methods As there are so many small groups and people are involved, Agile Method is not suitable for the big organizations and large SD projects. Agile methods do not have any official definition in the field of SD, which put question mark against its credibility [8], [9]. Some research indicates that teamwork improves the project quality & speed, but risk becomes higher if there is only one expert among number of teams. Also, the lesser documentation creates obstacle for the outside reviewers in situations of emergency [8], [10]. Large number of involvement of people as team may cause moral clashes between them. Some research found that lesser management support turns into failure of project Politics trump people [6]. IV. COMPARISON AND CHALLENGES Comparison between some Traditional plan-driven methods and Agile methods is needed to answer the question: Can agile methods ensure quality even though they develop software faster and can handle unstable requirements [11]? A. Waterfall Model vs. Agile Methods There are few similarities between waterfall model and agile methods in development phases. The quality produce by both of these methods are nearly similar. The major difference is in cost as agile methods are comparatively cheaper than waterfall model [11]. B. Cowboy Coding vs. Agile Methods Agile Methods generally follows a defined process which in absent in cowboy coding traditional method. The major difference is in the working approach of individual is completely opposite in these methods. Cowboy coding follow
3 individual driven activity and Agile Methods follow team or group driven activity. So the quality is more reliable in Agile Methods than cowboy coding, as customer satisfaction is also more in Agile methods [11]. Challenges in adoption of Agile Methods Agile methods have emerged as dramatically beneficial approach in SD industry. Also the demand of SD industry is changing due to several innovative technological changes. The existing organizations are forced to accept some Agile methods to serve their customer in better way as well as survive in highly competitive market. Due to established management structure and policies it has created many challenges for them to accepting Agile methods. Table II demonstrates that how characteristics of traditional methods and agile methods fall into contrast and create challenges for the organizations to adopt Agile methods [4], [12] - [14]. Table II: Traditional vs. Agile SD Methods Agile Methods Traditional Methods Iterative structure Life cycle based structure Lesser documentation Higher documentation Cooperative (Collaborative) management style Top to down hierarchy based management style Simple and easy for professions Continuous training required face to face communication & Quick decisions process Formal communication process leads to delay in decisions Last minutes changes possible Requires full customer specifications before SD starts People-oriented control practices Process-oriented control practices Customer involved at each phase of SD process Customer involved at first phase of SD process Object-oriented technology used Technology used based on needs Dynamic environment focus on meeting changing requirements Stable environment focus on producing quality product With respect to the question raised in beginning of this section, after analyzing all challenges as well as pros & cons, we can say that Agile methods are best suitable for small organizations and gives better quality product too, under certain management constraints. V. AGILE METHODS IN EDUCATION AND PROJECT MANAGEMENT A. Teaching Experience with Agile Methods Agile Methods are becoming famous day by day. SD industry has also accepted some of the Agile methods in practice. It is no longer to see that Agile methods will come as part of curriculum in Software or Technology related graduate programs. To serve the needs of industry in best way, some researcher (education providers) have did experiments as using Agile methods to working on small projects as a part of course assignment for students. Study shows that this approach increased overall result of students. Students felt more confident and gain knowledge as well as solved difficult problems by teamwork in lesser time. Pair programming worked well among students and all students contributed accordingly their skills which resulted better team output over individual work [15] [17]. B. Project Management and Agile methods Research indicates that Agile methods are not suitable for Project management as it focuses on people rather than process. Although, the success or failure dependents on characteristics of project like size, criticality & priority, people, processes and underlying objectives of project. Study shows that Agile methods can be successful with minimal risk for small project while for large project risk is very high. The iterative nature of Agile methods creates confusion. Ultimate decision should be taken by Project Manager based on his understanding of his team s skills and capabilities. If project needs dynamic changing throughout project with deep concern with customer than Agile methods are best suitable [1], [18]. Although many organizations have experienced benefits of Agile methods, more academic research should be done before using it for project management. Agile methods need more clarity in their applications and developers of Agile methods should focus on quality instead of quantity [18]. VI. NEEDS AND DEVELOPMENTS OF EMPLOYABILITY SKILLS The importance of Agile Methods in software engendering or SD industry has been discussed in this paper. Now as Agile methods work on the basic principles of team work and customer centric approach of working as well, some of the employability skills become essential among the professionals and IT graduates, who wish to work in this challenging environment. Some important employability skills and its correlation with Agile methods are described as follows: A. Communication Effective communication is highly desirable while using Agile methods for SD. For example, listening and understanding the needs of customers as well as ideas of coworkers become important to minimize the risk of misleading vital information. At the same time speaking, writing & reading skills and information sharing enhance the performance of individuals and the whole team too. The fresh IT graduates can develop these skills on primary level while studying and improve it further while working practically with Agile methods. Face to face communication among team members and also with customers give chance to improve these skills at various stages of SD. B. Team Work Team work is the foundation of success in Agile methods. Variety of people with different age, gender, race and religion are working in a team for a same objective(s) in Agile methods. As SD is truly wide industry and each individual have expertise in particular field, proper communication among all the team members leads towards timely success in their task. Appropriate outcome could be got while working in team, defining role of each individual based on their strengths
4 & skills and mutual leadership become vital. Individuals can boost their knowledge & skills by exchanging information among the team members. C. Problem Solving As customer remains involved throughout the SD process in Agile methods, problem solving skills are highly desirable among the professional involved in this process. The underlying reason behind this to increase the customer satisfaction as well as resolve the problems occurred during the life cycle of SD by providing creative and innovative solution. The SD professional use to work in team while using Agile methods, which also gives them chance to improve their problem solving skills. They can discuss the issues with other team members and use various problem solving strategies which can be formed after this kind of knowledge sharing. D. Self Management In Agile methods a big SD task has been divided into small teams. Each individual have their own specific task to complete. To fulfill these needs self management skill is highly needed in each personnel. They suppose to use their own thoughts and knowledge to come up with best possible solution for the problem allocated to them. Measuring their own performance by evaluating their work is preferable to solve the problem in timely manner. Also while working in this kind of environment for longer time, the individuals can increase their confidence and problem solving skills too. E. Planning and Organising Agile methods use iterations to finish the big task. Future work is dependent on the work done in previous iteration. As there is no team leader allocated for each teams, proper planning to finish the task become necessary. Each team should also have a backup plan to work in circumstances of emergency. The entire task has been done by the team members themselves which gives them learning opportunity of planning and organising at smaller scale. F. Technology Agile methods are used in SD industry. So knowledge of basic IT skills in team members is must. The individuals can enhance their skill set by approaching leaning attitude and use skills as management tool. Knowledge of Occupation Health & Safety could become added value in their skill set, which help them for optimum use of their technological knowledge and available resources. G. Learning Agile methods provide platform to share information and improve learning skills of software developers who are involve throughout the SD process. Willingness to learn and open ended behavior become primary needs to improve the learning skills of the individuals. For example, people in seniority have to consider the ideas of junior team member if they are more effective and direct to the point. On the other hand, enthusiastic people can adopt the new and innovative ideas from the other team members. IT industry is always like changing environment and knowledge of new software and developing languages become essential for every IT professional. So by developing the learning skill they can make sure that their knowledge is up to date and meets the latest industry requirement. H. Other Important Personal Attributes/Skills There are few more personal skills which are highly preferable and can be developed while working in SD industry using Agile methods. The people who are involved in the SD process should be honest, loyal and committed towards the task allocated to them. Management can make sure these qualities by providing attractive financial rewards/package to their team members. Adequate training and development programs can help to keep the enthusiasm of them at higher level and improve their presentation and make sure that they use the available recourses optimally. Agile methods are based on team work. So it helps to keep the positive self-esteem of individuals by solving their problems by discussing between the team members. To meet the timely requirement of whole SD project, team members can develop their ability to work in pressure and some time it s motivate them to achieve their goals in timely manner to get some financial incentive. VII. CONCLUSION While focusing on the whole software engineering industry, Agile methods seem useful for small and customer oriented organization. Agile software development methodologies are comparatively highly preferable in customize software development as customers are involved at every stage of development life cycle. On the other hand, traditional software development methods are more functional for predefined software needs. Agile methods can be more useful in service industry because of its basic characteristics. However, further extensive research is highly regarded on Agile methods to make them useful for complex projects. REFERENCES [1] M. Coram and S. Bohner, The impact of Agile Methods on software project management, Engineering of Computer-Based Systems: 12 th IEEE international conference and workshop, pp. 363-370, 2005. [2] Manifesto for Agile Software Development, viewed 19 th June 2009, <http://www.agilemanifesto.org>. [3] SCRUM, it s about Common Sense, viewed 19 th June 2009, <http://www.controlchaos.com/about>. [4] P. Abrahamsson, O. Salo, J. Ronkainen and J. Warsta, Agile software development methods: Review and Analysis, VTT Publications 478, Espoo 2002, viewed 20 th June 2009, < http://www.vtt.fi/inf/pdf/publications/2002/p478.pdf >. [5] J. A. Livermore, Factors that significantly impact the implementation of an Agile software development methodology, Journal of Software, vol. 3, no. 4, pp. 31-36, Apr. 2008. [6] A. Cockburn and J. Highsmith, Agile software development: the people factor, Computer, vol. 34, no. 11, pp. 131-133, Nov. 2001. [7] J. Highsmith and A. Cockburn, Agile software development: the business of innovation, IEEE/ IET electronic library, vol. 34, no. 9, pp. 120-122, 2001. [8] K. Conboy and B. Fitzgerald, Toward a conceptual framework of agile methods: a study of agility in different disciplines, Proceedings of the
2004 ACM workshop on interdisciplinary software engineering research, Newport Beach, CA, United States, pp. 37-44, 2004. [9] B. Boehm, Get ready for agile methods, with care, IEEE Computer, vol. 35, no. 1, pp. 64-69, 2002. [10] T. DeMarco and B. Boehm, The agile methods fray, IEEE Computer, vol.35, no.6, pp. 90-92, 2002. [11] M. Huo, J. Verner, L. Zhu and M. A. Babar, Software quality and Agile Methods, Computer Software and Application conference: Proceedings of the 28 th annual international, vol. 1, pp. 520 525, 2004. [12] S. Nerur, R. Mahapatra and G. Mangalaraj, Challenges of migrating to Agile methodologies, Communications of the ACM, vol. 48, no. 5, pp. 72-78, May 2005. [13] J. Livermore, Factors that significantly impact the implementation of an Agile software development methodology, Journal of Software, vol. 3, no. 4, pp. 31-36, 2007. [14] L. Cao and B. Ramesh, Agile software development: Ad hoc practices or sound principles?, IT professional, vol. 9, no. 2, pp. 41-47, 2007. [15] L. Sherrell and J. Robertson, Pair programming and agile software development: experiences in college setting, Journal of Computing Sciences in Colleges, vol. 22, no. 2, pp. 145-153, 2006. [16] A. Pletch and A. Agajanian, A software engineering project that looks like the real world, Journal of Computing Sciences in Colleges, vol. 22, no. 6, pp. 92-99, 2007. [17] N. LeJeune, Teaching software engineering practices with Extreme Programming, Journal of Computing Sciences in Colleges, vol. 21, no. 3, pp. 107-117, 2005. [18] P. Abrahamsson, J. Warsta, M. T. Siponen and J. Ronkainen, New directions on Agile methods: A Comparative analysis, Proceedings of the 25 th International Conference on Software Engineering, pp. 244-254, 2003. 5