Agile Software Development Methodology



"Agile Development" is an umbrella term for many iterative and incremental software development methods. While each of the agile methodologies is unique in its particular approach, they all share a frequent vision and core values (see the Agile Manifesto). They fundamentally incorporate iteration along with the constant feedback it provides to successively refine and provide a software program. They all involve constant planning, continuous testing, continuous integration, and other types of constant evolution of the undertaking and the software. They are all lightweight, especially compared to conventional waterfall-style processes, and inherently flexible. What's more important about agile methods is that they all focus on enabling people to collaborate and make decisions together fast and effectively. One of its forms are used in all of the Agile software development companies
The most popular agile methodologies are Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD).

In the late 1990's, many methodologies started to gain increasing public focus, each having a different combination of old and new ideas. The term"Agile" was applied to this collection of methodologies in early 2001 when 17 software development professionals gathered in Snowbird, Utah to examine their shared ideas and various approaches to software development. Make decisions together quickly and efficiently. These methodologies emphasised close cooperation between the development team and business stakeholders; regular delivery of business value, tight, self-organising groups; and clever ways to craft, support, and send code.

Agile Manifesto
  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity--the art of maximising the amount of work not done--is essential
  11. The best architectures, requirements, and designs emerge from self-organising teams
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

Extreme Programming
Extreme Programming (XP) is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop a software.Extreme Programming is just one of the Agile software development methodologies. It provides values and principles to guide the staff behaviour. The team is expected to self-organise. Extreme Programming provides special core practices in which −Each clinic is simple and self-complete.Combination of practices produces more complicated and emergent behaviour.
Extreme Programming involves −
  • Writing unit tests before programming & keeping all of the tests running. The unit tests are automated and eliminates defects early,Hence reducing the costs.
  • Starting with a simple design just enough to code the features at hand and redesigning when required.
  • Programming in pairs (called pair programming), with two programmers at one screen, taking turns to use the keyboard. While one of them is at the keyboard, the other constantly reviews and provides inputs.
  • Integrating and testing the whole system several times a day.
  • Putting a minimal working system into the production quickly and upgrading it whenever required.
  • Keeping the customer involved all the time and obtaining constant feedback.
Scrum
Scrum includes the same types of actions as the waterfall technique, but rather than executing them as sequential phases, they are encapsulated into several iterations, or sprints to create a functioning application. In this way, Scrum assembles the application incrementally, with each increment adding and enhancing features and functionality made by its predecessors. Another integral element of Scrum is the different Kinds of feedback loops utilized to ensure that,
Formal Events in Scrum

  1. Scrum Planning
  2. Daily Scrum
  3. Sprint review
  4. Sprint retrospective
Pillars of Scrum methodology are transparency, inspection and Adaptation. This makes scrum most popular among other methodologies. The five scrum values are Commitment, courage, Focus, openness and respect. Another important term is Sprint, in scrum sprint is an iteration of calendar month or less in which a product increment is delivered.
Scrum team roles  1. Scrum master 2.Product owner, 3.Development team.

Dynamic Systems Development Method(DSDM)
Dynamic Systems Development Method is an Agile project delivery framework. It initially used as software development method in 1994. In later versions the DSDM Agile Project Framework was revised and became a generic approach to project management and solution delivery rather than being focused specifically on software development and code creation,and could be used for non-IT projects

Lean Development
Lean Development is another Agile Software Development methodology used. There is seven main principles used in this method. Lean principles center on the idea that less is more, and they aim to streamline every part of the software development lifecycle.

When it comes to waste, the lean philosophy has quite a broad definition that includes anything that does not add value to the product. A lean product development group should concentrate on learning and, because of the strong need for software applications now, should decide on characteristics as late as possible to get rid of the requirement to redo work as the market changes. At the same time, there is pressure to deliver as fast as possible. The idea is that efficiencies could be applied and waste may be handled at all levels: each person, every section, interdepartmental operations, the business as a whole, and the connections of the organisation together with customers and providers.
The previous three lean principles share a great deal in common with Agile thinking. The idea that the team sets the pace -- or, in Agile terms, the sprint -- and is accountable for delivering the guaranteed product is right in line with what Agile teams clinic. And the term see the whole brings to mind the Agile retrospective in which the team gathers at the end to talk about exactly what challenges and successes it saw.


Comments