Workflow Tools
Agile workflow tools help teams
plan, manage, and orchestrate management and technical activity associated with
agile methods. In general, these tools automate the process of planning and
managing agile projects. Many traditional tools focus on a narrow aspect of
project management such as scheduling. Agile workflow tools, however, cover a
broader array of management tasks, including release and iteration plans, user
stories, development tasks, and unit and acceptance tests. They even help
manage a flexible form of earned value management called burn down charts.
There is a balance of commercial and open source workflow tools
for agile methods, ranging from sophisticated web-based applications to simple
wikis and specialized utilities. Although the majority of the tools provide
support for Extreme Programming and Scrum, there is support for other types of
agile methods. Two of the most popular tools—Version One and Rally—provide
support for both release and iteration planning. They also help project teams
track user stories, developer velocity, and burn down rates. However, simple
wikis are powerful tools for sharing information and should not be overlooked
to offer support to project management.
There are multiple workflow tools to support project management
within agile methods. One of the most basic tools is a whiteboard, often called
an information radiator. Another major tool is a wiki, which is useful in
small, medium, and large distributed settings. A third type of tool is a
multi-faceted, web-based work-flow tool for coordinating the work of large,
often virtually distributed teams, such as Version One and Rally. The latter
has facilities to plan projects, execute and enforce activity workflow, and
provide a picture of a project's current state. Agile methods use right-sized,
just-enough, and just-in-time workflow tools to maximize business value.
Collaboration Tools
Agile collaboration tools help teams interact, communicate, and
share information necessary for implementing user stories. In general, these
tools help small teams communicate and collaborate with one another to
accomplish their tasks. Many traditional tools focus on a narrow aspect of
collaboration, such as a message board, for posting questions and answers,
email, or chatting. Agile collaboration tools, however, provide support for a
broader array of collaboration tasks, including voice communications, video
conferencing, and virtual software design and development.
There are numerous commercial and open source collaboration tools
for agile methods, ranging from sophisticated voice and video applications to
wikis. Simple, common, and powerful tools, wikis enable teams to communicate
user stories, development tasks, and implementation status. Social networking
sites enable teams to share personal data, form trust, establish team cohesion,
and improve communication. Some important
tools support video and voice communications that are necessary so that teams
can leverage the skills of an entire team to solve problems, share the
workload, and build trust.
There are multiple collaboration tools to support teamwork within
agile methods. Simply talking to another person is one of the most powerful
means of human communication, and the telephone is one of the most basic tools
for this purpose. Another important element in agile methods is interpersonal
trust. Sharing personal data with one another helps build trust, as do social
networking sites. Additionally, video conferencing is an important tool in
agile methods so that one or more people may work together to solve difficult
problems. Agile methods use right-sized, just-enough, and just-in-time
collaboration tools to maximize business value.
Development Tools
Agile development tools help teams with design, development, and
testing; create working software; and satisfy user stories. In general, these
tools help teams with the technical aspects of software development, such as
programming and coding. Many traditional tools focus on a narrow aspect of
development—editing, compiling, debugging, and making files. Agile development
tools, however, provide support for a broader array of development tasks,
including graphical interfaces, modelling tools, visual editors, code
interpreters, incremental compilation, and reuse libraries.
There are a variety of commercial and open source development
tools for agile methods, ranging from sophisticated application development
systems to simple support environments. Commercial application development
systems provide compilers and interpreters for multiple languages, graphical
user interfaces, modelling tools, databases, and a limitless array of features
such as Visual Studio. Open source support environments provide simple modelling
tools, graphical editors, debuggers, and reusable frameworks such as Eclipse.
Commercial tools support proprietary systems, whereas open source tools support
multiple platforms.
There are multiple development tools to support the creation of
working software in agile methods. One of the most basic tools may be a
proprietary or non-proprietary compiler and rudimentary development toolset.
The focus of agile methods is to create working software every 14 to 30 days.
Because the members of the teams using agile methods must be highly skilled
programmers, they need robust development environments, whether commercial or
open source, to create complex applications in short order. Agile methods use
right-sized, just-enough, and just-in-time development tools to maximize
business value.
Support Tools
Agile support tools help teams build and verify working code every
14 to 30 days by providing support for development activities. In general,
these tools help teams with direct technical
and administrative support for programming and testing. Whereas traditional
tools focus on loosely coupled and disconnected code analysis, testing, and
version control tools, agile support tools provide a broader array of
integrated and streamlined processes and tools. This includes built-in code
analysis, automated unit and system tests, complete build automation, and
continuous integration.
There are a variety of commercial and open source support tools
for agile methods, ranging from sophisticated build automation tools to simple
but well-integrated services. Commercial tools provide a variety of code
coverage tools, automated testing frameworks, and configuration management
systems for end-to-end build automation. Open source tools also provide
building blocks for code coverage analysis, unit testing, and build automation.
The importance of support tools for agile methods cannot be overstated. In
traditional methods, these functions are completed manually by separate
organizations.
In agile methods, multiple support tools provide direct support
for the creation of working software. Automated testing frameworks and simple
open source utilities are the most commonly used tools. Many teams know the
importance of commercial solutions that provide well-integrated code analysis,
testing, and build automation. The mantra of agile methods is to produce
working code in 14- to 30-day iterations. Developers must be highly skilled in
programming as well as in the use of support tools. Agile methods use
right-sized, just-enough, and just-in-time support tools to maximize business
value.