Download - Agile Development Model
-
7/30/2019 Agile Development Model
1/5
IntroductionThis article presents Agile Software development - an alternative approach to software project
management that is quite different from the traditional models. It promises to bring agility to
your software development processes and promotes a new, evolutionary change in how software
projects are managed. The article aims at providing its readers a broad level overview on thislatest methodology.
What is Agile Software Development?Agile is basically an alternative approach to the software project management that is quite
different from the traditional waterfall model that is mostly practiced by software farms globally.
We are now coming across various hot methods like Crystal, Extreme Programming (XP),
Scrum, Adaptive Software Development, etc. All of these team up to form the agile software
development. Agility is important not only for the software development methodologies, but also
concerning any organization. Agility is the keyword for survival of the organizations in the near
future.
Agile methods are based on real time communication between the programming team and its
customers. The customers normally include project managers, analysts, and actual customers. All
of them communicate face-to-face without putting much emphasis on written documentations.
This is a key emphasis area for Agile Development and is a point of criticism. The team resides
in an arrangement or enclosure wherein they can freely communicate with each other. The
enclosure also may contain Quality Assurance Engineers, Graphics Designers and respective
managers.
Most of the agile software development methods call for minimizing the risk by developing
software in short modular boxes called iterations. Each of these iterations is by itself a mini
software project and follows all the standard phases of the software project life cycle, such as
project planning, requirement analysis, system design, code generation, testing anddocumentation. Completion of any iteration is followed by review of the project priorities by the
project team.
Looking back in timeAgile development is an effect of the negative reaction against the commonly practiced software
development models of the olden days, namely the waterfall model. It started becoming a
popular and practical mode of development approach since the mid 1990's. Agile development
came into existence due to the fact that theoretical approach of the waterfall model came out to
be quite different from the practical methodologies followed by the developers to successfully
design and develop any software solution. During initial days of programming, agile
development methods have been referred to as light weight methods. In the year 2001 the agilecommunity adopted the name agile methods. In the past there have been several agile
development methods available to the software industry and each of these are having its own
significance and importance to its followers and the community is consistently working towards
effective utilization of these methods by the software development world.
The Agile Development StandardsAgile development is based on some standards outlined in this section.
-
7/30/2019 Agile Development Model
2/5
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 possessenough 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
customers 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 differentfrom 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 toaccuracy 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 ofthe 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.
-
7/30/2019 Agile Development Model
3/5
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 functionalitieswithin 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 Paretos 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 projectlifecycle. 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 inthe 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.
The Agile Development MethodsThere are several agile methods currently available out of which few have gained greater
importance in real-time practice. We will elaborate on a few of the popular agile methods, such
as Scrum, Extreme Programming (XP), Crystal Clear, and DSDM (Dynamic Systems
Development Methods). The other methods available are Agile Unified Process (AUP), Agile
Modeling, Adaptive Software Development, FDD (Feature Driven Development), and Lean
Software Development.
Let us take a look into a few commonly practiced agile methods in the following sections.
Scrum
Scrum development has its inception during 1986 and had the objective to present a highly
iterative development methodology. The popular developers behind its successful initiation are
Jeff Sutherland, Ken Schwaber, and Mike Beedle.
-
7/30/2019 Agile Development Model
4/5
Scrum has its primary focus on the management part of the software development, dividing the
whole development period into small iterations (of thirty days) called "sprints." This helps in
administering the process better and also to control the development with daily team meetings.
The engineering practices are less important in scrum development. The users, however, can
merge the engineering practices of other popular agile methods with the project management
aspects of scrum.There is a Scrum Master who acts as a facilitator in scrum development and removes the
obstacles that the team faces while attaining its sprint goals. The scrum development team is
generally located in the same place, very well organized and encourages in extensive
communication amongst each other regarding the project development aspects. These help in
effective error-free progress and help them to attain the sprint goals. Scrum development takes
its credit in addressing the fundamentally empirical challenges by appreciating the fact that any
software problem is not defined fully during its inception and by maximizing the teams efforts
in rapid delivery and faster response to up-and-coming requirements.
Extreme Programming (XP)
Extreme Programming is said to be the most popular and important of the various agiledevelopment methodologies available to date. Extreme Programming owes its inception to the
Smalltalk community during the late 1980's. The popular developers behind its successful
initiation are Kent Beck and Ward Cunningham who also took up the task of enhancing the XP
practices to provide a software development methodology that is people-centric and highly
adaptive. Kent Beck authored the popular book on this methodology called "Extreme
Programming Explained" which came out in the market during October 1999. The book still
provides good references to the followers of this software development practice.
Extreme Programming recommends a set of daily practices for its team members. These
practices can be seen as traditional software development practices taken to its highest
productivity level. This effort helps in providing greater and faster response to the customers
which is in contrast to the traditional methods. It also helps produce software solution of betterquality. XP in line with other agile development methods also believes that requirements can
come up during any time throughout the project lifecycle (instead of getting defined at the very
beginning), and the team has to be highly adaptive to these up-and-coming requirements and
make effective this realistic approach through energetic response.
Crystal Clear
One of the great exponents of agile community Alistair Cockburn developed the crystal family of
software development approaches meant for teams of different sizes. All of these methods have
similar features and properties. Important properties are Frequent Delivery, Reflective
Improvement, and Close Communication. Crystal requires lesser discipline as compared to XP
and has reduced chance of failure.Crystal Clear is an important variant of crystal methodologies that is ideal for a team of about 6
to 8 developers located in the same venue and working on light weight systems. It has its
emphasis on people and not on processes. Important properties of crystal clear are as follows.
Usable Code should be regularly delivered to the users
Improvements are insightful
Regular effective verbal communication between co-located team members
-
7/30/2019 Agile Development Model
5/5
Ease of accessibility to the expert users
Dynamic Systems Development Methods (DSDM)
DSDM is a RAD (Rapid Application Development) based framework that follows a user driven,
incremental approach in an iterative development for designing and developing software on time,
satisfying all its business needs and strict budget. This agile methodology has its inception at the
United Kingdom during the 1990's by DSDM Consortium (a non-profit organization). DSDM is
an extension of RAD and it emphasizes information systems projects that are having steep
deadlines and strict budgets. DSDM can be integrated to other agile methods in typical cases.
So, should we go agile?Agile development and its usage belong to a specific group of people who clearly understand its
significance. Agile development has its own set of drawbacks and may not be suitable for any
type and size of software project, but can be successfully used for reasonably sized projects with
a maximum team size of around 100 developers. However, agile development should be taken up
by any organization in steps and can be started with a small project that can fall in line with the
agile methods. Agile development is also a boon in providing customers who are so collaborative
and act as stakeholders in a project development all through, along with the developers. Agile
methods are still very young to draw the boundary conditions effectively for a software project.
The decision for choosing agile methods should ideally go to the people primarily who are the
best ones to decide whether they can suffice to the excellent collaborative project development.
If not, it is better not to follow any agile methods as lack of the desire for adapting this
development may ruin the project. However, with all its pros and cons, agile development is
gaining immense popularity amongst organizations across the globe that believe in simplicity in
designing and developing software with great and effective collaboration between the project
stakeholders.
ReferencesAgile Architect
www.agilearchitect.org