Agile business approach connects the process of product development with the needs of users and the desires of the customer. It’s exciting that Agile projects have a 64% success rate, whereas projects under the competing methodology known as waterfall have only a 49%.
Modern development is a team and cross-functional activity of high complexity. For correct and efficient integration of all the participants into the project, companies apply various management tools and methodologies. In this article, we will discover the real benefits of Agile and structure everything you should know about 10 software development methodologies and useful frameworks.
Briefly About What Goes Into Agile Today
Agile (AGILE) is based on a cyclic software development methodology in which conditions and solutions evolve through the mutual work of self-organizing cross-functional teams among themselves.
Thanks to Agile methods, it is possible to make management more clear and structured. As usual, such projects involve learning, adaptation to Agile processes, teamwork, self-organization, reports, and revisions. These methods are also considered cutting-edge in design, as their purpose is to produce high-quality results quickly.
Moreover, this methodology relates to all existing software development processes, which are aligned with the Agile Manifesto. This manifesto was created by a group of 14 experts in the software industry. It reflects their personal experiences with approaches that contribute to high-quality software development.
Agile “management methods” include, in particular, the Scrum framework and the Kanban method. Kanban is now firmly in second place in popularity after Scrum (except for self-made flexible approaches that some companies like to invent).
In Scrum, the process is divided into sprints – short iterations of equal duration. All the work is done by a small (up to 10 people) team consisting of developers, a product owner (responsible for the success), and a Scrum master (responsible for the efficiency and proper application of Scrum).
Of course, Scrum and Kanban are not the only approaches included in Agile. But most of the rest are actively developing nowadays to deal with problems of another level.
We mean the concerns of large organizations that have to compete with startups both in the speed of bringing new products to market and in the speed of decision-making. The Scaled Agile software development framework (SAFe) and LeSS (Large-Scale Scrum) approaches, as well as the uncomplicated practice of Scrum of Scrums helps such organizations. These are the three most popular approaches to scaling Agile.
Strengths and Weaknesses of Agile
Agile is a family of flexible iterative-incremental software design methods for project and product management. According to this approach, a project is broken down not into consecutive phases, but into small subprojects, which are then “assembled” into a finished product.
Thus, initiation and top-level planning are performed for the entire project, while the subsequent phases: development, testing, and others take place for each mini-project separately. This allows the results of these mini-projects, the so-called increments, to be transferred faster. So, when starting a new subproject (iteration), changes can be made to it without significant investment or impact on the other parts of the project. With that in mind, Agile projects are nearly 1.5X more successful than waterfall ones.
- The most important advantage of Agile is its flexibility and adaptability. It can adapt to almost any conditions and processes of an organization. This is what determines its current popularity and the number of systems created on its basis.
- One of the primary principles of Agile: “Reaction to change is more important than following the plan”. Fast and relatively painless reaction to change is the reason many large companies are striving to make their software development processes more agile. In addition, Agile is great for projects with an “open end” – for example, launching a service or a blog.
- The domain of Agile is the development of new, innovative products. While working with projects such as Agile software product development, there is a high degree of uncertainty, and the information about the product is disclosed during the project. Under such conditions, it becomes impossible to implement a project following “waterfall” – there is no information for planning.
- Agile is neither a methodology nor a standard. Agile is a set of primary principles and values. The weak side is that each team will have to make its management system, guided by Agile principles. This is an uneasy and lengthy process that requires changes to the entire organization, starting with procedures and ending with core values. It is a thorny path and not all organizations can walk through it.
- This path will require from the change leader not only knowledge and persistence, but also serious administrative resources and costs. Fortunately, there are ready-made sets of practices that facilitate the Agile transformation of an organization. Such sets include the Scrum framework, the Kanban method, and many others – Crystal, LeSS, SAFe and Nexus.
How Agile is Different From Other Software Development Methodologies
The term “methodology” is applied to Agile by analogy with other approaches to organizing a software development process: RAD, RUP, XP and others.
However, those who have encountered Agile understand: it is not like previous approaches that described the development process in detail. Agile is brief, as it consists of 4 values and 12 principles. For comparison, the description of the RUP (Rational Unified Process) methodology takes dozens of pages – there are numerous techniques and algorithms of actions. RUP includes the breakdown of the development life cycle into 4 phases, the recommended ratios of workload into 9 workflows at each phase. It also provides a list of specific tools for each flow. OpenUP, RUP’s latest successor methodology, is shorter and more flexible, but still far from Agile’s brevity.
Agile itself doesn’t give algorithms, methods and techniques. That said, the “agile” approaches often prescribe specific techniques:
- For example, the agile XP (extreme programming) methodology includes techniques such as pair programming and the planning game, which require quite specific algorithms for action.
- And even the agile Scrum framework, which by definition “is not a process, technique or method,” still prescribes the application of several roles, activities and artifacts. Each element of Scrum is mandatory for its successful use.
Agile Values in Simple Words
Agile values appeared in 2001 in the Agile Manifesto — the result of a synthesis of many of the then “software development methodologies” by their authors.
The values are the things in common that prioritize the work, regardless of the specific process and subject. Each of the 4 Agile values is formulated as “X is more important than Y,” where X is:
- working product,
- cooperation with the customer,
- willingness to change.
Let’s see why these Agile values are necessary.
1. People and their interactions are more important than processes and tools.
For people to work more effectively, nothing should limit them. Neither the Agile processes nor the tools dictate what people should do. Moreover, they decide how to change the software development processes to match their work preferences, needs and goals.
To speed up the process of Agile software development, people also should interact directly (without intermediaries in the form of documents or other people), and actively communicate with each other in person, not in writing. It is true that in today’s business, communication often has to go online. But then it should be video communication with interactive online boards, not just letters and chats.
2. A working product is more important than comprehensive documentation.
To keep customers happy, it’s the working application or software that they need. Therefore, developers should focus on making the product usable as soon as possible, not on compiling lists, diagrams, requirements, and reports.
To meet tight deadlines with minimal cost, it is typically not worth tying yourself up with documentation. Keeping comprehensive documentation up to date with the product often slows down development and is unnecessarily costly.
3. Cooperation with the customer is more important than contract negotiation.
To deliver a really valuable product to the client, it is worth refusing unnecessary details in the contract between the service provider and the customer. The same works for the requirements of the internal customer to the internal creator of the product development methodology. Being rigidly set at the start, contract details prevent you from considering new data and priorities that only emerge during development.
For the business value of the product to grow quickly, the client and the developer should communicate tightly as they go along. In this case, all changes and problems that arise are promptly handled by both parties. To make such cooperation possible, it is necessary to build their trust in each other.
4. Willingness to change is more important than following the plan.
In order not to postpone project risks to the last stages of development when it will be too late to reduce the scope of work, shift the deadline or strengthen the team. Agile software development praises not only iterative work, but also a willingness to change at all stages.
To do the most valuable things first, the current vision of the business values and positioning of the product must be transparent to developers, and their workflow must allow for significant changes to previous plans. Besides, developers should be willing to add unplanned new features to the product if they have become valuable in a changed situation.
As for the willingness to change on the part of the client representatives, in such a situation they can sacrifice something planned for the sake of new features. The customer’s readiness to promptly sacrifice some part of what was planned is also needed in a situation when the executors encounter unforeseen problems during the development process.
Top 10 Agile Frameworks and Methodologies List
The basis of agile software development methodology is the breakdown of projects into small working chunks, called user stories. According to priority, tasks are solved in short two-week cycles (iterations).
Scrum is the most popular Agile framework, with 61% of respondents from 76 countries reporting that they use it. The framework owes its term to rugby, in which the word means a method of team play in the form of building three lines by each of the opponents and trying to seize the ball. A successful interception requires not only good physical preparation, but also the coherence of each participant in the scrum and a clear understanding of the goal.
Jeff Sutherland, author of the book “Scrum. A Revolutionary Project Management Method,” highlighted 8 steps for using this type of software development methodology:
- Select a product owner – they should know the purpose of the project and the expected outcome.
- Assemble a team of up to 10 people with the necessary skills to create a workable product.
- Find a scrum master to monitor the progress and help the team deal with challenges.
- Make a product backlog – on an Agile board, prioritize each requirement. The product owner plays a big role in this, collecting requests for the team to evaluate the backlog.
- Schedule sprints (iterations) – chunks of time to complete a specific set of tasks.
- Arrange daily fifteen-minute “mitt-ups” – ask 3 questions of each team member: “What did you do yesterday? What will happen today? What prevents you from accomplishing the task?”
- Do reviews of the working parts of the product, involving stakeholders in the discussion.
- Do a retrospective to discuss problems and find solutions after each sprint. Implement the resulting change plan at the next sprint.
2. Extreme Programming (XP)
The developer of the software methodology, Kent Beck, created the extreme programming method, which aims to cope with the ever-changing requirements of a product and improve the quality of development. It applies exclusively to software creation, and is built around 4 software development processes:
- Coding according to unified team design standards.
- Testing – tests are written by the programmers themselves before the code is written.
- Planning of both the final build and separate iterations. The latter takes place on average once every two weeks.
- Listening – a moment of communication between developers and the client, during which ambiguities disappear, requirements and values are defined.
3. Feature-Driven Development (FDD)
This software development methodology appeared even earlier than the Manifesto. Although FDD also uses an iterative development model, it differs from Agile in the following ways:
- more emphasis on pre-modeling;
- higher importance of building reporting and graphs (in comparison with Agile software development);
- is aimed at corporate development.
Feature-Driven Development consists of these cyclic steps:
- Creating a generic model – a vision for the project based on preliminary data.
- Development of a list of properties – analog of the product backlog in Scrum methodology.
- Planning by properties – evaluation of the complexity of properties by each team member.
- For each property – technical design and implementation – the final stage, at the end of which the property goes into the product and the cycle repeats.
4. Dynamic Software Development Method (DSDM)
Not one person or even a team worked on the development of DSDM — it was a consortium of 17 British companies. DSDM, like Extreme Programming, is used primarily to create software.
A special role is given to the participation of the end user in the development process. In addition to this principle, the basic ones include:
- frequent releases of working versions of the product;
- autonomy of developers in terms of decision-making;
- testing throughout the whole work cycle.
DSDM is divided into versions, which are updated as the technology evolves, and new requirements for software development appear. The latest to date is DSDM Atern, released in 2007, although the previous one (2003) is still in production.
5. Agile Data Method (ADM)
ADM is a set of iterative agile software development methodologies that emphasize shaping requirements and project decisions through the collaboration of individual software development teams. The essence of the Agile Data Method is defined by six statements:
- Project problems – these can only be discovered due to a clear understanding of the purpose and concept of the project.
- Working groups – in addition to the direct development team, there are enterprise groups that support other working groups.
- Uniqueness – there is no perfect methodology, so you need to combine tools from different methodologies for every project.
- Teamwork – working together is much more effective than working alone.
- “Sweet spot” – finding the best solution to an issue, avoiding extremes.
6. Lean Software Development
Lean Software Development — rather than a software development methodology, it is a set of lean manufacturing principles, which is aimed at improving the efficiency of the development process and minimizing costs. The set includes the following 7 principles:
- Getting rid of waste – anything that doesn’t add value to the product for the end customer.
- Continuous learning – continuous team development increases the ability to perform tasks efficiently.
- Making decisions as late as you can – priority is given not to spontaneous decisions, but to thoughtful ones based on the gained knowledge.
- Fast delivery – essentially, the foundation of the iterative model.
- Team strengthening – people and their collaboration are more important than software development processes and tools. A small project team is the foundation of successful task completion.
- Integrity and quality – you need to make a quality product from the beginning so that you do not waste time and resources on further testing and getting rid of bugs.
- Vision of the whole picture – splitting the project into separate parts is impossible without understanding the current development status, goals, concept, and the principles of the software methodologies applied.
7. Essential Unified Process (EssUP)
This is the development by Swedish scientist Ivar Jakobson, designed to improve the Rational Unified Process. EssUP operates with the concept of practices, which include:
- Use case – a description of system behavior.
- Iterative development – creating working pieces of code in short cycles of a few weeks.
- Team practices – aimed at team building and increasing team efficiency.
- Procedural practices – for example, “Think globally, start small” or “Involve stakeholders in business software development processes”.
All practices are found in one form or another in RUP, CMMI and agile software development methodologies.
8. Agile Unified Process (AUP)
AUP is a simplified version of another software development methodology – Rational Unified Process (RUP). Since 2012, it was replaced by Disciplined Agile Delivery (DAD), but AUP can still be found in some places.
The author of the methodology, Scott Ambler, identified the following key positions of the Agile Unified Process:
- Your team knows what it is working on.
- Simplicity is paramount.
- Consistency with the primary principles of agile development methodology.
- Focus on activities valuable to the project.
- Independence in the choice of tools.
- Individual customization to the needs of a particular project.
9. Crystal Methodologies
Little known in the domestic expanse of project management is a family of methodologies developed by Alistair Cockburn, one of the authors of the “Agile Software Development Manifesto”.
Cockburn proposes to classify by the colors based on the number of people in the team: from 2 (Crystal Clear) to 100 (Crystal Red). Maroon, Blue and Violet colors are allocated for larger projects. Crystal framework projects have to correspond to the 3 main criteria:
- Rapid delivery of working code – development of the idea of an iterative Agile development model.
- Perfection through reflection – a new version of the software methodologies is improved based on data about the previous one.
- “Osmotic” interaction – Alistair’s innovation, a metaphor for communication and information exchange between software developers in the same room.
10. Agile Modeling (AM)
Agile Modeling is a set of values, primary principles and practices for software modeling. AM is used as a component of a complete software development methodology – for example, extreme programming or Rapid Application Development. The principles of Agile Modeling are:
- Effective interaction between project stakeholders.
- Striving to develop the simplest possible solution which fits all requirements.
- Continuous feedback.
- Courage to take responsibility for decisions.
- Understanding that you can’t be aware of everything.
With the Agile software development methodology, small project teams achieve maximum efficiency. It can be successfully implemented in a form of other methods like Scrum, XP, Lean, etc. By the way, this approach is impossible to be applied by an inexperienced team in a short period of time.
In practice, the correct implementation of Agile software methods improves the interaction between IT and business, accelerates the product to market, and increases the value to the end user.
If you would like to know more about the development and management approaches we stick to, contact LITSLINK experts — we will find the best-fitting solution to build a robust app!