Agile Software Development

Contents

Articles Papers Books Resources

Articles

[Ambler00] Ambler, S. (November 2000) Extreme Modeling. Software Development Magazine.

[Ambler01] Ambler, S. (April 2001) A Closer Look at Extreme Modeling. Software Development Magazine.

[Canter01]Canter, James A. and Derr, Liz (2001) A Case Study in Extreme Quality Assurance (XQA). .

[Cohn03] Cohn, Mike & Ford, Doris (2003) Introducing an Agile Process to an Organization . IEEE Computer.pp. 74-78.

Abstract:

The transition from a plan-driven to an agile process affects not only the development team members, but also other teams, departments, and management. Any new process will likely attract developers excited to try it while repelling those opposed to change. Thus, how an agile process is introduced into an organization significantly affects its ultimate success.

[Collins01] Collins, C. & Miller, R. (2001) XP Distilled. .

[Cockburn01] Cockburn, A. and Highsmith, J. (Nov. 2001) Agile Software Development: The People Factor. Computer, pp. 131-133.

[Duncan01] Duncan, R. (June 2001) The Quality of Requirements in Extreme Programming. CrossTalk.

Abstract:

Extreme Programming (XP) is a software process methodology that nominates writing code as the key activity throughout the development process. While at first glance this sounds chaotic, a disciplined group utilizing XP performs sufficient requirements engineering. This paper describes and evaluates the quality of requirements generated by an ideal group using XP and discusses how the XP process can assist or hinder proper requirements engineering.

[Fowler01] Fowler, M. & Highsmith, J. (August 2001) The Agile Manifesto. Software Development Magazine.

[Glazer01] Glazer, H. (November 2001) Dispelling the Proces Myth: Having a Process Does not Mean Sacrificing Agility or Creativity. CrossTalk.

Abstract:

Many process-oriented software developers (some of whom use the CMM) think of Extreme Programming (XP) as a "seat-of-the-pants" development method. Many high-speed cutting-edge developers (whether they use XP methods or not) see CMM as a cumbersome unnecessary impediment to developing software quickly. This is the result of a myth: Software development speed must be sacrificed when following a process-disciplined approach (such as CMM). This myth is defeated when we look at two realities: The CMM is tailorable, and XP is disciplined. An alternate look at the realities helps open up a new possible approach so that these methods can work together. This article puts forth ideas to bridge the gap between the two sides using the suggested approach, and concludes that process discipline can be achieved without sacrifice to the speed of development.

[Highsmith02] Highsmith, J. (June 2002) Does Agility Work?. Software Development Magazine.

[Highsmith01] Highsmith, J. & Cockburn, A. (Sept. 2001) Agile Software Development: The Business of Innovation. Computer, pp. 120-122.

[IBMDeveloperWorks00] IBM Developer Works Staff (2000) What are your thoughts on Extreme Programming? .

[Keefer02] Keefer, G. (2002) Extreme Programming Considered Harmful for Reliable Software Development. AVOCA.

[Larman03] Larman , CraigVictor R. Basili (2003) Iterative and Incremental Development: A Brief History. IEEE Computer, pp. 47-56.

Abstract:

Although many view iterative and incremental development as a modern practice, its application dates as far back as the mid-1950s. Prominent software-engineering thought leaders from each succeeding decade supported IID practices, and many large projects used them successfully. These practices may have differed in their details, but all had a common themeˇX to avoid a single-pass sequential, document-driven, gated-step approach.

[Leishma01] Leishma, T. (June 2001) Extreme Methodologies for an Extreme World . .

Abstract:

The world we live in today demands greater availability of decision-making information. The use of cell phones, hand held computers, online banking, and internet stock trading are only a few examples of this demand for timely information. Information Technology organizations are feverishly scrambling in an attempt to gain ground on the ever increasing demand for their services. This article takes a glimpse into the software development methodologies that are being applied in an attempt to catch up in the rapidly changing world in which we live. A brief insight into traditional development methods will be followed by an analysis of the principles underlying the new, less traditional methods. These newer, extreme methodologies share many common characteristics, which will be identified and discussed. An analysis will also be made of the ability of extreme methodologies to meet the rigor demanded by the Software Capability Maturity Model.

[Morales02] Morales, Alexandra Weber (January 2002) Going to Extremes. Software Development Magazine.

