Agile Software
Agile Software
Agile is not just a methodology; it’s a mindset. Agile isn't about following specific
rituals or techniques.
Instead, it's a bunch of methods that show a dedication to quick feedback and always
getting better.
Methodology-
Agile methodologies are iterative and incremental, which means it's known for
breaking a project into smaller parts and adjusting to changing requirements.
1. They prioritize flexibility, collaboration, and customer satisfaction.
2. Major companies like Facebook, Google, and Amazon use Agile because of its
adaptability and customer-focused approach.
History of Agile
In 1957, people started figuring out new ways to build computer programs. They
wanted to make the process better over time, so they came up with iterative
and incremental methods.
In the 1970s, people started using adaptive software development and
evolutionary project management. This means they were adjusting and evolving
how they built software.
In 1990s, there was a big change. Some people didn't like the strict and super-
planned ways of doing things in software development. They called these old
ways "waterfall." So, in response, lighter and more flexible methods showed up.
These included:
o Rapid Application Development (RAD) in 1991.
o Unified Process (UP), Dynamic Systems Development Method (DSDM) in
1994.
o Scrum in 1995.
o Extreme Programming (XP) in 1996.
o Feature-Driven Development (FDD) in 1997.
In 2011, the Agile Alliance, a group of agile enthusiasts, made the Guide to Agile Practices
(later called Agile Glossary). This was like a shared document where agile people from
around the world put down their ideas, terms, and guidelines. It's a bit like a dictionary for
how to do agile things.
4. Scalability:
o Designing an architecture that can scale while still being developed
incrementally.
Why Agile?
• Faster Delivery: Smaller deliverables reach the customer more quickly.
• Better Quality: Continuous testing and feedback improve quality.
• Happy Customers: Regular involvement ensures the product matches their
needs.
• Reduced Risk: Frequent deliveries help detect issues earlier.
Sprint: A Sprint is a time box of one month or less. A new Sprint starts
immediately after the completion of the previous Sprint.
Release: When the product is completed, it goes to the Release stage.
Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then passed to the Sprint Retrospective stage.
Sprint Retrospective: In this stage quality or status of the product is checked.
Product Backlog: According to the prioritize features the product is
organized.
Sprint Backlog: Sprint Backlog is divided into two parts Product assigned
features to sprint and Sprint planning meeting.
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their work between them every hour.
Testing: Testing code helps to remove errors and improves its reliability.
XP suggests test-driven development (TDD) to continually write and execute test
cases. In the TDD approach, test cases are written even before any code is
written.
Incremental development: Incremental development is very good because
customer feedback is gained and based on this development team comes up
with new increments every few days after each iteration.
Simplicity: Simplicity makes it easier to develop good-quality code as well as to
test and debug it.
Design: Good quality design is important to develop good quality software. So,
everybody should design daily.
Integration testing: Integration Testing helps to identify bugs at the interfaces of
different functionalities. Extreme programming suggests that the developers
should achieve continuous integration by building and performing integration
testing several times a day.
XP Coach
Since the team is self-organized and cross-functional, a management layer or explicit
leadership role is often found not useful.
Instead of traditional management roles, the XP Coach plays a supporting role in the
team’s success.
A coach helps a team follow the process and helps the team to learn discipline and
make sure that XP Principles are followed well by the team.
On-Site Customers
As the Product Owner role in the scrum, in XP - the On-Site Customer role is
responsible for maximizing the product value and defining the features and stories
with acceptance criteria.
Programmer
The XP team has 4-10 developers who can work together practicing XP core values like
pair programming, practice test-driven development, continuous integration,
automation testing, and reducing technical debt by refactoring the code as required.
Testers
Tester is also one of the important roles and a rule of thumb is to have one tester per
four programmers. in some cases, XP team members play the role of testers and there
aren't any dedicated testers, the programmers and the on-site customers are
expected to fill the role by using strategies like Test-Driven Development, automated
regression testing, or exploratory testing.
XP Tracker
XP Tracker is the role to keep track of the team's progress at an iteration level.
Sponsor
The sponsor is the person who is funding the project and is a very important
stakeholder of the project. A team must interact with sponsors regularly to provide
demos and get valuable feedback.
Principles-
1.coding –
The concept of coding which is used in the XP model is slightly different from
traditional coding. Here, the coding activity includes drawing diagrams (modeling)
that will be transformed into code, scripting a web-based system, and choosing
among several alternative solutions.
2.testing
3.listening –
The developers need to carefully listen to the customers if they have to develop good
quality software. Sometimes programmers may not have the depth knowledge of the
system to be developed. So, the programmers should understand properly the
functionality of the system and they have to listen to the customers.
4. Designing-
Without a proper design, a system implementation becomes too complex, and very
difficult to understand the solution, thus making maintenance expensive.
5.Pair Programming –
XP encourages pair programming where two developers work together at the
same workstation.
This approach helps in knowledge sharing, reduces errors, and improves code
quality.
6. Refactoring –
XP encourages refactoring, which is the process of restructuring existing code to
make it more efficient and maintainable.
In agile software development, user stories are typically written on index cards or in a
digital format, and are used to drive the development process.
The development team uses user stories to plan and prioritize work, estimate the
effort required for implementation, and track progress towards completing the user
stories.
By using user stories in agile software development, teams can ensure that they are
building software that meets the needs of the users and delivers value to the
business.
Example:
• As a customer, I want to view my order history so that I can track my purchases.
• As an administrator, I want to manage user accounts so that I can ensure system
security.
Key Elements of a User Story:
1. Title: A concise summary of the story.
o Example: "View Order History"
2. Description: Details the goal of the story using the format above.
3. Acceptance Criteria: Defines the conditions that must be met for the story to be
considered complete.
o Example:
Users can view a list of their past orders.
Users can filter orders by date.
4. Story Points (Optional): A measure of effort or complexity assigned by the
team.
5. Priority: Helps determine the importance and sequencing of the story.
1. Once the user story is fully written then it undergoes review and verification.
2. In project workflow meetings it is reviewed and verified then added to the
actual workflow.
3. Actual requirements and functionality are decided based on the stories.
4. User stories are scored based on their complexity and the team starts work
based on user stories.
Test-driven development (TDD) is a method of coding in which you first write a test
and it fails, then write the code to pass the test of development, and clean up the
code.
This process recycled for one new feature or change.
In other methods in which you write either all the code or all the tests first, TDD will
combine and write tests and code together into one.
Test-Driven Development (TDD) is a method in software development where the
focus is on writing tests before writing the actual code for a feature.
This approach uses short development cycles that repeat to ensure quality and
correctness.
Pair Programming-
Mutual Learning –
Both of them can share their knowledge with each other and can learn many
new things together.
Techniques
Pair programming is more than just putting two developers together.
Over time, experts have developed and improved different ways to
make it work for different situations
Driver-Navigator: In this method, one programmer (the driver) actively
writes code, while the other (the navigator) reviews each line and provides
guidance
Popular CI Tools
• Jenkins: Open-source and highly customizable.
• GitHub Actions: CI/CD directly integrated with GitHub repositories.
• GitLab CI/CD: Built into GitLab, supports CI/CD pipelines.
• Circle-CI: Simplifies CI/CD with pre-configured pipelines.
• Azure DevOps: Comprehensive tool for CI/CD and project management.
Steps –
1. Determine your Product Vision
Creative strategy –
Start by defining the massive image of your product. Consider market tendencies,
client profiles, and advertising agency goals to decide the direction of your group’s
adventure.
Prioritize
Scripting the backlog: Create purchaser proofs and recognition criteria for each
object backlog, making sure requirements and validating assumptions.
Integrated release
Important
3. Risk Reduction:
In the unpredictable international environment of software development, surprises
are inevitable. However, an agile release tool acts as a safeguard, enabling teams to
create and address issues earlier in the development cycle. By repeatedly releasing
low-level updates, teams can gather valuable feedback, iterate their responses, and
evolve quickly if desired.
This proactive approach to risk management reduces costly mistakes ensures smooth
sailing at some point in the development journey requirements and validates
assumptions.
4. Stakeholder Alignment:
When it comes to a clean startup plan, the purpose is to get everybody on the same
page.
The platform brings stakeholders together, from product proprietors to development
teams and advertising and marketing organization leaders.
Prerequisites of Planning:
• A Product Owner manages the ranked product backlog. While releasing the
product, the Product owner feels to include five to ten features at the period of
product release.
• High- level vision
• Market and Business objective
• Team's input according to capabilities, known velocity, or about any technical
challenge.
• Acknowledged about the new product backlog items are needed Material
Required:
The company gets the knowledge of ‘How the team members are working”, and
“Can determine the accomplishment of the task”.
From the burn-down chart graph, we can estimate when the project is going to be
complete. It is generally useful when a team does not make any progress in the
project in the middle may be due to any reason, at that time they take the help of it
and plan accordingly to complete the project within the given time.
It checks the productivity of the work. It is widely used in agile and scrum project
management.
As from above, we got an idea that it is the graphical representation of work done,
work to be done, and the time required for pending work done.
So, these are the main components that are involved during the burndown chart
scrum creation steps. Let’s know the steps individually.
• Estimating Work:
Estimating work means from the backlog deciding what tasks need to be done
and how much time is required to complete these tasks.
More specifically how many user stories in how many days?
• Estimating Time: Estimating remaining time means how much time is left for a
sprint.
• Estimating Effort:
Estimating effort means managing effort accordingly looking at the work left and
time left and tracking the burndown slope (means work completion track).
In Y-axis a point (work needs to be done) and in X-axis a point (time remaining),
the straight line from the Y-point to the X-point is the burn downslope.
• Tracking Progress:
Tracking daily progress includes comparing the actual daily progress with the
expected progress as per effort estimation.
So, if the daily progress line is below the burndown slope, then the team is
ahead of schedule, if the daily progress line is above the burndown slope, then
the team is far behind the target and if the daily progress line and burndown
slope are lined up then it is in the right track.
Characteristics –
1. Iterative and Incremental: Agile design follows an iterative and
incremental method, wherein the layout process is broken
down into smaller chunks referred to as sprints. Each sprint
specializes in delivering a working product or layout that may
be tested and evaluated.
2. Collaborative: Agile layout emphasizes collaboration between designers, builders, and
stakeholders during the design manner. This facilitates making certain that everyone is
aligned and operating toward the same goal.
3. Flexibility and Adaptability: Agile design permits flexibility and adaptability because the
layout system is not rigidly described. It allows for adjustments and modifications to be
made as wished, primarily based on comments and evolving necessities.
4. User-Centric: Agile design places the consumer in the center of the layout manner. It
entails non-stop checking out and feedback from users to make certain that the very last
product meets their desires and expectations.
5. Continuous Improvement: Agile design is focused on continuous improvement, with each
iteration building upon the previous one. This facilitates refining and improving the design
primarily based on personal comments and converting requirements.
6. Cross-Functional Teams: Agile layout involves cross-purposeful groups, in which designers,
builders, and stakeholders with one-of-a-kind talent sets and perspectives work together
to create the finest possible design.
Principles –
There are 7 different Agile Design Principles
1. Executives are Geared up to Aid UX Designers
This precept highlights the significance of government buy-in and
consumer support (UX) designers. When executives apprehend
the price of consumer-centered design and actively aid the efforts
of UX teams, it creates surroundings wherein user desires and
layout concerns are given due significance in selection-making
procedures.
2. Teams must be Cross-functional
Cross-functional teams are the ones composed of members with
diverse talents vital to finishing an assignment. In an Agile context,
this indicates having people with a whole lot of information (layout,
improvement, checking out, and so on.) running collectively. Cross-
functional groups foster collaboration, lessen dependencies, and
enable faster decision-making.
5. Research and Checking out are Baked into the Layout Technique
Integrating user research and trying out for the duration of the
design system guarantees that the product aligns with consumer
needs.
Timeboxing-
Timeboxing in Agile software development is a key practice that
involves setting fixed, limited durations for specific tasks, activities,
or iterations.
The goal is to focus efforts within a defined timeframe, ensuring
that work progresses steadily without unnecessary delays.
Timeboxing helps manage scope, prioritize effectively, and deliver
value incrementally.
Benefits of Timeboxing
1. Promotes Efficiency:
o Forces teams to focus on essentials and deliver results
within constraints.
2. Prevents Overcommitment:
o Ensures that work is manageable within the allocated
time.
3. Encourages Iterative Progress:
o Facilitates regular, incremental delivery of value.
4. Clear plan:
o Makes it easier to plan and manage work by setting clear
deadlines.
5. Clear goals:
o Teams are more likely to stay on track with clear, time-
based goals.
COLLABORATION –
1. Pair programming
2. Collective ownership
3. Stand up meeting
4. Continuous integration
challenges -
Time Constraint: Time is the biggest challenge for doing
refactoring in Agile projects as the Sprints are time-boxed with
a defined set of deliverables.
Reluctance: If the code is working fine without any refactoring done,
there will be an inclination towards not revisiting the code.
Re-Testing
Product Backlog :
Product backlog is compiled of all the things that must be
done to complete the whole project.
But it’s not an easy task. Product backlog breaks down each
of the items on the record into a series of steps that helps
the development team.
So, the team knows when to start the work and how long
they have until they must finish it by the time given to them.
With the help of task management software, this process
can be accelerated.
The product backlog is shrinking because it should be
removed from the product backlog list once a task is
completed. Sometimes, however, new items are added, as
the project grows.
Sprint Backlog :
The product backlog is like a superset of the sprint backlog.
The sprint backlog evolves from the product backlog, but it
holds less items, that can be completed within each agile
sprint. Like in each sprint some features needs to be
developed which comes under sprint backlog.
The sprint backlog will determine by the difficulty of the
project, but overall the knowledge is to dedicate the team
only to those tasks that can be completed within the sprint.
Naturally, it is a complex project that sprint backlog can also
develop in complexity and length.
Kanban -
Kanban is a popular Agile Software Development Methodology. It is
a signaling device that instructs the moving of parts in a ‘pull’
production system, developed as part of the TPS (Toyota Production
System).
Kanban is about en-visioning the existing workflow in terms of steps.
These steps can be created on the whiteboard.
The main aim of Kanban is to reduce WIP (Work-In-Progress), or
inventory, between processes by ensuring the upstream process
creates parts as long as its downstream process needs it.
The goal of the Kanban execution is to ensure work items move to
the next steps quickly to realize business value faster.
Kanban Board/Card
It is critical to understand the visualization of workflow stages in the
task execution pipeline. Kanban board provides a simple way to
understand the process.
1. Every request received is put on the Kanban board.
2. A column on the board represents a stage (these stages are
termed as the Work stage) during the lifecycle of bugs/
tickets.
3. The received stage could be called a “Backlog” also.
4. Kanban board could be a simple whiteboard on which sticky
notes
5. ALM tools like Rally/ Jira could be configured to use the Kanban board.
APPLICATION ON KANBAN –
frequent changing requirements which need to be delivered
faster.
In case of changing priorities, the team can pull the prioritized
work as soon as the WIP limit drops.
Frequent releases are there (Periodically).
When incoming work is continuous.
Where task priority needs to be decided dynamically based on
task nature and type.
Kanban could be used by any function of an organization
Principles of Kanban:
o Start with what you are doing now: The Kanban does not
believe in making the changes to the setup or the continuing
process. It is mainly applied to the current workflow. Any
changes that occur gradually over a while at a pace when the
team is comfortable with.
o Agree to pursue incremental, evolutionary change: Kanban
believes in making small steps rather than making big changes.
If significant changes are made, it may be led to substantial
resistance between the team and the organization.
o Initially, respect current roles, responsibilities, and job titles:
o No organizational changes are made by Kanban.
o So it is not mandatory to change the existing parts which might
be performing well because the team will collaboratively
identify and implements whenever the changes are
demanded.
o leadership at all levels:
o Kanban encourages the team members by continuously
encouraging them.
o It is because it believes that leadership does not come from
senior managers only.
o Peoples at any level can present their ideas and show
leadership whenever it is required to implement changes so
that they can deliver their products and services continuously.
Agile Stakeholders-
Stakeholders in Agile projects are individuals or groups with an
interest in or influence over the project.
They play a crucial role in ensuring the project's success by
providing requirements, feedback, and support.
Stakeholders in an Agile project can be either internal or external.
Internal stakeholders are those whose interest in your project
comes from a direct relationship. External stakeholders don’t work
with you directly, don’t necessarily know you’re building a product,
but will be affected by it in the future.
Requirements Engineering –
Requirements Engineering is the process of identifying, eliciting,
analyzing, specifying, validating, and managing the needs and
expectations of stakeholders for a software system.
A systematic and strict approach to the definition, creation, and
verification of requirements for a software system is known as
requirements engineering.
2. 2. Requirements Elicitation
It is related to the various ways used to gain knowledge about the
project domain and requirements.
The various sources of domain knowledge include customers,
business manuals, the existing software of the same type,
standards, and other stakeholders of the project.
The techniques used for requirements elicitation include interviews,
brainstorming, task analysis, Delphi technique, prototyping, etc.
Elicitation does not produce formal models of the requirements
understood. Instead, it widens the domain knowledge of the analyst
and thus helps in providing input to the next stage.
Requirements elicitation is the process of gathering information
about the needs and expectations of stakeholders for a software
system.
This is the first step in the requirements engineering process and it
is critical to the success of the software development project.
The goal of this step is to understand the problem that the software
system is intended to solve and the needs and expectations of the
stakeholders who will use the system.
3. Requirements Specification
This activity is used to produce formal software requirement
models. All the requirements including the functional as well as the
non-functional requirements and the constraints are specified by
these models in totality.
During specification, more knowledge about the problem may be
required which can again trigger the elicitation process. The models
used at this stage include ER diagrams, data flow diagrams(DFDs),
function decomposition diagrams(FDDs), data dictionaries, etc.
. Requirements Management
Requirement management is the process of analyzing,
documenting, tracking, prioritizing, and agreeing on the
requirement and controlling the communication with relevant
stakeholders.
This stage takes care of the changing nature of requirements. It
should be ensured that the SRS is as modifiable as possible to
incorporate changes in requirements
DSDM
DSDM Atern is a vendor-independent implementation of the agile
project delivery framework Dynamic Systems Development Method
(DSDM). It is a generic approach to agile project management rather
than solely focused on software delivery.
DSDM differs from many agile approaches in that it retains a role for
a project manager and considers itself compatible with other
project management approaches such as PRINCE2 and PMI.
The DSDM approach is scalable from small teams to-large scale,
across many teams. There are many roles defined, which may be
shared or combined.
Phases
The DSDM project process has 6 phases:
1. Pre-project. Helps start the project correctly and prevents
poor projects beginning.
2. Feasibility. Check the project is technically feasible, and the
business case is viable.
3. Foundations. Teams spend a few weeks establishing the
business rationale, the technical solution and approach.
4. Evolutionary development. Teams build increments of
prioritised features in iterations of the system.
5. Bring the system into operational use.
6. Post-project. Quantify the benefits delivered by the project.
Principles
To get the full benefit of the DSDM framework, teams must adopt a
mindset that focuses on the following principles:
1. Focus on the business need. Make all decisions with the
overriding project goal in mind.
2. Deliver on time. The most critical success factor is on-time
delivery.
3. Collaborate. Collaborative teams always outperform those
that don’t.
4. Never compromise quality. The quality of the system must be
good enough.
5. Build incrementally from firm foundations. Perform sufficient
analysis and design upfront.
6. Develop iteratively. At the end of each iteration, work is
reviewed and feedback is received.
7. Communicate continuously and clearly. The most significant
cause of project failure is poor communication.
8. Demonstrate control. Proactive management of plans to
ensure the project remains in control at all times.
Core techniques
At the core of DSDM are a collection of techniques:
Timeboxing. Creates motivation and pressure to achieve an
objective in a fixed period.
deadline. Understanding the relative priority of requirements
helps the team make progress and hit deadlines.
Decision. Facilitated workshops are a proven practice for
driving rapid high-quality decision making and buy-in.