Log4j Vulnerability Response Center. Get Informed Now

DevOps and Security Glossary Terms

Agile Methodology

What is Agile Methodology?

The Agile Methodology is a set of techniques, values, and principles designed to guide and improve the way that software development teams work together to deliver new applications and updates. The agile methodology originated in 2001 when a group of programmers met in Snowbird, Utah to discuss what they felt were the most important issues and challenges that software developers were facing in the enterprise IT environment.

The group believed that companies had become too focused on traditional software development practices that demanded comprehensive documentation, exhaustive planning and other out-dated practices that multiplied developer workloads while delivering little value to customers. The group came up with a manifesto - 66 words in length - that would become the foundation of Agile Methodology:

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.

©2001-2019, Agile Manifesto - this declaration may be freely copied in any form, but only in its entirety through this notice.

Since the publication of the original Agile Manifesto in 2001, the agile methodology has expanded to include 12 working principles and a range of software development tools, techniques, and working methods.

Waterfall vs Agile Methodology: What's the Difference?

To understand how the Agile methodology has made an impact on software development practices throughout the industry, it is useful to look at how software applications were traditionally designed, built and implemented prior to the widespread adoption of Agile methodology.

The traditional software delivery method is sometimes called the Waterfall method. The Waterfall method is so named because it represents a linear, step-wise approach to software delivery. Just like the water flowing through a waterfall travels in one direction - down - the workflow of a Waterfall software development project flows from one step to the next and each step must be completed before the next one can begin. The process flow for the traditional software delivery method can be described in eight steps:

  1. Identify a business need or opportunity
  2. Gather and document software requirements
  3. Software and architecture design
  4. Coding and unit testing
  5. System testing
  6. User acceptance testing
  7. Debug
  8. Final delivery

In the Waterfall method, customers are involved only in the initial stage of development. Project leaders work with customers to capture their needs, then go off and build the entire product before returning to the customers at a later stage for user acceptance testing.

In contrast to the traditional waterfall method, the Agile methodology takes an iterative and customer-focused approach to software development whose goal is to deliver completed functional units of code as frequently as possible.

Development teams using the agile methodology usually do not build apps with traditional monolithic architecture. Instead, projects are divided into function units of code known as features or microservices and the project schedule is divided into sprints where the goal of a sprint is to complete the entire delivery process for a single feature. In each sprint, developers will gather needs for that specific feature, design and code the feature, test it, get feedback from customers and test for errors before finalizing the code.

As a result, agile development teams collect feedback from customers at many stages in the software development process and can better customize their design and coding decisions based on the needs of the customer. Customer feedback can be used to improve features that are in progress, to iterate on features that have already been delivered and to help determine which feature developers should build next.

To summarize the differences between the Waterfall and Agile methodology, you might say that waterfall projects are plan-driven while agile projects are customer-driven. Waterfall development can be effective for developers that prefer to work on a fixed-price agreement where requirements are established up-front and it makes sense to fully establish the scope of work before commencing the project.

Developing an agile methodology can help reduce the risk of project failure. Collecting frequent feedback from customers helps ensure that new features are consistently meeting customer expectations for quality and value.

4 Values of Agile Methodology

The original authors of the Agile Manifesto identified four values that are central to the Agile Methodology. It is worth considering how each of these values is reflected in the agile methodology today:

Individuals and interactions over processes and tools

This first value reflects an important belief that was shared by the founders of Agile: software problems are solved by teams of individuals interacting with each other, not by processes and tools. The Agile methodology encourages software developers to work in teams, a program in pairs, meet daily and interact with each other on a regular basis as needs arise to solve problems.

Working software over comprehensive documentation

Founders of the Agile methodology were frustrated that the waterfall method would require them to write hundreds of pages of technical documentation for applications that nobody would ever read. The Agile methodology does not discourage the documentation of code wholesale, but it does encourage development teams to minimize their wasted effort by only producing documentation that drives value, especially by writing tests for the system that document its behavior.

Customer collaboration over contract negotiation

The waterfall method encouraged a contract negotiation model where software development firms would enter into fixed-price contracts with the entire scope of work negotiated upfront. Changes to the scope of work were discouraged, as they would require modifications to the original contract. Agile software delivery favors a "Time & Materials" or other non-fixed funding structure that helps align customer and developer incentives and promote quality.

Responding to change over following a plan

In the waterfall delivery method, software developers delivered projects based on requirements and scope of work that was effectively set in stone at the outset of the project. There was little or no opportunity to collect feedback from customers throughout the design and code development process, so it was imperative to build applications according to the customer's exact requirements. In the Agile methodology, frequent customer feedback ultimate drives user satisfaction by ensuring that development teams are delivering work that meets user needs, even as they change.

Sumo Logic Supports Development with the Agile Methodology

Software development teams are increasingly relying on cloud-based environments to support product testing and deliver their applications to customers. Sumo Logic's cloud-native analytics platform can help software developers monitor the operational performance of applications deployed in the cloud while development platform, infrastructure, and sensitive data against malicious cyber attacks.

Complete visibility for DevSecOps

Reduce downtime and move from reactive to proactive monitoring.