Discussions on agile software development methodologies have a tendency to develop into an argument between proponents of agile methods and proponents of more traditional process-oriented methodologies. The terminology used in these debates is often unhelpful, and in many cases are inaccurate and biased representations. It needs to be accepted that there are no “silver bullets” providing universal solutions (Jeffries, 2001). Bearing this in mind, the decision to adopt a particular software development methodology is a difficult one, and the decision to choose an agile method is no exception. In theory, as in practice, definitions and descriptions of the various agile methods are presented, yet the factors considered in the decision to adopt, or not adopt, an agile method are not addressed. While agile methodologies try to avoid the excessive use of procedures or tools (Beck & Fowler, 2001), one agile methodology, dynamic systems development method (DSDM), does recommend the use of appropriate tools during the development process (Coesmans, 2003). However, it appears that none of the available agile methodologies suggest a tool to assist decision makers at the project initiation phase, therefore, the debate on agile suitability is usually a debate on agile versus traditional methods (DeMarco & Boehm, 2002), rather than an examination of the suitability of agile methods for a particular project. While the “agile debate” rages, individual projects are not adequately assessed prior to the adoption of a method.
To describe the agile method is a misnomer. The agile software development method does not exist; it is instead a collection of methodologies with common core values, where examples of agile approaches include: Extreme Programming (XP); Crystal Methods; SCRUM1; DSDM; Feature Driven Development (FDD); and Adaptive Software Development (ASD) (Highsmith, 2001; Sutherland, 2001). For many proponents of the agile methodologies, the epoch of the agile movement was February 11th, 2001, when representatives of the different agile methodologies convened in the mountains of Utah to create the “Manifesto for Agile Software Development.”
The agile manifesto is a collection of values that underlie all agile methodologies:
Individuals are more important than processes and tools.
Working software is more important than comprehensive documentation.
Customer collaboration is more important than contract negotiation.
Responding to change is more important than following a plan.
Therefore, agile methods are a response to the inability of traditional methods to embrace change in a turbulent business environment that demands software to meet its needs quickly (Highsmith & Cockburn, 2001), and Rising and Janoff (2000) describe it as the need to “meet customer needs and turn this chaos to our advantage” (p. 3). The manifesto, its origins, and its importance to the agile methods are discussed in a variety of research including: Boehm and Turner (2003, 2004); Fowler and Highsmith (2001); Highsmith (2004); Koch (2004); and Lindvall et al. (2002).Top
Viability Of Adopting An Agile Approach
Throughout the available literature relating to agile methodologies, factors important to the success of an agile project are discussed, yet these factors are not specifically used to determine the viability of adopting an agile approach. For example, the agile manifesto, described in Abrahamsson, Salo, Ronkainen, and Warsta (2002), is a list of aspirations or ideals, and as such is not readily quantifiable as a method of adoption assessment. However, some researchers have provided a number of approaches to assessing various aspects of suitability for agile.
Key Terms in this Chapter
Software: Development Methodology: A codified set of practices that are adhered to, to ensure a successful project.
Agile Approach: The primary goal of agile approaches is to ensure adaptability in the ever changing environment that teams operate in, to ensure quick delivery of product to the customer, matching the customer’s requirements.
Software Development Project: A temporary endeavour undertaking the creation of a unique software solution for a customer.
Agile Manifesto: The Agile Manifesto is a list of four values that the different agile methods consider to be their common core values.
Adoption Decision: The decision to adopt a methodology where the various relevant factors are considered and discussed to determine the viability of adoption.
Disciplined Approach: These approaches utilise standards and processes to ensure conformance to acceptable standards and best practices. The primary goal is to ensure delivery of software products of high quality.
Life Critical Projects: The criticality of the project is determined by its impact on its users, rather than the impact on the development organization. There are degrees of criticality with life critical at one extreme (life critical implying the potential loss of life through malfunctioning of the software product) or at the other extreme the effect on the comfort of the user (a poorly designed screen causing eyestrain).