[Nelson02] Nelson, E. (2002) Extreme Programming versus Interaction Design. Fawcette Technical Publications.

[Rasmusson03] Rasmusson, Jonathan (2003) Introducing XP into Greenfield Projects: Lessons Learned . IEEE Software, pp. 21-28.

Abstract:

In this article, the author shares how ThoughtWorks introduced Extreme programming into an organization and successfully completed a bleeding-edge technology project with client staff that had no previous experience using an Agile development approach. This article illustrates not only how XP helped make the project a success, but also provides other valuable lessons learned regarding the introduction of XP at client sites.

[Stephens01a] Stephens, M. (August 2001) The Case Against Extreme Programming. .

[Wells] Wells, J. () Extreme Programming a Gentle Introduction.

Papers

[Abrahamsson03] Pekka Abrahamsson, Juhani Warsta, Mikko T. Siponen & Jussi Ronkainen (2003) New Directions on Agile Methods: A Comparative Analysis. ICSE 2003, Pages: 244-254.

Abstract:

Agile software development methods have caught the attention of software engineers and researchers worldwide. Scientific research is yet scarce. This paper reports results from a study, which aims to organize, analyze and make sense out of the dispersed field of agile software development methods. The comparative analysis performed using the method's life-cycle coverage, project management support, type of practical guidance, fitness-for-use and empirical evidence as the analytical lenses. The results show that agile software development methods, without rationalization, cover certain/different phases of the software development life-cycle and most of them do not offer adequate support for project management. Yet, many methods still attempt to strive for universal solutions (as opposed to situation appropriate) and the empirical evidence is still very limited Based on the results, new directions are suggested In principal it suggested to place emphasis on methodological quality not method quantity.

[Abrahamsson02] Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002) Agile Software Development Methods: Review and Analysis. ESPOO 20002. VTT Publications 478.

Abstract:

Agile - denoting "the quality of being agile; readiness for motion; nimbleness, activity, dexterity in motion" - software development methods are attempting to offer an answer to the eager business community asking for lighter weight along with faster nimbler software development processes. This is especially the case with the rapidly growing and volatile Internet software industry as well as for the emerging mobile application environment. The new agile methods ahve evoked a substantial amount of literature and debates. However, academic research on the subject is still scarece, as most of existin publicatons are written by practitioners or consultants.

The aim of this publication is to beginn filling this gap by systematically reviewing the existing literature on agile software development methodologies. This publicatioin has three purposes. First, it roposes a definition and a classifiaction of agile sfotware development approaches. Second, it analyses ten software development methods that can be characterized as being "agile" against the defined criteria. Third, it compares these methods and highlights their similarities and differences. Based on this analysis, future research needs are identified and discussed.

[Boehm02] Boehm, B. (Jan. 2002) Get Ready for Aigle Methods, with Care. Computer, pp. 64-69.

[Chau04] T. Chau, F. Maurer (2004) Knowledge Sharing in Agile Software Teams. Proceedings Symposium Logic versus Approximation, Springer, 2004.

Abstract:

Traditionally, software development teams follow Tayloristic approaches favoring division of labor and, hence, the use of role-based teams. Role-based teams require the transfer of knowledge from one stage of the development process to the next. As multiple stages are involved, the problem of miscommunication due to indirect and long communication path is amplified. Agile development teams address this problem by using cross-functional teams that encourages direct communication and reduces the likelihood of miscommunication. Agile approaches usually require team members to be co-located and only facilitate intra-team learning. To overcome the restriction in colocation and support organizational inter-team learning while supporting the social context critical to the sharing of tacit knowledge is the focus of this paper. We also highlight that humans are good at making sense of incomplete and approximative information.

[Chau03] T. Chau, F. Maurer, G. Melnik (2003) Knowledge Sharing: Agile Methods vs. Tayloristic Methods. Proc. WETICE 2003, IEEE 2003 .

Abstract:

This paper presents a comparative analysis of knowledge sharing approaches of agile and Tayloristic (traditional) software development teams. Issues of knowledge creation, knowledge conversion and transfer, continuous learning, competence management and team composition are discussed. Experience repositories and other tools for knowledge dissemination are examined.

[Gittins01] Robert Gittins & Sian Hope (2001) A study of Human Solutions in eXtreme Programming. 13th Workshop of the Psychology of Programming Interest Group, Bournemouth UK, April 2001.

