The Agile methodology includes various product development practices. Pair programming, a flexible technique used in Extreme Programming. Notice the “information radiators” in the background.
There are many specific flexible development methodologies. Most encourage development, teamwork, collaboration, and adaptability throughout the project life cycle.
Agile methods break down tasks into small steps with minimal planning, without affecting long-term project planning. Iterations (stages) take place over short periods of time (timeboxes), which usually lasts from one to four weeks. During each iteration, the team, composed of people with different functions, works on each of the functions: planning, requirements analysis, design, development, testing, and verification at acceptance. At the end of the iteration, the working software is presented to the stakeholders. This reduces the overall risk and the project can be adapted quickly to change. An iteration may not add enough functionality to justify marketing, but the goal is to have a workable solution (with minimal errors) at the end of each iteration.
Multiple iterations may be required to complete software or functionality.
Regardless of which programming disciplines are required, each team contains a client representative. It is appointed by stakeholders and acts on their behalf with a personal commitment to be available to developers to answer questions that arise during an iteration. At the end of each iteration, the stakeholders and the client’s representative review the project progress together and assess the priorities in order to optimize the return on investment (ROI) and take into account the client’s needs and the company’s goals.
A common feature of flexible development methods are daily meetings on project progress, etc. stand-up meetings. During the short meeting, the team members report to everyone what they did the day before, what they intend to do today and whether there is anything that is preventing them from completing their tasks.
Specific tools and techniques, such as continuous integration, automated xUnit tests, pair programming, test development (test-driven development), design patterns, domain-driven design, code processing (code refactoring) and other techniques are often used to improve the quality and increase the flexibility of the project.
Agile methodologies for software development use information radiators (eg a leaflet board) – they physically illustrate the progress of the project in a prominent place in the office where passers-by can see it. They are an up-to-date summary of the status of a software project or other product. The name was introduced by Alistair Cockburn and is described in his 2002 book, Agile Software Development. Indicator lights can also be used to inform the team about the current state of the project. The Agile software development methodology consists of a group of software development methods based on repetitive and incremental development
Comparison with other methodologies
Existing methods range from “adaptive” to “planning”. Agile approaches fall into the “adaptive” part of this spectrum.
Adaptive methods rely on rapid adaptation to changing reality. When the needs of a project change, the adaptive team also changes the new realities accordingly. Such a team could not describe exactly what will happen in the future. The farther into the future a given moment is, the more inaccurately an adaptive method will be able to predict upcoming events. An adaptive team will not be able to describe the exact planned actions for the next week, but only the planned functionalities for the next month. Asked about the version of the software planned for 6 months later, an adaptive team could only state the features set in the version or the expected value against the price.
In contrast, planning methods focus on the detailed analysis and planning of the future and dealing with foreseeable risks. Ultimately, a planning team can provide an accurate list of functionalities and tasks planned throughout the development process. Planning methods rely on full effective preliminary analysis and if it turns out to be wrong, the project may experience significant difficulties and change its direction of development. Planning teams often appoint a change control board to ensure that only the most meaningful changes are considered.
Unlike adaptive and planning methods, formal methods apply the theory of informatics and a wide range of approaches to formal validation. A formal method aims to prove correctness with a certain degree of determinism. Some formal methods are based on checking the consistency of the model and find counter-examples in cases where consistency cannot be proved. Flexible methods can apply formal methods with a high degree of rigor. 
In 2008, the Software Engineering Institute (SEI) published the technical report “CMMI or Agile: Why Not Embrace Both”  to emphasize that the Capability Maturity Model Integration approach and flexible methodologies can be combined. CMMI Version 1.3 includes advice on the joint application of flexible methodologies and CMMI. One of the differences between flexible methods and the waterfall method is that software tests are performed at different stages of the software development cycle. The waterfall method has a separate testing phase shortly before implementation. In Agile extreme programming, the tests are performed simultaneously with the implementation.
Scrum: https://agileprogramming.org/what-is-the-scrum-methodology/ is a process used in the preparation and management of large projects. It is designed to significantly facilitate the long-term planning of a product. Unlike typical management through control and command, Scrum processes emphasize feedback and give more power to the people doing the “dirty work”.
Kanban is a method of managing intellectual activities with an emphasis on delivery on time, without overloading team members. The name comes from Japanese and literally translated means “signal card”. The method, as formulated by David Anderson, is an approach to a gradual, evolutionary process. It uses a system to limit current work as the main mechanism to detect systemic operational problems and to stimulate mutual assistance in order to continuously improve the system.
The term Lean software development comes from the book of the same name written by Mary Popendyke and Tom Popendyke. The book presents traditional lean principles in a modified format, as well as a set of 22 tools and compares them with flexible practices. The Popendayovs’ participation in the flexible software development community, including speeches at several conferences, affects the adoption of different concepts among the community in question.
Extreme Programming (XP) is another type of software development methodology. The main goal of XP is to reduce the cost of a project if a change is needed. This leads to the conclusion that XP is a methodology suitable for use in projects that have frequently changing requirements and in which more standard methodologies (such as the Waterfall model) are not optimal for achieving high productivity; suitable for projects that involve new technologies or unforeseen implementation problems; it is also used in smaller and easier to implement projects with informal methods; good technology for research-intensive projects.