Chapter 03
Chapter 03
using short iterations of 1 to 4 weeks so that the development process is aligned with
the changing business needs.
Agile Process: An agile software process is characterized in a manner that addresses
a number of key assumptions about the majority of software projects:
1. It is difficult to predict in advance which software requirements will persist
and which will change. It is equally difficult to predict how customer priorities
will change as the project proceeds.
2. For many types of software, design and construction are interleaved. That is,
both activities should be performed in tandem so that design models are
proven as they are created. It is difficult to predict how much design is
necessary before construction is used to prove the design.
3. Analysis, design, construction and testing are not as predictable.
How does well-designed agile process flatten the cost of change curve?
An agile process reduces the cost of change because software is released in
increments and change can be better controlled within an increment. Agility argue
that a well-designed agile process “flattens” the cost of change curve shown in the
following figure, allowing a software team to accommodate changes late in a
software project without dramatic cost and time impact. When incremental delivery
is coupled with other agile practices such as continuous unit testing and pair
programming, the cost of making a change is attenuated. Although debate about the
degree to which the cost curve flattens is ongoing, there is evidence to suggest that
a significant reduction in the cost of change can be achieved.
Scrum: Scrum is an agile software development method that was conceived by Jeff
Sutherland and his development team in the early 1990s. 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.
Sprint: Within each framework activity, work tasks occurs within a process pattern
called a sprint. The work conducted within a sprint is adapted to the problem at hand
and is defined and often modified in real time by the Scrum team.