Agile development is based on some standards outlined in
this section.
Continuous involvement of customer - The need for
involvement of an end user throughout the project lifecycle in agile
development is very important. An end user has to be made available throughout
the project development lifecycle and interact with the developers and help
them achieve their project goals. They also need to verbally communicate on a regular
basis to make the project lively and free of any bugs arising from
misconceptions.
Team members should take important decisions - The project
development team should possess enough power to take important decisions in
collaboration with the end user (customer). The team members need not always
wait for their higher authorities to take important decisions for taking the
project ahead. This can be done when absolutely needed and can be avoided in
general. The team members can very well take proper decisions in collaboration
with the customer contacts that are in collaboration. They should, however,
know to manage the customer’s expectations optimally.
Requirement analysis, a continuous process - In traditional
models, the requirements are normally analyzed and fixed at the very initial
level of the project lifecycle. Whatever the case may be, the emphasis is given
to capture as much requirements as possible and to streamline the project
scope. Any future changes are normally taken care of as a separate activity under
“change request management.” Agile development works on a philosophy that is
very much different from traditional software development methodologies.
Agile development methodology can address the evolving
requirements over time. How? The time period for any project is kept fixed and
the requirements are allowed to come in during the project lifecycle.
Therefore, the project team and also the end user (the customer) need to
include or remove any requirement keeping in mind the fixed time period. As a
result, they may need to adjust this new work with some other comparable work
within the project to put up this change.
Project requirements are visual and adequately drawn - Agile
project requirements are drawn mostly at high level and are optimal and visual
in nature. These requirements are mostly drawn bit by bit and help to develop
the software for any specific feature or module. The visual representation of
the requirements helps the agile developers to develop the solution closest to
accuracy against its actual requirements. The requirements are sufficient in
volume so as to provide that much input that is required for developing and
testing the feature or module. This also enables reasonable efficiency. The
objective behind this approach is to minimize the time taken for secondary
activities in the project lifecycle that are always required to take ahead the
project, but are certainly not a part of the end product or the solution.
Development produces small, incremental releases with
iterations - In traditional software development methodologies the requirements
for the whole software are collected at the very beginning, analyzed and then
the software is developed with all its components and finally testing is done
for the entire solution followed by its release. Agile software development
approach supports a different cycle in terms of analysis, development and
testing. The agile development projects are produced in separate pieces with
small, “incremental releases.” Each of the features in the whole solution is
separately treated and each of these features has its own three phases or steps
(analysis, development, and testing). Once this feature is developed, the next
feature is developed in succession following similar phases. Hence, the
methodology enables doing each of these steps for each feature, with one
feature at a time.
Recurrent product delivery – Agile development methodology supports recurrent delivery of any software product. It enables the breakup of the product into
several modular features and delivers each feature incrementally on a regular
basis.
Fullest completion of each feature – Agile development
ensures fullest completion of each of its isolated features in terms of
analysis, development, testing and release. Only then is the next feature or
module in succession taken up. Care is taken to fully complete the
functionalities within each feature (a mini project by itself) and then proceed
on to the next feature that is another mini project and is in succession.
The 80/20 Rule – The law of distribution and the similarity
in distribution curve amongst many things are defined in the Pareto’s law which
is also known as the 80/20 rule. The law defines that 20% of the efforts put in
can bring out 80% of results. The percentages may vary in various situations,
but overall it means that the optimum amount of very important efforts can be
identified and put in to bring out the bulk of the desired results. Hence, agile
development emphasizes smart development wherein the team focuses on
identifying the most important “20%” efforts to bring out the greater part of
the results.
Continuous testing – Agile development encourages regular
testing throughout the project lifecycle. It does not normally encourage a
separate all new testing phase as such. The team does the unit testing exercise
while developing the feature in phases. This not only ensures developing software
of great quality, but also helps in the iterative, incremental releases of the
software. The automated repeatable unit tests ensure that all the modular
features are working as per expectations each time while creating a build.
Regular builds are created and integration is also done as the development
progresses. The primary objective for this approach is to ensure the software
to be available in release condition at all times throughout the development
cycle.
Collaborative and cooperative development approach – Agile
development is strongly based on effective collaboration and cooperation
amongst all its team members and also the end users (clients). Agile
development focuses on keeping sleek but effective requirements and
documentation that needs great collaboration at all times. Requirements need to
be clarified in the right time. The team members and the end users should
always be updated equally throughout the development to understand and
appreciate the status of work in progress and the goals to be attained.