Agile Development: Low-Ceremony, Iterative Approaches

The Agile Development Movement has become increasingly popular, especially among individual developers and small teams , and is growing in popularity. Some of the agile approaches are XP, Scrum, and Adaptive Development. Note that we purposely left the RUP approach out of this list ”we will come back to the RUP later in this chapter.

Agile development makes some sacrifices in terms of ceremony and rigor, in return for flexibility and the ability to adapt to evolving business environments. It places greater value on producing working software rather than creating extensive and comprehensive documentation. Instead of working from a rigid development plan, one of agile development's main tenets is respond to changes that occur during the process . This doesn't mean that plans and documentation are unimportant ”they just aren't as important as ensuring that the software works or adapting plans to reality and changing needs.

XP, Scrum, Crystal, and Adaptive Development grew popular in the late 1990s, but they are primarily built on best practices that have been around for many years , such as iterative development, continuous integration, strong focus on executable software rather than byproducts, refactoring, use of coding standards, and user stories. As an example, iterative development has been around since the mid-1980s, [7] and for many years Rational Software has actively promoted [8] , [9] iterative development with a strong focus on executable software rather than byproducts. The Agile Movement has done an excellent job promoting and popularizing these best practices and has introduced some of its own such as pair programming and test-first design . The Agile Movement has also done an excellent job of minimizing the ceremony surrounding software development, making sure that the primary focus is on software and not on supporting artifacts.

[7] See Boehm 1986.

[8] See Booch 1996.

[9] See Kruchten 1996.

Perhaps one of the Agile Movement's most significant contributions has been the acceptance of concepts such as "process" and "best practices" by development camps that previously frowned upon them! Process has become "cool," and developers acknowledge the value of learning from others' experiences.

So where do agile processes fit on our process map? Figure 3.2 places all agile processes in the lower left quadrant because they are iterative, low-ceremony approaches that produce minimal documentation.

Figure 3.2. Agile Processes on the Process Map. Agile development processes are characterized by a highly iterative approach using a minimum of documentation and formalism, which makes them ideal for smaller, less-complex projects. Some agile approaches have additional guidelines for more complex projects, making them higher ceremony.

graphics/03fig02.gif

Since the Agile Movement is only a few years old, many of the agile approaches are new and unproven and don't yet provide much guidance on practical implementation. Consequently, many organizations struggle with effectively applying these methods .

Some agile processes, such as XP, Scrum, and Crystal [10] are now being used for bigger and more complex projects. As project sizes increase, more and more guidance is required for successful project execution. If we translate this onto our process map, we see that using agile processes for increasingly complex projects requires additional guidance and more ceremony, thus shifting the process to the right, which corresponds with high ceremony (see Figure 3.2).

[10] Crystal is a family of processes. Figure 3.2 shows where Crystal Lite is on the map, and the arrow indicates where higher ceremony versions of Crystal reside on the map. Crystal is one of several agile processes moving toward higher ceremony versions.



The Rational Unified Process Made Easy(c) A Practitioner's Guide to Rational Unified Process
Programming Microsoft Visual C++
ISBN: N/A
EAN: 2147483647
Year: 2005
Pages: 173

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net