Agile Methodology – Know the What and How?

Gone are the days of using traditional software development models such as the Waterfall model. In today’s fast-paced IT world Agile is a new way forward. So in this blog, I will discuss What is Agile methodology. After reading this blog, your understanding of Agile will be crystal clear.

Why do we need Agile methodology?

Before Agile came into the picture, we had the Waterfall model of software development. The waterfall model can be defined as a sequential process in the development of a system or software that follows a top-down approach. This model was a straight forward and linear model. The waterfall model had various phases such as Requirements Gathering, Software Design, Implementation, Testing, Deployment, and Maintenance.


This model however suffered a few drawbacks such as follows:

  • This model was too time-consuming. Unless you complete a particular stage, you cannot proceed to the further stages.
  • This model was suitable only for projects where requirements are stable.
  • The working software is delivered only after completion of the final stage of the model.
  • It is very difficult to go back to the previous stages and make some changes that you had not thought about in the initial phase.

Due to the above-mentioned drawbacks of the Waterfall model, the leaders from the different development methodologies decided to meet to find a way forward through these problems. These leaders agreed upon a lightweight development method and they were also able to give wordings for the same in the form of a manifesto. It was called ” The Manifesto for Agile Software  Development”. This manifesto contains 4 Values and 12
principles.

What is Agile methodology?

Now let us try to understand What exactly is Agile. Agile Software development is an approach under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.


Agile software development allows the team to work together more efficiently and effectively to develop complex projects. It consists of practices that exercise iterative and incremental techniques that are easily adopted and display great results.

The 4 values of the Agile Manifesto are as follows:

  • Individuals and Interactions over processes and tools
  • Working Software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to Change over following a plan

The 12 principles that are mentioned in the Agile Manifesto are as follows:

  1. Customer satisfaction by early and continuous delivery of valuable software.
  2. Welcome changing requirements, even in late development.
  3. Deliver working software 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. A face-to-face conversation is the best form of communication (co-location)
  7. Working software is the primary measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective and adjusts accordingly

Advantages of Agile methodology

The various advantages offered by AGILE methodology are as follows:

  • In AGILE, the delivery of the software is persistent.
  • After every Sprint, the working feature(s) is/are delivered to the customer. This increases the level of satisfaction in them.
  • Customers can have a look at the developed features and check if they meet their expectations.
  • If the customers have any feedback or they want any changes in the features, then it can be accommodated in the current or maybe the next release of the product.
  • Changes can be made even in the later stages of the development of the product.
  • In AGILE, the business people and the developers of the product interact daily.
  • A significant amount of attention is paid to the design of the product.

How to implement Agile methodology?

The AGILE methodology can be implemented with the help of various frameworks such as Scrum, Kanban, eXtreme Programming(XP), Lean, Crystal, Adaptive Project Framework(APF), Feature Driven Development(FDD), Dynamic Systems Development Method(DSDM), Agile Unified Process(AUP) and so on.

Various AGILE frameworks

In this topic, we will discuss the top 3 AGILE frameworks.

Scrum

Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. It is a simple framework for effective team collaboration on complex products. It is the most popular and widely followed Agile methodology.


The Scrum framework addresses two critical pain points of software development. First is the speed of software development and the second is client requirements which keep on changing. In this approach, the software development project is executed in phases, and each phase known as a Sprint. Also, small teams of 5-6 members are created, who collectively work towards the desired results.

The Scrum methodology allows active client participation at each stage so that any required changes are addressed immediately and acted on. This ensures that the project is delivered within time and meets the client's demands effectively.

eXtreme Programming


XP is the most successful method of developing agile software because of its focus on customer satisfaction. XP requires maximum customer interaction to develop the software. It divides the entire software development life cycle into several numbers of short development cycles. It welcomes and incorporates changes or requirements from the customers at any phase of the development life cycle.

Extreme programming starts with collecting user requirements. Depending upon these requirements the whole development process is divided into several small numbers of cycles. So the next phase is iteration planning i.e. deciding the no of cycles, prioritizing the requirements, and estimating the amount of effort required to implement each cycle.

Now each iteration is developed using pair programming. During the development phase, new user requirements may come and the iteration plan should be adjusted according to that.

The next step is to test the latest developed version for bugs if detected; the bugs will be removed in the next iteration. After every acceptance testing project tracing should be done in which feedback is taken from the project that how many jobs have already been done. XP has introduced many new things for developers like pair programming, extensive code review, code refactoring, and open workspace.

Kanban


One of the core ideas of Kanban is to refrain from producing a surplus. This is achieved by making use of Kanban cards and a Kanban board. They are also used to visualize the flow of resources throughout the production cycle. This gives everyone maximum insight into the process. This also helps managers address whatever the surplus or the shortage is in real-time.

The Kanban system also introduces the notion of “pull” over “push,” meaning that workers pull in work according to their capacity, as opposed to work being fed to them on a conveyor belt or in the form of a to-do list.

Comments

Popular posts from this blog

Nginx

AWS Configuration For RDS(postgres),ElastiCache(Redis) with ElasticBean

Use @Initbinder in Spring MVC

How to read Dates with Hibernate

CSRF Protection using Synchronizer Tokens

CSRF Protection using Double Submitted Cookies

Add Logging Messages in Spring 5.1 - All Java Config Version

The TRUE difference between [] and {{}} bindings in Angular

Hibernate and Primary Keys