The
Agile Methodology
The sequence of the development phases, as shown in Figure 1
earlier, are essentially the same. However, Agile is an iterative, team-based
approach to development. This approach emphasizes the rapid delivery of an application
in complete functional components. Rather than creating tasks and schedules, all
time is "time-boxed" into phases called "sprints." Each sprint has a defined duration
(usually in weeks) with a running list of deliverables, planned at the start of
the sprint. Deliverables are prioritized by business value as determined by the
customer. If all planned work for the sprint cannot be completed, work is reprioritized
and the information is used for future sprint planning.
As work is completed,
it can be reviewed and evaluated by the project team and customer, through daily
builds and end-of-sprint demos. Agile relies on a very high level of customer
involvement throughout the project, but especially during these reviews.
Some
advantages of the Agile approach:[7]
- The customer has frequent and early opportunities to see the work being delivered,
and to make decisions and changes throughout the development project.
- The
customer gains a strong sense of ownership by working extensively and directly
with the project team throughout the project.
- If time to market for a
specific application is a greater concern than releasing a full feature set at
initial launch, Agile can more quickly produce a basic version of working software
which can be built upon in successive iterations.
- Development is often
more user-focused, likely a result of more and frequent direction from the customer.
Some
disadvantages of the Agile approach:
- The very high degree of customer
involvement, while great for the project, may present problems for some customers
who simply may not have the experience, time or interest for this type of participation.
- Agile
works best when development team members are fully dedicated to the project.
- Because
Agile focuses on time-boxed delivery and frequent reprioritization, it is possible
that some items set for delivery will not be completed within the allotted timeframe.
Additional sprints (beyond those initially planned) may be needed, adding to the
project cost. In addition, customer involvement often leads to additional features
requested throughout the project. Again, this can add to the overall time and
cost of the project as compared to its business case.
- The close working
relationships required in an Agile project are more easily managed when the team
members are located in the same physical space. This is not always possible, but
there are a variety of ways to handle this issue, such as webcams, collaboration
tools, etc.
- The iterative nature of Agile development may lead to a frequent
refactoring if the full scope of the system is not considered in the initial architecture
and design. Without this refactoring, the system can suffer from a reduction in
overall quality. This becomes more pronounced in larger-scale implementations,
or with systems that include a high level of integration.
7.
For more Agile Development benefits, please see 8
Benefits of Agile Software Development
|