Saturday, 25 March 2017

Understand the background and driving forces for taking an Agile Approach to Software Development

Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross- functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.

The Manifesto for Agile Software Development, also known as the Agile Manifesto, first introduced the term agile in the context of software development in 2001.


Manifesto for Agile Software Development


We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to 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.

Agile principles

The Agile Manifesto is based on 12 principles:

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace9. Continuous attention to technical excellence and good design
  9. Simplicity—the art of maximizing the amount of work not done—is essential
  10. Self-organizing teams
  11. Regular adaptation to changing circumstance

What’s wrong With Traditional Approaches?

In 1970, Dr. Winston Royce presented a paper entitled ―Managing the Development of Large Software Systems,‖ which criticized sequential development. He asserted that software should not be developed like an automobile on an assembly line, in which each piece is added in sequential phases, each phase depending on the previous. Dr. Royce recommended against the phase based approach in which developers first gather all of a project’s requirements, then complete all of its architecture and design, then write all of the code, and so on. Royce specifically objected to the lack of communication between the specialized groups that complete each phase of work.

It’s easy to see the problems with the waterfall method. It assumes that every requirement can be identified before any design or coding occurs. Could you tell a team of developers everything that needed to be in a software product before any of it was up and running? Or would it be easier to describe your vision to the team if you could react to functional software? Many software developers have learned the answer to that question the hard way: At the end of a project, a team might have built the software it was asked to build, but, in the time it took to create, business realities have changed so dramatically that the product is irrelevant. Your company has spent time and money to
create software that no one wants. Couldn’t it have been possible to ensure the end product would still be relevant before it was actually finished? Today very few organisations openly admit to doing waterfall or traditional command and control. But those habits persist.

Advantages of the Agile Methodology

1. The Agile methodology allows for changes to be made after the initial planning. Rewrites to the program, as the client decides to make changes, are expected.
2. Because the Agile methodology allows you to make changes, it’s easier to add features that will keep you up to date with the latest developments in your industry.
3. At the end of each sprint, project priorities are evaluated. This allows clients to add their feedback so that they ultimately get the product they desire.
4. The testing at the end of each sprint ensures that the bugs are caught and taken care of in the development cycle. They won’t be found at the end.
5. Because the products are tested so thoroughly with Agile, the product could be launched at the end of any cycle. As a result, it’s more likely to reach its launch date.

Conclusion

Both the Agile and waterfall methodologies have their strengths and weaknesses. The key to deciding which is right for you comes down to the context of the project. Is it going to be changing rapidly? If so, choose Agile. Do you know exactly what you need? Good. Then maybe waterfall is the better option. Or better yet? Consider taking aspects of both methodologies and combining them in order to make the best possible software development process for your project.

Agile Process Examples


  1. SCRUM
  2. FDD
  3. Lean software development
  4. XP
SCRUM

Scrum is an iterative and incremental agile software development methodology for managing product development. It defines "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal", challenges assumptions of the "traditional, sequential approach" to product development, and enables teams to self-organize by encouraging physical co-location or close onlinecollaboration of all team members, as well as daily face-to-face communication among all team members and disciplines in the project.

FDD
Feature-driven development (FDD) is an iterative and incremental software development process. It is one of a number of lightweight or agile methods for developing software. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all driven from a client-valued functionality (feature) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner.

Lean Software Development
Lean software development (LSD) is a translation of lean manufacturing and lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community. Lean is most popular with startups that want to penetrate the market, or test their idea and see if it would make a viable business.

XP
Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted. Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to "extreme" levels. As an
example, code reviews are considered a beneficial practice; taken to the extreme, code can be reviewed continuously, i.e. the practice of pair programming.

5 comments:

  1. Such a helpful post you have shared here. I got some helpful knowledge from this post. Thanks for sharing such a post. Keep it up. UPS Contract Negotiation

    ReplyDelete
  2. Remarkable post. I simply came across your blog and desired to say that I have really enjoyed searching your blog posts. Thank you for sharing such blogs. mobile app developers denver

    ReplyDelete
  3. You have done a good job with your knowledge that makes our work easy because you are providing such good information. Keep sharing this kind of knowledge with us. nidhi software

    ReplyDelete
  4. You have a genuine capacity to compose a substance that is useful for us. You have shared an amazing post about Software Development Much obliged to you for your endeavors in sharing such information with us. Software Companies in Raleigh NC

    ReplyDelete
  5. I am attracted by the info which you have provided in the above post.3PL Warehouse Management Software It is genuinely good and beneficial info for us. Continue posting, Thank you.

    ReplyDelete