Abstract:

This paper develops the use of 'guided interviews' and questionnaires in an empirical study of a small software development company. In particular, the study identified a number of human issues in communications, technology, teamwork and political factors that significantly influenced the implementation and evolution of eXtreme programming into a software development team.

[Glass01] Robert L. Glass (2001) Extreme Programming: The Good, the Bad, and the Bottom Line. IEEE Software, November/December 2001, pp. 112, 111.

[Grenning01] James Grenning (2001) Launching Extreme Programming at a Process-Intensive Company. IEEE Software, November/December 2001, pp. 27-33.

[Hedin03] Görel Hedin, Lars Bendix, & Boris Magnusson (2003) Introducing software engineering by means of Extreme Programming. ICSE 2003, Pages: 586 - 593.

Abstract:

This paper reports on experience from teaching basic software engineering concepts by using Extreme Programming in a second year undergraduate course taken by 107students. We describe how this course fits into a wider programme on software engineering and technology and report our experience from running and improv- ing the course. Particularly important aspects of our setup includes team coaching (by older students) and "team- in-one-room "'. Our experience so far is very positive and we see that students get a good basic understanding of the important concepts in software engineering, rooted in their own practical experience.

[Holmberg01] Lena Holmberg, Lars Mathiassen (2001) Survival Patterns in Fast-Moving Software Organizations. IEEE Software, November/December 2001, pp. 51-55.

[Lindvall02] Lindvall, Mikael, Vic Basili, Barry Boehm, Patricia Costa, Kathleen Dangle, Forrest Shull, Roseanne Tesoriero, Laurie Williams, & Marvin Zelkowitz (2002) Empirical Findings in Agile Methods. Proceedings of Extreme Programming and Agile Methods - XP/Agile Universe 2002, pp. 197-207.

Abstract:

In recent years, the use of, interest in, and controversy about Agile methodologies have realized dramatic growth. Anecdotal evidence is rising regarding the effectiveness of agile methodologies in certain environments and for specified projects. However, collection and analysis of empirical evidence of this effectiveness and classification of appropriate environments for Agile projects has not been conducted. Researchers from four institutions organized an eWorkshop to synchronously and virtually discuss and gather experiences and knowledge from eighteen Agile experts spread across the globe. These experts characterized Agile Methods and communicated experiences using these methods on small to very large teams. They discussed the importance of staffing Agile teams with highly skilled developers. They shared common success factors and identified warning signs of problems in Agile projects. These and other findings and heuristics gathered through this valuable exchange can be useful to researchers and to practitioners as they establish an experience base for better decision making.

[Melnik03] G. Melnik, F. Maurer (2003) Introducing Agile Methods in Learning Environments: Lessons Learned. Proceedings XP Agile Universe 2003, Springer 2003, p. 187-198.

Abstract:

This paper describes the experiences of introducing agile methods in four different academic programs (Diploma, Applied Bachelorˇ¦s, Bachelorˇ¦s and Masterˇ¦s) in two institutions during two academic years. It contains suggestions and techniques for bringing agile methods into curriculum. Based on overwhelmingly positive studentsˇ¦ experiences this report should encourage other academics that are considering introducing agile methods in their software engineering courses.

[Melnik02] G. Melnik, & F. Maurer (2002) Perceptions of Agile Practices: A Student Survey. Proceedings Agile Universe/ XP Universe 2002, Springer, 2002 .

Abstract:

The paper reports on the results of a recent study on student perceptions on agile practices. The study involved forty-five students enrolled in three different academic programs (Diploma, Bachelorˇ¦s and Masterˇ¦s) in two institutions to determine their perceptions of the use of extreme programming practices in doing their design and coding assignments. Overwhelmingly, studentsˇ¦ experiences were positive and their opinions indicate the preference to continue to use the practices if allowed.

[Muller02] Matthias M. Müller & Oliver Hagner. (2002) Experiment about Test-first Programming. .

Abstract:

Test-first programming is one of the central techniques of Extreme Programming. Programming test-first means (1) write down a test-case before coding and (2) make all the tests executable for regression testing. Thus far, knowledge about test-first programming is limited to experience reports. Nothing is known about the benefits of test-first compared to traditional programming (design, implementation, test). This paper reports about an experiment comparing test-first to traditional programming. It turns out that test-first does not accelerate the implmeentation and the resulting programs are not more reliable but test-first seems to support better program understanding.

