Agile Software Development - Louisiana Tech University



Agile Software development

Prepared by

Amit Kumar Tyagi

ABSTRACT

Since the beginning of the software development an intensive research is going on in the field of software engineering to improve every aspect of software development. The first phase of development evolved “Heavyweight Methods” characterized by a heavily regulated and micro- managed use of waterfall development model. The originating processes from this approach are bureaucratic, slow, demeaning, and contradicted the ways that software engineers actually perform effective work. So as a part of reaction against these heavyweight methods the original definition of “Adaptive Methods” evolved which were called “Light Weight Methods”. Later on this terminology turned into “Agile Methods”.

In agile methods software development is done in small ‘time-boxes’, which are called iterations. The time span of iteration typically lasts two to four weeks. Each iteration is like a miniature project and includes all the tasks: planning, requirement analysis, coding, testing and documentation. At the end of each iteration team intends to release new software with additional features.

Agile methods emphasize real-time communication, preferably face-to-face over written documents. To increase and utilize the benefits of face to face communication some practices like pair programming is used in software development.

Agile methods also emphasize working software as the primary measure of progress. The customer is provided with the feedback based upon the new release after every iteration.

Agile Software Development

1. Introduction :

1.1 Background:

The field of software development is adaptive to new methodologies. Since the incipient age of software development, a large number of software development approaches have been introduced, of which only few have survived to be used today. But most of them emphasized close collaboration between the programmer team and business experts; formal ways of communication; tight, self-organizing teams; and ways to craft the code and the team such that the inevitable requirements churn could be handled without causing fiasco.

In early 2001 a workshop in Snowbird, Utah, USA was organized, where various originators and practitioners of these methodologies met to figure out the common practices and goals. Result was a statement of shared values which is the manifesto for agile software development.

1.2 Manifesto for Agile Software Development:

Following is the standard manifesto crafted by agilists:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

While there is value in the items on the right, we value the items on the left more.

1 Major Principles Behind the Agile Manifesto:

Highest priority is to satisfy the customer through early and continuous delivery.

Welcome changing requirement, even late in development.

Deliver working software frequently, from a couple of weeks to a couple of months with a preference to the shorter time scale.

Business people and developer must work together daily throughout the project.

Working software is the primary measure of progress.

Continuous attention to technical excellence and good design enhances agility.

At regular interval, the team reflects on how to become more effective, then tunes and adjust its behavior accordingly.

Agile Software Development Methodologies:

Agile methodologies are a family of methodologies, not a single approach to software development. As it is a result of consensus of few leaders in the field of software development, it has few common and few different characteristics.

2.1 Comparison with Other Types of Methodologies:

Mainly there are two kinds of methods used for software development:

Predictive Methods: Predictive methods focus on planning the future in detail. A predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive teams have difficulty changing direction. Predictive teams will often institute a Change Control Board to ensure that only the most valuable changes are considered.

Adaptive Methods: In contrast Adaptive Methods emphasizes on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the vaguer an adaptive method will be about what will happen on that date. An adaptive team can report exactly what tasks are being done next week, but for next month it can tell only about which features are planned.

Agile methods are often characterized as being at the opposite end of a spectrum from "plan-driven" or "disciplined" methodologies which is misleading because it reflects that agile methods are “unplanned” and “undisciplined”. A more accurate way of characterization is, that methods exist on a continuum from "adaptive" to "predictive" approach. Agile methods exist on the "adaptive" side of this continuum.

2.2 Comparison with Iterative Development Methods:

Most agile methods share iterative development's emphasis on building releasable software in short time periods. Agile methods differ from iterative methods in that their time period is measured in weeks rather than months.

2.3 Comparison with Waterfall Development Method:

Agile methods are different from waterfall development methods in that waterfall methods are most predictive of the methodologies. The waterfall model produces releasable software at the very end of the cycle, a time period typically extending from several months to several years. Agile methods, in contrast, produce completely developed features (but a very small subset of the total) every few weeks.

3. Selection of Software Development Method:

Selection of accurate method for particular kind of approach is a very critical and important as well .

3.1 Implementation constraints of Agile Methods:

Agile methods are efficient with following constraints:

Small scale development efforts ( ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download