CSC/ECE 517 Fall 2011/ch5 6d ny

From Expertiza_Wiki
Jump to navigation Jump to search

Agile Landscape


Introduction

Agile- denoting “the quality of being agile; readiness for motion; nimbleness, activity, dexterity in motion ” is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.


The term “Agile Software Development” was introduced in 2001 by Agile Software Development Manifesto published by a group of software practitioners and consultants. The important aspects of this Manifesto are,

  • Individuals and interactions over processes and tools.
  • Working software over comprehensive documentation.
  • Customer collaborations over contract negotiation.
  • Responding to change over following plan.


Flowchart
Agile Development Life cycle

Agile Software development processes are based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.Agile processes use feedback, rather than planning, as their primary control mechanism. The feedback is driven by regular tests and releases of the evolving software.

Different Methodologies

Different Methodologies

Extreme Programming

Definition

Origin

FlowChart

Usage

Scrum

Definition

Origin

FlowChart

Usage

Crystal family of Methodologies

Definition

Origin

FlowChart

Usage

Feature Driven Development

Definition

Origin

FlowChart

Usage

Rational Unified Process

Definition

Origin

FlowChart

Usage

Dynamic Systems Development

Definition

Origin

FlowChart

Usage

Adaptive Software Development

Definition

Origin

FlowChart

Usage

Open Source Software Development

Definition

Origin

FlowChart

Usage

Agile Modelling

Definition

Origin

FlowChart

Usage

Pragmatic Programming

Definition

Origin

FlowChart

Usage

Comparision

How widely these methodologies are used

Agile technology is For small scale projects, averages of 58% of agile techniques are used when developing software. So for example if the respondent was using XP on a small scale project, 7 out of 12 XP techniques would be followed while the other 5 would either be changed or ignored to fit the project constraints and needs. Fewer respondents are following agile techniques for medium and large scale projects, as trends show that weighted average of 34% and 22% respectively of the techniques were implemented in the projects. As the development of software increases, there is a corresponding decrease in the number of agile techniques used. Furthermore, respondents tend to use heavyweight methods when the increase of project size, complexity, team, architecture, scope, and risks occur.

Forrester’s Business Technographics® September 2006 North American And European Enterprise Software Survey indicates that 17% of North American and European enterprises currently use Agile processes and that another 29% are aware of them.Forrester believes that Agile adoption is actually higher than reported in this study. Based on the interactions with enterprise IT organizations, Forrester estimates that very few large enterprises use Agile for most of their projects.

So when is agile method not adopted? It primarily comes down to the people. If the people involved aren't interested in the kind of intense collaboration that agile working requires, then it's going to be a big struggle to get them to work with it. Thus, agile cannot be imposed onto people.

FIGURE 1

Evidence to support the effectiveness of Agile Development

Adopting and then tailoring a software process to meet your team’s needs is an important and difficult decision, one that is critical to your project’s success. There are a myriad of choices. So it is important to determine whether an agile development methodology works effectively within your environment. There is growing survey evidence that agile works better than traditional. The DDJ 2007 Project Success Survey showed that when people define success in their own terms that Agile projects had a 72% success rate, compared with 63% for traditional and 43% for offshoring. These figures are summarized in Figure 2.

FIGURE 2

Craig Larman,in his book Agile and Iterative Development: A Manager's Guide makes a very good argument that proof exists that shows that many of the common practices within agile software development do in fact work, practices such as incremental delivery and iterative approaches which embrace change. He also cites evidence which shows that serial approaches to development, larger projects, and longer release cycles lead to greater incidences project failure.

FIGURE 3

Effectiveness of agile methodology can be proved with feedback cycle which indicated the time in which response is obtained. Agile techniques are found to have very short feedback cycles, often on the order of minutes or hours whereas traditional techniques, such as reviews, inspections, and big requirements up front (BRUF) have feedback cycles on the order of weeks or months, making them riskier and on average more expensive.

From the surveys and the present organizational scenario, people's experience with agile software development can be observed to be very positive, and that adopting agile strategies appears to be very low-risk in practice.

Conclusion

To conclude, agile software development stresses rapid iterations, small and frequent releases, and evolving requirements facilitated by direct user involvement in the development process. This development isn’t a managerial free-for-all. It requires discipline and adherence to processes, even when those processes are not burdensome. When it comes to methodologies, each project is different. One thing is clear: that there is no “one-size-fits-all” solution.

See also

External Links:

References: