Agile Software development Methodology, Study Guides, Projects, Research of Computer science

Compares Agile Software development Method with the Traditional Software Development Methods

Typology: Study Guides, Projects, Research

2015/2016

Uploaded on 07/08/2016

nsikak_ntia
nsikak_ntia 🇳🇬

1 document

1 / 15

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1.0 INTRODUCTION
Agile software development is a set of principles for
software development in which requirements and
solutions evolve through collaboration between
self-organizing, cross-functional teams. It promotes adaptive
planning, evolutionary development, early delivery, and
continuous improvement, and it encourages rapid and exible
response to change. Agile itself has never dened any specic
methods to achieve this, but many have grown up as a result and
have been recognized as being 'Agile'.
Agile is also a software development methodology to build
software incrementally using short iterations of 1 to 4 weeks so
that the development process is aligned with the changing
business needs. Instead of a single-pass development of 6 to 18
months where all the requirements and risks are predicted
upfront, Agile adopts a process of frequent feedback where a
workable product is delivered after 1 to 4 week iteration.
1
First Time to get Real Feedback
Final
Software
TestIntegrationCodeDeneIdeas
Traditional Software Development
Methodology
First Time to
get Real Feedback
Review & AdjustCodeDeneTestDeneTestReview & AdjustCodeReview & AdjustDeneTestIdeas
Final
Software
321Agile Method
CodeIdeas
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Partial preview of the text

Download Agile Software development Methodology and more Study Guides, Projects, Research Computer science in PDF only on Docsity!

1.0 INTRODUCTION

Agile software development is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. Agile itself has never defined any specific methods to achieve this, but many have grown up as a result and have been recognized as being 'Agile'. Agile is also a software development methodology to build software incrementally using short iterations of 1 to 4 weeks so that the development process is aligned with the changing business needs. Instead of a single-pass development of 6 to 18 months where all the requirements and risks are predicted upfront, Agile adopts a process of frequent feedback where a workable product is delivered after 1 to 4 week iteration.

First Time to get Real FeedbackFinal Software

TestIntegrationCodeDeIdeasTraditional Software Developmentfine Methodology

First Time to get Real Feedback

Review & AdjustCodeDeTestDeTestReview & AdjustCodeReview & AdjustDeTestIdeasfififiFinalnenene 321 Agile MethodSoftware CodeIdeas

The Manifesto for Agile Software Development , also known as the Agile Manifesto , was first proclaimed in 2001, after "agile methodology" was originally introduced in the late 1980s and early 1990s. The manifesto came out of the DSDM Consortium in 1994, although its roots go back to the mid 1980s at DuPont and texts by James Martin and James Kerr et al

TWELVE PRINCIPLES OF AGILE MANIFESTO Customer Satisfaction − Highest priority is given to satisfy the requirements of customers through early and continuous delivery of valuable software. Welcome Change − Changes are inevitable during software development. Ever-changing requirements should be welcome, even late in the development phase. Agile processes should work to increase customers' competitive advantage. Deliver a Working Software − Deliver a working software frequently, ranging from a few weeks to a few months, considering shorter time-scale. Collaboration − Business people and developers must work together during the entire life of a project. Motivation − Projects should be built around motivated individuals. Provide an environment to support individual team members and trust them so as to make them feel responsible to get the job done. Face-to-face Conversation − Face-to-face conversation is the most efficient and effective method of conveying information to and within a development team.

2. CRITICAL KNOWLEDGE

The use of the word agile in this context derives from the agile manifesto. A small group of people got together in 2001 to discuss their feelings that the traditional approach to managing software development projects was failing far too often, and there had to be a better way. They came up with the agile manifesto, which describes 4 important values that are as relevant today as they were then. It says, “we value:

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

That is, while there is value in the items on the right, we value the items on the left more.”

Ever since then, the use of methods that support these values has become increasingly popular.

From my studies of various agile methods, there are about 10 key principles of agile. These are characteristics that are common to all agile methods and the things that I think make agile fundamentally different to a more traditional waterfall approach to software development. They are:

  1. Active user involvement is imperative
  2. The team must be empowered to make decisions
  3. Requirements evolve but the timescale is fixed
  1. Capture requirements at a high level; lightweight & visual
  2. Develop small, incremental releases and iterate
  3. Focus on frequent delivery of products
  4. Complete each feature before moving on to the next
  5. Apply the 80/20 rule (By the numbers it means that 80 percent of your outcomes come from 20 percent of your inputs. As Pareto demonstrated with his research this “rule” holds true, in a very rough sense, to an 80/20 ratio, however in many cases the ratio can be a lot higher – 99/1 may be closer to reality.)
  6. Testing is integrated throughout the project lifecycle – test early and often
  7. A collaborative & cooperative approach between all stakeholders is essential

There are also various methodologies that are collectively known as agile, as they promote the values of the agile manifesto and they are consistent with the above principles. The most popular ones are:

Dynamic System Development Method (DSDM) is probably the original agile development method. DSDM was around before the term ‘agile’ was even invented, but is absolutely based on all the principles we’ve come to know as agile. DSDM seems to be much less well-known outside of the UK.

Scrum is also an agile development method, which concentrates particularly on how to manage tasks within a team-based development environment. Scrum is the most popular and widely

In agile software projects, project management takes a slightly different form, relying far more on the project manager’s skills in communication, facilitation, coordination, and emphasizing far less on planning and control.

Agile development can be a very exciting and invigorating approach, although some projects suit agile more than others. The collaboration and visibility can provide a much richer and more rewarding experience for teams to develop great software products. Agile development can be a lot more enjoyable than the waterfall approach, which requires lots more documentation and is less flexible by its nature. And when people enjoy their work, it’s amazing what they can achieve.

3. POTENTIALS AND CHALLENGES OF AGILE

SOFTWARE DEVELOPMENT METHODOLOGY

3.1 POTENTIALS

Here are 10 good reasons (potentials) to apply agile development principles and practices.

  1. Revenue

The iterative nature of agile development means features are delivered incrementally, enabling some benefits to be realized early as the product continues to develop.

  1. Speed-to-market

Research suggests about 80% of all market leaders were first to market. As well as the higher revenue from incremental delivery, agile development philosophy also supports the notion of early and regular releases, and ‘perpetual beta’.

  1. Quality

A key principle of agile development is that testing is integrated throughout the lifecycle, enabling regular inspection of the working product as it develops. This allows the product owner to make adjustments if necessary and gives the product team early sight of any quality issues.

  1. Visibility

Agile development principles encourage active ‘user’ involvement throughout the product’s development and a very cooperative collaborative approach. This provides excellent visibility for key stakeholders, both of the project’s progress and of the product

The above approach of fixed timescales and evolving requirements enables a fixed budget. The scope of the product and its features are variable, rather than the cost.

  1. Business Engagement/Customer Satisfaction

The active involvement of a user representative and/or product owner, the high visibility of the product and progress, and the flexibility to change when change is needed, create much better business engagement and customer satisfaction. This is an important benefit that can create much more positive and enduring working relationships.

  1. Right Product

Above all other points, the ability for agile development requirements to emerge and evolve, and the ability to embrace change (with the appropriate trade-offs), the team build the right product. It’s all too common in more traditional projects to deliver a “successful” project in IT terms and find that the product is not what was expected, needed or hoped for. In agile development, the emphasis is absolutely on building the right product.

  1. More Enjoyable!

The active involvement, cooperation and collaboration make agile development teams a much more enjoyable place for most people. Instead of big specs, we discuss requirements in workshops. Instead of lengthy status reports, we collaborate around a task-board discussing progress. Instead of long project

plans and change management committees, we discuss what’s right for the product and project and the team is empowered to make decisions. In my experience this makes it a much more rewarding approach for everyone. In turn this helps to create highly motivated, high performance teams that are highly cooperative.

3.2 CHALLENGES

An agile approach to development is good for so many reasons. But agile development does require certain things that can also be a disadvantage.

If you’re thinking of adopting agile principles, it’s important that you know what you’re in for. You need to be sure that you, your project team and the management supporting your project all understand these trade-offs, and are happy to accept and support them in preference to a more traditional approach.

Here’s my list of challenges faced with agile:

  • Active user involvement and close collaboration are required throughout the development cycle. This is very engaging, rewarding and ensures delivery of the right product. It’s the fundamental principle in agile that ensures expectations are well managed. And since the definition of failure is not meeting expectations, these are critical success factors for any project. However these principles are very demanding on the user representative’s time and require a big commitment for the duration of the project.

everything completely up front, which arguably is impossible. And this risk is managed closely through the incremental approach to development and frequent delivery of product.

  • Testing is integrated throughout the lifecycle. This helps to ensure quality throughout the project without the need for a lengthy and unpredictable test phase at the end of the project. However it does imply that testers are needed throughout the project and this effectively increases the cost of resources on the project. This does have the effect of reducing some very significant risks, that have proven through research to cause many projects to fail. The cost of a long and unpredictable test phase can, in my experience of waterfall, cause huge unexpected costs when a project over- runs. However there is an additional cost to the project to adopt continuous testing throughout.
  • Frequent delivery of product and the need to sign off each feature as done before moving on to the next makes UAT (user acceptance testing) continuous and therefore potentially quite onerous. The users or product owner needs to be ready and available for prompt testing of the features as they are delivered and throughout the entire duration of the project. This can be quite time-consuming but helps drastically to ensure a quality product that meets user expectations.
  • Finally, common feedback is that agile development is rather intense for developers. The need to really complete each feature 100% within each iteration, and the relentlessness of iterations, can be mentally quite tiring so it’s important to find a sustainable pace for the team.

4.0 CONCLUSION

I believe these trade-offs are well worthwhile. Software is complex. People are complex. And the only thing that’s certain in projects is change. This lethal combination of unpredictability is more often than not helped by agile principles. So, in my view, for many project situations, the advantages of agile development far outweigh the disadvantages.

REFERENCES

  1. Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002). Agile Software Development Methods: Review and Analysis. VTT Publications 478.