[Muller01] Matthias M. Müller & Walter F. Tichy. (2001) Case Study: Extreme Programming in a University Environment. .

Abstract:

Extreme Programming (XP) is a new and controversial software process for small teams. A practical training course at the university of Karlsruhe led to the following observations about the key practices of XP. First, it is unclear how to reap the potential benefits of pair programming, although pair programming produces high quality code. Second, designing in small increments appears problematic but ensures rapid feedback about the code. Third, while automated testing is helpful, writing test cases before coding is challenge. And last, it is difficult to implement XP without coaching. This paper also provides some guidelines for those starting out with XP.

[Paulk01] Mark C. Paulk (2001) Extreme Programming from a CMM Perspective. IEEE Software, November/December 2001, pp. 19-26.

[Poole01] Charles Poole, Jan Willem Huisman (2001) Using Extreme Programming in a Maintenance Environment. IEEE Software, November/December 2001, pp. 42-50.

[Prechelt01] Lutz Prechelt (2001) Accelerating Learning from Experience: Avoiding Defects Faster. IEEE Software, November/December 2001, pp. 56-61.

[Schneider03] Jean-Guy Schneider, Lorraine Johnston (2003) eXtreme Programming at universities: an educational perspective. ICSE 2003, Pages: 594 - 599.

Abstract:

To address the problems of traditional software devel- opment, recent years have shown the introduction of more light-weight or "agile" development processes (eXtreme Programming being the most prominent one). These pro- cesses are intended to support early and quick production of working code by structuring the development into small release cycles and focus on continual interaction between developers and customers. As such software development processes become more popular, there is a growing demand from industry to introduce agile development practices in tertiary education.

This is not a straightforward task as the corresponding practices may run counter to educational goals or may not be adjusted easily to a learning environment. In this paper, we discuss some of these issues and reflect on the problems of teaching agile processes in tertiary education.

[Schuh01] Peter Schuh (2001) Recovery, Redemption, and Extreme Programming. IEEE Software, November/December 2001, pp. 34-41

Books

[Auer02] Ken Auer, Roy Miller. (2002) Extreme Programming Applied: Playing to Win. Addison-Wesley.

[Beck00] Kent Beck. (2000) Extreme Programming Explained : Embrace Change. Addison-Wesley.

[Beck01] Kent Beck, Martin Fowler. (2001) Planning Extreme Programming. Addison-Wesley.

[Cockburn02] Alistair Cockburn. (2002) Agile Software Development: Software Through People. Addison-Wesley.

[Highsmith99] James A Highsmith III. (1999) Adaptive Software Development. Dorset House.

[Highsmith02] James A Highsmith III. (2002) Adaptive Software Development Ecosystems. Addison-Wesley.

[Jeffries01] Ron Jeffries, Ann Anderson, Chet Hendrickson. (2001) Extreme Programming Installed. Addison-Wesley.

[Martin03] Robert Martin (2003) Agile Software Development. Prentice Hall.

[Newkirk01] James W. Newkirk, Robert C. Martin. (2001) Extreme Programming in Practice . Addison-Wesley.

[Succi01] Giancarlo Succi, Michele Marchesi. (2001) Extreme Programming Examined. Addison-Wesley.

[Wake02] William C. Wake. (2002) Extreme Programming Explored. Addison-Wesley.

Resources

Agile Alliance

The AgileAlliance is a non-profit organization dedicated to promoting the concepts of agile software development, and helping organizations adopt those concepts.

Agile Modeling.

Agile Modeling (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.

Extreme Programming

Object Mentor

Pair Programming

Pair Programming Bibliography

XProgramming.com
On XProgramming.com, you'll find current articles about the state of XP, techniques, tips, and experience reports. You'll find XP-oriented testing frameworks and software. You'll find historically significant documents like the original C3 papers, which now seem harsh and overstated, but which capture the spirit of that exciting first XP project. And you'll find passionate -- and sometimes, we hope, humorous -- expression of what XP means to people who care about it.

Last updated: June 4, 2004

Comments should be sent to

Richard Upchurch (rupchurch@umassd.edu)

Computer and Information Science Department
University of Massachusetts Dartmouth
285 Old Westport Rd.
N. Dartmouth, MA 02747-2300