Table 1

An overview of two common agile development methodologies, Extreme Programming and Scrum

The principles of the Agile Manifesto are applied in many different software development methodologies. Kent Beck's Extreme Programming is the most well known, but there are many others including Scrum, Crystal, FDD, DSDM [13] [28] [29] [30] [31]. The two methods that were most strongly reflected in our projects were Extreme Programming and Scrum. We briefly describe these methods here.

Extreme Programming

Kent Beck's Extreme Programming (XP) is one of the most well known, and also one of the most controversial of the agile methods. Beck took a number of well-known practices and "turned them up to 10" [13]. For example, in XP, peer reviews are implemented as pair programming, i.e. continuous peer review. The method assumes that software is being developed in a dynamic environment, so the software development approach needs to be able to adapt to this rapid change.

XP is organized around short iterations, typically one or two weeks long. Features in XP are described as user stories. Programmers estimate the effort to complete each story. Each iteration the customer gets an effort budget and selects a list of stories for implementation from the list of possible user stories. The customer bases the budget on the completed story velocity from the previous iteration. This means that, iteration by iteration, the customer directs the development team to work on the features most important and immediate to that customer.

The engineering practices of XP are notable as well. The method forgoes a distinct design phase in favor of an evolutionary design approach for the software. The approach focuses on informal communication rather than formal documentation. XP makes extensive use of automated unit and acceptance tests. Programmers run these executable tests throughout the development process. When developing new features, the development team uses "the simplest [design] that could possibly work" [13]. When adding a new feature that requires extension of the existing design, programmers refactor the code first to improve the design, and then add the new feature. Refactoring improves the internal design without changing the external behavior. The automated tests provide verification that the behavior of the code has not changed after refactoring. Developers using XP continually shift back and forth between refactoring activities and new feature development activities. XP uses the combination of testing and refactoring to make the software malleable to accommodate rapid requirements change.

Scrum

Scrum is an agile method that focuses on project management [28]. The key practices focus on management of feature backlogs. The mechanics of backlog management are similar to those found in XP, i.e. the customer regularly prioritizes features, and in each iteration the development team implements the top N features from the list. Iterations, called sprints, are 30 days long. In addition to selecting features for each sprint, the development team organizes several sprints into releases. Project managers use "burn down" charts to track progress within a sprint or a release. These charts provide a view of progress by plotting unimplemented features against time remaining in the sprint or release.

Another key practice in Scrum is the scrum meeting. A scrum meeting is a daily stand-up meeting for the development team. In the meeting, each member of the team reports what they did since the last scrum meeting, what work is planned before the next scrum meeting, and obstacles. The meeting is short and facilitates open and frequent communication in the team.

Scrum does not specify a particular engineering approach; the approach says nothing about testing or configuration management practices. Some groups apply XP-style engineering practices to complement their scrum practices, but other variants are common as well.


Kane et al. BMC Bioinformatics 2006 7:273   doi:10.1186/1471-2105-7-273

Open Data