Agile
Agile
Motivated people use collaboration in a way that multiplies their talent and
creative output beyond their absolute numbers. This approach is a recurring
theme in all agile methods. But collaboration is not easy. It encompasses
communication and teamwork, but it also emphasizes individualism, because
individual creativity plays an important role in collaborative thinking. It is,
above all, a matter of trust.
People working together must trust one another to (1) criticize without
animosity, (2) assist without resentment, (3) work as hard as or harder than they
do, (4) have the skill set to contribute to the work at hand, and (5) communicate
problems or concerns in a way that leads to effective action.
As members of an ASD team begin to develop the components that are part of
an adaptive cycle, the emphasis is on “learning” as much as it is on progress
toward a completed cycle. In fact, Highsmith [Hig00] argues that software
developers often overestimate their own understanding (of the technology, the
process, and the project) and that learning will help them to improve their level
of real understanding.
ASD teams learn in three ways: focus groups ,technical reviews and project
post-mortems. The ASD philosophy has merit regardless of the process model
that is used. ASD’s overall emphasis on the dynamics of self-organizing teams,
interpersonal collaboration, and individual and team learning yield software
project teams that have a much higher likelihood of success.
Scrum :
Scrum is an agile software development method.
Scrum principles are consistent with the agile manifesto and are used to guide
development activities within a process that incorporates the following
framework activities:
requirements analysis, design, evolution, and delivery.
Within each framework activity, work tasks occur within a process pattern called
a sprint.
The work conducted within a sprint (the number of sprints required for each
framework activity will vary depending on product complexity and size) is
adapted to the problem at hand and is defined and often modified in real time by
the Scrum team.
The overall flow of the Scrum process is illustrated in Figure.
Scrum emphasizes the use of a set of software process patterns that have proven
effective for projects with tight timelines, changing requirements, and business
criticality.
Each of these process patterns defines a set of development actions:
• Backlog—a prioritized list of project requirements or features that provide
business value for the customer.
• Items can be added to the backlog at any time .
• The product manager assesses the backlog and updates priorities as
required.
• Sprints—consist of work units that are required to achieve a requirement
defined in the backlog that must be fit into a predefined time-box
(typically 30 days).
• Changes (e.g., backlog work items) are not introduced during the sprint.
Hence, the sprint allows team members to work in a short-term, but stable
environment.
Three key questions are asked and answered by all team members:
• What did you do since the last team meeting?
• What obstacles are you encountering?
• What do you plan to accomplish by the next team meeting?
A team leader, called a Scrum master, leads the meeting and assesses the
responses from each person.
The Scrum meeting helps the team to uncover potential problems as early as
possible.
Also, these daily meetings lead to “knowledge socialization” and thereby
promote a self-organizing team structure.
In some cases, functional model iteration and design and build iteration occur
concurrently.
Implementation—places the latest software increment (an “operationalized”
prototype) into the operational environment.
It should be noted that
(1) the increment may not be 100 percent complete or
(2) changes may be requested as the increment is put into place.
In either case, DSDM development work continues by returning to the
functional model iteration activity.
DSDM can be combined with XP to provide a combination approach
that defines a solid process model (the DSDM life cycle) (XP) that are required
to build software increments.
In addition, the ASD concepts of collaboration and self-organizing teams can be
adapted to a combined process model.
Crystal
Alistair Cockburn and Jim Highsmith created the Crystal family of
agile methods in order to achieve a software development approach that puts a
premium on “manoeuvrability” during what Cockburn characterizes as “a
resource limited, cooperative game of invention and communication, with a
primary goal of delivering useful, working software and a secondary goal of
setting up for the next game”.
To achieve manoeuvrability, Cockburn and Highsmith have defined a set of
methodologies, each with core elements that are common to all, and roles,
process patterns, work products, and practice that are unique to each. The
Crystal family is actually a set of example agile processes that have been proven
effective for different types of projects. The intent is to allow agile teams to
select the member of the crystal family that is most appropriate for their project
and environment.