The definition of Sequential
as per the new Oxford American dictionary:
Forming or following in a logical order or sequence: series of sequential steps.
The figure below shows a simple sequence of five
steps.
Typically a software project goes through the following steps sequentially:
analysis, design, coding, testing, and deploying. The figure below depicts
these software development stages through its typical sequential order. In this
figure, the first letter is used to identify each development stage: Analysis,
Design, Coding, Testing, and Ready to go (deploy).
Another major difference between Agile and traditional
software development is on the way the work is distributed among the
development steps. At any moment, an Agile team will be working on all the
development stages. The team is concurrently analyzing, designing, coding,
testing, and deploying. And this is only possible because Agile requirements
are attacked in small pieces, as described above.
For a typical traditional software project the
requirements move as a block through each development stage. Each stage of work
will go on for a large amount of time-- somewhere in the order of weeks or
months. For example, Paulo has worked on traditional software development with
schedules like this: one month of analysis, one month of design, two months of
coding, one month of testing, and one month of putting it all together in order
to deploy it.
In the traditional software development, the system is
only available at the end of the last stage. The figure below shows when the
business gets value for the software development effort. This figure is
overlapping the representation of sequential software development stages with
the graph of functionality versus time.
For Agile software development the small pieces of
requirements are constantly and consecutively moving through each development
stage. And each small piece of the overall requirements spends a short amount
of time on each stage; somewhere on the order of hours or days. For example, on
Patrick’s last Agile project, a small requirement (the team was using User
Stories as per Mike Cohn’s User stories applied book would
be in analysis for one or two days. Next the user story would be tasked by the
developers in an hour or so; while tasking they would make some small design
decisions. Once tasked, the user story would move to the coding stage for
typically two days, with another day for testing.
In Agile software development, the system is
incrementally made available. The figure below represents the small pieces of
requirements, and the development stages in the graph of functionality versus
time.
This figure depicts the nature of Agile concurrent
development. Consider a vertical line at time represented with the arrow in the
graph. At that moment there are five small pieces of requirement under work,
and each of these are under a different development stage. The team is working
concurrently.