CHAPTERS
OVERVIEW
An Agile development approach emphasizes the quick and frequent delivery of quality software products through an iterative and incremental process. Based on the Agile Manifesto, Agile development prioritizes customer interaction, working software, and customer collaboration in Software Development Life Cycle.
Software projects could be definable work or work with high uncertainty. A set of clear procedures that have proven successful in previous similar projects characterizes a definable work project. Because high-uncertainty projects have increased risk, and high complexity, they can be challenging for traditional methods that aim to anticipate most requirements and drive any change through the change request process.
To overcome this shortcoming, an Agile development approach was developed to allow teams to adapt quickly based on assessment and feedback.
An Agile Manifesto comprises four values and 12 principles for developing software in an Agile manner. In February 2001, 17 software development practitioners published the Agile Manifesto to address the ever-increasing need for alternatives to documentation-based and heavyweight software development processes.
The authors of the Agile Manifesto realized these principles would significantly impact software development, but in no time, their ideas spread beyond the software industry.
Agile Manifesto is a set of guiding values and principles for software development that prioritize individuals and interactions, working software, customer collaboration, and response to change. The Agile Manifesto is instead a general philosophy that has inspired many Agile development methodologies, such as Scrum, Kanban, and Lean
The values and principles of the Agile Manifesto have been widely adopted in the software development industry. They are seen as a critical driver of innovation and success in software development.
Following are the 4 Agile values:
Here are the twelve clarifying principles that flowed from these Agile values.
Although these principles originated in the software industry, they have spread to many other sectors. This embodiment of mindset, values, and principles defines an Agile development approach. Agile practices today share common roots with Agile values, principles, and mindset.
Agile is a mindset and an iterative approach to software development and project management that enables organizations to succeed in uncertain environments. Today, an Agile team delivers work in small increments. It inherits an organic way of responding to change and delivering high-quality products in less time, regardless of what is being created. The Agile manifesto made the term 'Agile' famous, but the approaches and techniques used by project teams already existed even before the Agile Manifesto.
Traditional software development teams follow a process that starts with creating a detailed project plan and then enter a linear, step-by-step development process with fixed deadlines and no deviations. When requirements change, there is no going back, no repeating. Instead of planning the entire project in advance, Agile teams continuously plan throughout the project and constantly adjust as changes occur.
Organizations operating in dynamic market environments need Agile teams that can work in short development cycles to achieve faster time to market. They prefer using methodologies designed for high-quality, frequent, and sustainable releases. This can be achieved by an Agile team who can deliver tested, working software in 2ā4-week iterations.
How do they achieve that?
Agile approaches and Agile methods are umbrella terms that cover a variety of frameworks and methodologies. The following figure puts Agile in context and visualizes it as an umbrella term that refers to any type of approach, framework, method, technique, or practice that fulfills the values and principles of the Agile Manifesto.
It's important to note that Agile and the Kanban method are subsets of Lean. This is because we refer to them as instances of Lean thinking that incorporate Lean concepts such as "value orientation," "small batch sizes," and "elimination of waste."
Two strategies to fulfill Agile values and principles.
The Agile methodologies are frameworks that teams and organizations use to implement the Agile mindset. If Agile is what, then Agile methods are the how.
Let's look at some of the most popular Agile methodologies.
Scrum is one of the most widely adopted Agile methodologies. Scrum is a prescriptive framework ideal for managing iterative and incremental projects. In Scrum, a product owner sets a list of priorities, the product backlog, which is worked through by a dedicated cross-functional team. The team delivers a "potentially shippable increments" software release in a two or four-week sprint. Product Backlog is re-evaluated and prioritized at the end of every release.
Agile teams prefer Scrum because it is easy to follow and scale. It enables management teams to identify problems early and encourages robust and active collaboration between teams and peers.
Another popular Agile methodology, Extreme Programming (XP), emphasizes speed and continuous delivery. Like Scrum, XP enables closely collaborating teams to deliver working software increments at short intervals, typically every 1-3 weeks. XP relies on customers to communicate the most valuable features of a software product and developers to work toward implementing that feedback.
XP is often recommended for small teams of experienced developers familiar with the Agile XP methodology and comfortable working with stakeholders outside the software development world.
Lean software development is an application of Lean methods. Lean is more flexible than Scrum or XP and has less strict guidelines or rules. Lean principles were implemented in the manufacturing area in the mid-20th century to optimize production waste to ensure value and efficiency in manufacturing and provide maximum value to the customer.
Lean relies on seven principles of Lean management:
Lean places particular emphasis on eliminating waste. In software development, this means eliminating wasted time and unproductive tasks, using team resources efficiently, empowering teams and individuals with decision-making authority, and prioritizing only system functions that provide real value.
Kanban aims to help teams work together more effectively to enable the continuous delivery of quality products. However, Kanban is unique because it provides a highly visual method for actively managing product development.
The Kanban Agile methodology relies on six core practices:
Kanban Agile methodology implements these practices using a Kanban board. The Kanban board facilitates Agile's visual approach using columns representing work to be done, work in progress, and work completed.
The Crystal Agile methodology focuses on the four Agile values, that is, individual interactions of the people involved in a project over tools and techniques of development. Crystal is a lightweight model emphasizing interaction, people, community, skills, communication, and talent.
Crystal categorizes projects based on three criteria:
The approach is like other Agile development methodologies because it emphasizes early and frequent deployment of software, strong user involvement, and eliminating bureaucracy. However, Crystal's assertion that every project is unique has positioned itself as one of the most flexible Agile methodologies.
Feature-Driven Development (FDD) is not entirely known as other Agile development methodologies. But if we are dealing with a large and long-running project, FDD could be your choice that provides a framework for product development that starts with an overall model and gradually becomes more granular.
Like other Agile methods, FDD aims to deliver working software quickly and in a repeatable manner. To this end, it uses the concept of "just enough design initially" (JEDI), which involves two-week iterations based on the principle of "plan by feature, design by feature, build by feature." Organizations practice Agile value Feature-Driven Development for its feature-centric approach and scalability.
Another not so known Agile method is Dynamic Systems Development Method (DSDM). DSDM was developed in the 1990s to provide a common industry framework for rapid software development.
The DSDM framework helps prioritize requirements. It also mandates that rework is expected, so all development changes must be reversible. DSDM, like other Agile methods, is based on sprints and is often used with approaches such as Scrum and XP.
Besides the Agile methodologies, organizations rely on frameworks for scaling Agile across the enterprise. These include the Scaled Agile Framework (SAFe), Large Scale Scrum (LeSS), Disciplined Agile (DA), Scrum@Scale, and others. These techniques and frameworks complement the Agile methods explained above.
SAFe is a "knowledge base of integrated principles, proven practices, and competencies for achieving business agility using Agile, Lean, and DevOps implementation."
It is an established and rigorous approach to scaling Agile, including team, program, and portfolio planning. The framework introduced the Agile Release Train (ART) concept to structure work in teams of 50-125 people, with the Release Train Engineer (RTE) as the role at its top. SAFe requires consistent two- and ten-week iterations, which can work well for teams, projects, or organizations with a more established Agile practice. This can prove ambitious for new organizations.
Disciplined Agile was formerly known as Disciplined Agile Delivery (DAD). It is "a human-centered, learning-oriented hybrid Agile development approach to delivering solutions IT. "DA is less prescriptive than SAFe and more focused as a foundational approach. It emphasizes team roles and a goal-oriented approach, making it more flexible than other scaling Agile methods.
As its name suggests, LeSS approaches the challenge of scaling Agile through the lens of Scrum, helping organizations figure out "how to apply the principles, purpose, elements, and elegance of Scrum as easily as possible in a large-scale context." LeSS uses teams as basic building blocks, reduces the role of management, and advocates simplicity over strictly defined processes. LeSS is considered a practical approach for organizations already using Scrum practices and wishing to scale Agile lean and robustly.
Agile teams rarely limit their practices to a single Agile development approach. Each project context has its unique characteristics, such as the different skills and backgrounds of team members, the various components of the product being developed, and the age, scope, criticality, complexity, and legal constraints of the environment in which the work is taking place.
Agile frameworks are not customized for the team. The team may need to adapt practices to deliver value regularly. Often, teams practice their mix of Agile methods, even if they use a specific framework as a starting point.
An example of the most common blends is the coordinated use of the Scrum framework, Kanban method, and Extreme Programming (XP) method elements. In this,
To accomplish your Agile testing requirements, continuous quality cloud platforms like LambdaTest can make your life easier. It provides a scalable cloud that lets you perform manual and automated testing of web and mobile applications across 3000+ real browsers, devices, and operating systems. With LambdaTest, teams can achieve much-needed productivity when it comes to test orchestration and execution.
Subscribe to the LambdaTest YouTube Channel for test automation tutorials around Selenium, Playwright, Appium, and more
Blending practices from these different sources leads to a synergistic outcome with higher performance than any single component on its own
Project teams need awareness of the characteristics and options available to select the most likely successful approach for the situation. An Agile life cycle is an iterative and incremental approach to refine work items and deliver frequently.
The six stages of the Agile Development Life Cycle are:
In this stage, the stakeholder will identify the software's objective and scope. The product owner will prepare a document that defines the essential requirements of the product and the time needed to complete the project. It is recommended to keep minimum requirements to include them in the later phases.
It involves setting up the software development team. The product owner will verify co-developer availability and select the best individuals to ensure the project's success. The product owner will also provide the required resources and tools to the selected front-end and back-end developers.
In the third phase, the development team will begin integrating all of the product requirements collected during the concept and inception stages. It goes through multiple reviews and modifications until being finalized.
Before shipping the software product, the QA team performs several tests to ensure the software's functionality and code cleanliness. If there are any potential issues or defects, they must be addressed quickly by the development team.
Once the software is accessible to the end users, the software product moves to the maintenance stage. Here the development team is responsible for providing support to the customer or end-users to ensure that the software functions smoothly without any hiccups.
The retirement of a product occurs when new software is introduced or if an existing one becomes obsolete after some time. After that, a notification is sent to the end users and customers that the software is being retired.
When the system gets replaced, it will migrate users to the new system. At last, the developers carry out the remaining activities to discontinue supporting the outdated software product.
Here are the typical characteristics of the Agile project life cycle:
In an Agile development environment, the team expects requirements to change. The iterative and incremental approaches provide feedback to plan the next part of the project better. There are two possible ways to achieve incremental delivery so the project aligns with customer needs and can be adapted as necessary.
In Iterative-based Agile development, the team works in iterations (time segments of equal duration) to deliver finished features. The team works on the essential feature and completes it collaboratively. Then the team works on the next most important feature and completes it.
The team may decide to work on some functions, but the team does not tackle all the work for the iteration simultaneously.
In Flow-based Agile, the team pulls features from the backlog based on its capacity to begin work rather than on an iteration-based schedule.
The team defines its workflow with columns on a task board and manages the work in progress for each column. Each feature can take different amounts of time to complete. Teams keep work in progress small to identify problems early and reduce rework if changes are needed. Without iterations to determine planning and review dates, the team and business stakeholders choose the most appropriate schedule for planning, product reviews, and retrospectives.
Agile implementation involves creating an Agile development environment and then delivering in the created Agile environment.
Shifting to Agile involves a change in processes achieved through a culture change. Decades before, when Agile was relatively new as a procedure, a change of mindset was a big hurdle, but now, with more established tools and techniques, this has become relatively easy.
The first step to creating an Agile environment is to create an Agile mindset. Managing a project with an Agile development approach requires the project team to adopt an Agile mindset. The answers to the following questions will help develop an implementation strategy:
The second critical implementation philosophy is Servant Leadership. Agile development approaches emphasize servant leadership to empower teams. Servant Leadership is the practice of leading in service to the team, focusing on understanding and addressing the needs and development of team members to enable the highest possible team performance.
The role of a servant leader is to facilitate the team's discovery and definition of agility. Servant Leaders practice and promote agility. They approach project work in this order:
The center of both values and principles of the Agile Manifesto is the importance of individuals and interactions. In practice, the most effective Agile teams range in size from three to nine members. Ideally, Agile teams are collocated in a team space.
Agile encourages self-managing teams, where team members decide who will perform the work within the defined time scope. Agile teams thrive with servant leadership. In Agile, three typical roles are used: Cross-functional team members, Product owner, and Team facilitator.
Cross-functional teams consist of team members with all the skills needed to produce a functioning product. In software development, cross-functional teams typically comprise designers, developers, testers, and all other required roles. Cross-functional development teams composed of SMEs delivering potentially releasable products regularly. Cross-functional teams are critical because they can provide finished products quickly and with higher quality without external dependencies.
The product owner is responsible for the direction of the product. Without attention to the highest value for the customer, the Agile team may create features that are not appreciated or otherwise insufficiently valuable, therefore wasting effort.
Product owners work with their teams daily by providing product feedback and direction for the following functionality to be developed/delivered. The work is often so small that it can be described on an index card. The Product Owner concurrently works with stakeholders, customers, and teams to define the direction of the product.
Typically, the product owner has a business background and brings deep expertise to the decisions. Sometimes the product owner asks for support from people with deep expertise, such as architects, or customer knowledge, such as product managers. Product owners need to be trained to organize and manage the workflow within the team.
Product owners create the backlog for and with the team in the Agile development approach. Using the backlog, teams can identify how to deliver the most value without creating waste. A critical success factor for Agile teams is strong product ownership. Without attention to the highest value for the customer, the Agile team may develop features that are not appreciated or otherwise insufficiently valuable, therefore wasting effort.
The third role typically found in Agile teams is that of a team facilitator, a "servant leader." This role can be a project manager, scrum master, project team leader, coach, or facilitator. All Agile teams need servant leadership on the team. People need time to develop their servant leadership skills in facilitation, coaching, and removing obstacles.
Many organizations initially consult external Agile coaches when their internal coaching skills still need to be fully developed. External coaches have the advantage of experience but the disadvantage of weak relationships in the client organization.
On the other hand, internal coaches have good relationships in their organization but may need a wealth of experience to make them highly effective.
Agile development is a set of values and principles that guide software development processes. Here are some common agile development practices:
The most important practice is the retrospective because it allows the team to learn about, improve, and adapt its process. Retrospectives help the team learn from its previous work on the product and its process.
It reflects one of the 12 principles of the Agile Manifesto:
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly." Many teams use iterations, especially 2-week iterations, because the iteration prompts a demonstration and a retrospective at the end. However, the team can skip iterations to retrospect.
The backlog is the ordered list of all the work, presented in story form, for a team. Product owners value a team that includes the product manager and all relevant product owners for that area. They might show a product roadmap to show the anticipated sequence of deliverables over time.
In Iteration-based Agile, the product owner often works with the team to prepare some stories for the upcoming iteration during one or more sessions in the middle of the iteration. These meetings aim to refine enough stories so the team understands what the stories are and how large the stories concern each other.
Teams use standups to micro-commit to each other, uncover problems, and ensure the work flows smoothly through the team. Timebox the standup to no longer than 15 minutes. The team "walks" the Kanban or task board somehow, and anyone from the team can facilitate the standup.
In Iteration-based Agile, everyone answers the following questions in a round-robin fashion:
As the team completes the features, usually in the form of user stories, the team periodically demonstrates the working product. The product owner sees the demonstration and accepts or declines stories.
A project implemented in an Agile environment is working with scratchpad, where the self-managing teams are provided with the base requirements and must create their own plan of execution to the end deliverable. And how do they track them? They do this by developing themes, epics, stories, and tasks.
A theme is a broader area of focus that helps an Agile team keep track of its organizational goals. A theme helps to define and head to the common characteristics of different areas.
An epic is an extensive collection of smaller stories that combine to make one big story. An epic cannot be completed in a single sprint or Agile iteration.
A story, also called a user story, is a short-form request that can be delivered in one sprint. It is written in simple language from the perspective of the user. Story points are used to measure the complexity of a story. The overall goal of a story is to provide value to its user within a set timeframe.
A task is a subsection of a story. It helps to break the story down and outline how it will be completed. Tasks tend to be more technical as development team members use them (e.g., a quality assurance tester) rather than a front-end user.
In this section of the Agile development tutorial, letās explore different measurement strategies to measure the success of your Agile efforts.
Story points are units of measure representing an estimate of the overall effort required to implement a product backlog item or task of the sprint. Teams assign story points according to the complexity of work, the amount of work, and risk or uncertainty.
Agile story points are represented using the Fibonacci sequence.
In the Fibonacci series, each number is the sum of the two preceding numbers in the sequence.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
1 being the minimum and the higher number being the maximum.
Many Agile teams use tweaked Fibonacci sequences where the minimum story point is 1, and the maximum story point is 100.
There are three critical factors in the story point estimation process:
All these elements must combine for accurate story point estimation.
A product owner is involved in the story point estimation process, but they do not influence the estimate of Agile story points since this is a team effort. Since the Agile team members work on the user story, they are the best ones to estimate the required effort.
A burndown chart is a run chart of work left. It is a graphical representation of work completed over time in an Agile project. It tracks the remaining work and predicts when all work will be completed.
The chart consists of two axes: the horizontal axis represents time (usually in sprints or weeks), and the vertical axis represents the amount of work remaining (usually in story points, a measure of the effort required to complete a task).
Ideally, the burndown line should trend downwards in a linear fashion, with the work being completed at a steady rate throughout the sprint. The burndown chart can be used to identify if the team is on track to complete the work within the timebox allocated for the sprint, and if not, the team can take appropriate action. It also helps the team visualize their progress and identify any issues impacting their productivity.
More and more leaders and managers worldwide are looking at Agile coaching and training to create a culture of agility throughout the organization, from HR to the executive suite. The Agile approach they most often turn to is Scrum.
Scrum is an Agile approach with teams delivering products in short cycles, quick feedback, and continual improvement through rapid response to change.
Let us understand this through a business case.
As each functionality is completed, the customers and stakeholders give feedback informing the next functionality. This cycle repeats until the entire product is delivered. This way, only that product is delivered that meets customer needs.
Agile is a philosophy. It is an umbrella term that refers to a set of practices and mindsets. Scrum is an Agile methodology that creates a framework to implement Agile development principles and values.
Scrum is the most widely used Agile method. Kanban, Lean, Extreme Programming (XP), Crystal, Dynamic Systems Development Method (DSDM), and Feature Driven Development (FDD) are other Agile development methodologies. Many organizations usually use a mix of these Agile methodologies in combination to organize their teams and business initiatives.
Some parts of Scrum principles reflect Agile philosophy, while several points make it stand out within the Agile philosophy.
Key similarities between Scrum and Agile that make Scrum an Agile process:
Pointers that distinguish Scrum from other Agile development methods:
With the benefits of Agile-Scrum adoption just discussed, several organizations have adopted the Agile development approach for benefits that suit existing team dynamics and goals. Some aim to increase productivity and reduce time-to-market delivery, while others aim for more successful products. Some teams aim to improve quality, collaborate between developers and business, or increase team member work satisfaction. Of course, some organizations adopt Scrum to achieve a combination of these benefits.
But as many benefits, there are some misconceptions.
Managers often work down at the level of assigning tasks to individuals. Since the development team does this in Scrum, managers feel they need a role to play. But in the first place, things like assigning tasks should never have been part of the job.
Managers should create an environment and culture in which a team needs to thrive, whether waterfall or Agile. Managers can step into the shoes of the Scrum Master or Product Owner to gain a more focused role.
This is one myth stakeholders live with too. Although they can bring in a change anytime, it comes at a cost, even in an ongoing sprint. If the change is introduced at the right time, there may be little or no cost, but if it is introduced at the wrong time, there will be a cost.
Considering this, it is not that teams should not welcome changes. Sometimes the change introduced by product owners can be significant. In that case, good Scrum teams reduce the cost of change by performing small iterations and picking up fewer backlog items. Being Agile cannot eliminate all costs of stakeholders introducing change. But, the benefit of making each change needs to be assessed against the cost of changing, and that cost is only sometimes zero.
Scrum teams do not expect everyone to have all skills. Scrum teams need to value individuals who possess skills in multiple disciplines. Having a few team members with multiple skills is always an advantage. It can help manage the balance of work, e.g., having a team member or two who can shift into doing testing helps incredibly.
Scrum teams indeed design their products. But, they plan incrementally. This allows them to inspect and adapt their architectures and designs to become the best possible. There may not be an upfront phase during which all architectural decisions are made, but the architecture of a product emerges over time.
Here are some best practices for implementing Agile development methodology:
Unless members have extensive prior experience, Agile teams do not intuitively know how to self-organize, plan, and execute an Agile development project. It takes training, coaching, and mentoring to make an Agile team. A team performing at full throttle still benefits from a mentor who can help them grow their skills.
As software professionals, when we analyze how the history of Agile development has taught us about diversity and integration, we learn
Adopting the Agile development approach in enterprise environments helped organizations improve software quality, increase team productivity, manage priorities better, and increase go-to-market delivery. Many organizations still need help to scale Agile beyond small teams.
Legacy systems, gaps in Agile knowledge, and resistance to change adoption are a few challenges that slow the adoption of Agile development methodologies. Critical success factors like shifts in delivery and organizational mindset, consistent processes, and proper training and coaching should be focus areas for companies trying to implement Agile or scale their Agile development efforts beyond single or small teams. The goal is not to be Agile for its own sake but to deliver a continuous flow of value to customers and achieve better business outcomes.
Agile development is a modern software approach that emphasizes flexibility, customer feedback, and iterative progress. It uses short iterations to deliver working software frequently, adapting to changing requirements. Cross-functional teams collaborate to deliver valuable products efficiently.
Agile software development is a customer-focused, iterative approach to building software products. It emphasizes adaptability, collaboration, and continuous delivery to deliver high-quality solutions efficiently.
5 important agile methodologies include Scrum, Kanban, Extreme Programming (XP), Adaptive Software Development and Dynamic Software Development Method.
Agile Scrum Methodology is a collaborative, adaptable framework. It uses short iterations called sprints to deliver increments of software. Daily stand-ups and ceremonies promote teamwork.
The examples of Agile development are Scrum, Extreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM), Crystal, Kanban, Lean Software Development (LSD), etc.
Agile development is used as it facilitates timely project completion within budget, enhances communication between teams and product owners, and mitigates risks in complex projects.
Agile emphasizes delivering fully functional applications, integrations, and user-centric deliverables, not just technical components. Team alignment on tasks, responsibilities, and development approach is crucial for successful software development.
The key distinction lies in Agile being a project management philosophy with core values, while Scrum is a specific Agile methodology for project facilitation. Agile focuses on values and principles, while Scrum is a framework for project execution.
In agile, the definition of a project remains consistent with traditional terms, but the difference lies in the approach, execution, and underlying values. Both agile and traditional projects have defined start and end points.
The five steps in Agile development are Ideation, Development, Testing, Deployment, and Operations.
Reviewer's Profile
Salman Khan
Salman works as a Digital Marketing Manager at LambdaTest. With over four years in the software testing domain, he brings a wealth of experience to his role of reviewing blogs, learning hubs, product updates, and documentation write-ups. Holding a Master's degree (M.Tech) in Computer Science, Salman's expertise extends to various areas including web development, software testing (including automation testing and mobile app testing), CSS, and more.