# Agile Methodology

The Agile methodology consists of practices that promote continuous development and testing iteration throughout the Software Development Life Cycle (SDLC) in a project. In the Agile methodology for software testing, both development and testing occur concurrently, unlike the waterfall model.

# What Does Agile Software Development Entail?

This methodology is one of the simplest and most efficient approaches to translate a business's needs into software solutions. Agile is a term used to describe development approaches that emphasize planning, learning, improvements, team collaboration, evolutionary development, and continuous early deliveries. This encourages flexible responses to change.

The four core values of the Agile methodology are:

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

Agile Methodology vs. Waterfall Model

  • Agile Methodology

    • Agile methodologies propose incremental and iterative approaches to software design.
    • The Agile process in software engineering is divided into individual models that designers work on.
    • The customer has frequent opportunities from the beginning to see the product and make decisions or changes to the project.
    • It is considered less structured compared to the waterfall model.
    • Small projects can be implemented quickly, while large projects may have difficulty estimating development time.
    • Errors can be corrected during the project.
    • The development process is iterative, and the project is executed in short iterations (2-4 weeks).
    • Documentation has lower priority than software development.
    • Each iteration has its own testing phase. This allows the implementation of regression tests whenever a new feature or logic is introduced.
    • In Agile testing, when an iteration ends, shippable product features are delivered to the customer. New features are usable right after delivery, which is useful when there is good customer contact.
    • Developers and testers work together.
    • At the end of each sprint, user acceptance is applied.
    • Close communication with developers is required to jointly analyze requirements and planning.
  • Waterfall Model

    • Software development flows sequentially from beginning to end.
    • The design process is not divided into individual models.
    • The customer can only see the product at the end of the project.
    • The waterfall model is more secure because it is plan-driven.
    • All types of projects can be estimated and completed.
    • Only at the end is the entire product tested. If errors are found or changes are made, the project starts over.
    • The development process occurs in stages, and each stage is much larger than an iteration. Each stage ends with a detailed description of the next.
    • Documentation is of high priority and can be used for training employees and improving the software with another team.
    • Testing only begins after the development phase because separate parts are not fully functional.
    • All developed features are delivered at once after a long implementation phase.
    • Testers work separately from developers.
    • User acceptance is applied at the end of the project.
    • Developers are not involved in business rule and planning processes. There are typically delays between testing and coding.