0% found this document useful (0 votes)
9 views75 pages

Agile Software Development Overview

Uploaded by

akp03700
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views75 pages

Agile Software Development Overview

Uploaded by

akp03700
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Fundamentals of Agile

Process
Module#2

1
Software Development Life Cycle Process
• SDLC is a process that defines the various stages involved in the
development of software for delivering a high-quality product.
• SDLC stages cover the complete life cycle of a software i.e. from
inception to retirement of the product.

2
Software Development Life Cycle Process

• Planning and requirement analysis


• Requirement Analysis is the most important and necessary stage in SDLC.
• The senior members of the team perform it with inputs from all the
stakeholders and domain experts or SMEs in the industry.
• Planning for the quality assurance requirements and identifications of the
risks associated with the projects is also done at this stage.
• Business analyst and Project organizer set up a meeting with the client to
gather all the data like what the customer wants to build, who will be the
end user, what is the objective of the product. Before creating a product, a
core understanding or knowledge of the product is very necessary.

3
Software Development Life Cycle Process
• Defining Requirements
• Once the requirement analysis is done, the next stage is to certainly
represent and document the software requirements and get them accepted
from the project stakeholders.
• This is accomplished through "SRS"- Software Requirement
Specification document which contains all the product requirements to be
constructed and developed during the project life cycle.
• Designing the Software
• The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project.
• This phase is the product of the last two, like inputs from the customer
and requirement gathering.
4
Software Development Life Cycle Process
• Developing the project
• In this phase of SDLC, the actual development begins, and the
programming is built.
• The implementation of design begins concerning writing code.
• Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters,
debuggers, etc. are used to develop and implement the code.
• Testing
• After the code is generated, it is tested against the requirements to make
sure that the products are solving the needs addressed and gathered
during the requirements stage.
• During this stage, unit testing, integration testing, system testing,
acceptance testing are done. 5
Software Development Life Cycle Process
• Deployment
• Once the software is certified, and no bugs or errors are stated, then it is
deployed.
• Then based on the assessment, the software may be released as it is or
with suggested enhancement in the object segment.
• After the software is deployed, then its maintenance begins.
• Maintenance
• Once when the client starts using the developed systems, then the real
issues come up and requirements to be solved from time to time.
• This procedure where the care is taken for the developed product is
known as maintenance.
6
Agile development methodologies
• A small history of Software development processes
Waterfall development process
• You complete one phase (e.g. design)
before moving on to the next phase(e.g.
development)
• You rarely aim to re-visit a ‘phase’ once
it’s completed. That means, you better get
whatever you’re doing right the first time!
• You don’t realize any value until the end of the
project
• You leave the testing until the end.
• You don’t seek approval from the stakeholders
until late in the day
• This approach is highly risky, often more
costly and generally less efficient than
Agile approaches
Agile
• Not a process, it's a philosophy or set of values
• Agile is a time boxed, iterative approach to software delivery that builds
software incrementally from the start of the project, instead of trying to
deliver it all at once near the end.
• It works by breaking projects down into little bits of user functionality
called user stories, prioritizing them, and then continuously delivering
them in short two week cycles called iterations.
Concept of Agility
● Agility is the ability to both create and respond to change in order to
profit in a turbulent business environment.
● Agility is dynamic, content specific, aggressively change embracing,
and growth oriented.
● It helps software team provide quick and unpredictable responses to
the feedback that they receive on their project.
Agile Process
● Agile process refers to a software development approach based on
iterative development.
● Agile methods break tasks into smaller iterations or parts do not
directly involve long term planning.
● Each iteration is considered as a short time "frame" in the Agile
process model, which typically lasts from one to four weeks.
● The division of the entire project into smaller parts helps to minimize
the project risk and to reduce the overall project delivery time
requirements.
Agile Process
• An agile process reduces the cost of change because software is
released in increments and change can be better controlled within an
increment.
Agile Manifesto

• Individuals and interactions over


processes and tools
• Working software over
comprehensive documentation
• Customer collaboration over
contract negotiation
• Responding to change over
following a plan
Agile Manifesto
• Principles that need to be followed to make a process agile
• Customer satisfaction
• Welcome change
• Deliver Frequently
• Work together
• Motivated team
• Face to face
• Working software
• Constant pace
• Good design
• Simplicity
• Self organization
• Reflect and adjust
Agile Process Model phases
1. Requirements gathering: In this phase, you must define the
requirements, explain business opportunities, plan the time and effort
needed to build the project.
2. Design the requirements: In this, You can use the user flow diagram
or the high-level UML diagram to show the new features and show
how it will apply to your existing system.
3. Construction: When the team defines the requirements, the work
begins. Designers and developers start working on their project,
which aims to deploy a working product.
Agile Process Model phases
4. Testing: In this, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's
work environment.
6. Feedback: After releasing the product, the last step is feedback. In
this, the team receives feedback about the product and works through
the feedback.
Agile Process Model
Agile Model can be used when:
• When frequent changes are required.
• When a highly qualified and experienced team is available.
• When a customer is ready to have a meeting with a software team all
the time.
Agile Process Model
Benefits of using agile model is summarized as follows:
[Link] Delivery
[Link]-to-Face Communication with clients.
[Link] design and fulfils the business requirement.
[Link] changes are acceptable.
[Link] reduces total development time.
[Link] allows for a greater level of control around the software that is
delivered.
Advantages of agile methodology
• Large amount of interaction between the client and the project team

• Improved transparency to clients in every phase of project

• The delivery of the output is predictable and can sometimes be earlier than expected

• The cost of the project are predictable and follow rigid schedule

• It allows for changes to refine and re-prioritize the product backlog

• The client can provide priority features allowing the team to ensure maximum project value

• By focusing on the users , the team can deliver value to the customers

• The project is broken into smaller units, with high quality development, testing and collaboration.
Agile principles
[Link] the customer through early and continuous delivery
[Link] changing requirements, even late in development
[Link] working software frequently
[Link] people and developers must work together daily throughout
the project
[Link] projects around motivated individuals
[Link]-to-face conversations
Agile principles
7. Working software is the primary measure of progress
8. Agile processes promote sustainable development
9. Continuous attention to technical excellence and good design
enhances agility
10. Simplicity
11. Self-organizing teams
12. Adjust ways of working in regular intervals to be more effective
Overview of Agile Development
Models
Agile methodologies
• Scrum
• Framework –used by teams to establish a hypothesis ,try it out, reflect
on experience and adjust

• When is it applicable?
• Used when cross functional teams are working on product
development when work is split into more than one 2-4 iterations
Scrum Values
• Teams following scrum are expected to learn and explore the following values:
• Commitment
• Team members personally commit to achieving team goals
• Courage
• Team members do the right thing and work on tough problems.
• Focus
• Concentrate on the work identified for the sprint and the goals of the team.
• Openness
• Team members and stakeholders are open about all the work and the challenges the team
encounters.
• Respect
• Team members respect each other to be capable and independent.
Principles of Scrum

• The following principles underpin the empirical nature of scrum:


• Transparency
The team must work in an environment where everyone is aware of what issues other
team members are running into. Teams surface issues within the organization, often
ones that have been there for a long time, that get in the way of the team’s success.
• Inspection
Frequent inspection points built into the framework to allow the team an opportunity
to reflect on how the process is working. These inspection points include the Daily
Scrum meeting and the Sprint Review Meeting.
• Adaptation
The team constantly investigates how things are going and revises those items that do
not seem to make sense.
Scrum Practices

• Events
• Sprint
• Sprint Planning
• Daily Scrum
• Sprint Review
• Sprint Retrospective
Scrum Practices

• Artifacts
• Product Backlog
• Sprint Backlog
• Increment
• Definition of Done
Scrum Practices
• Roles
• The Product Owner
• The Scrum Master
• The Development Team
Scrum Lifecycle
Agile methodologies
• Extreme programming(XP)
• It is a framework that enables teams to create high quality software
and improves their quality of life
• It enables software development with the appropriate engineering
practices
• When is it applicable?
• Changing s/w requirements
• To handle risks caused due to new technology
• Working with small development teams
Extreme programming(XP)

• Extreme Programming (XP) is one of the numerous Agile


frameworks applied by IT companies. But its key feature — emphasis
on technical aspects of software development — distinguishes XP
from the other approaches.
The process of extreme programming
• The XP framework normally involves 5
phases or stages of the development process
that iterate continuously:
• Planning
• Designing
• Coding
• Testing
• Listening
Roles of extreme programming
• Following roles are commonly associated with XP:
• Customers
• Programmers or developers
• Trackers or managers
• Coaches
Values and principles of extreme programming

• Values of extreme programming


• XP has simple rules that are based on 5 values to
guide the teamwork:
• Communication. Everyone on a team works jointly
at every stage of the project.
• Simplicity. Developers strive to write simple code
bringing more value to a product, as it saves time
and effort.
• Feedback. Team members deliver software
frequently, get feedback about it, and improve a
product according to the new requirements.
• Respect. Every person assigned to a project
contributes to a common goal.
• Courage. Programmers objectively evaluate their
own results without making excuses and are always
ready to respond to changes.
Principles of extreme programming

• Most researchers denote 5 XP principles as:


• Rapid feedback. Team members understand the
given feedback and react to it right away.
• Assumed simplicity. Developers need to focus on
the job that is important at the moment and follow
YAGNI (You Ain’t Gonna Need It) and DRY (Don’t
Repeat Yourself) principles.
• Incremental changes. Small changes made to a
product step by step work better than big ones made
at once.
• Embracing change. If a client thinks a product
needs to be changed, programmers should support
this decision and plan how to implement new
requirements.
• Quality work. A team that works well, makes a
valuable product and feels proud of it.
XP feedback loops
Advantages and disadvantages of
XP
Comparison of XP to other
frameworks
When to use XP
• Highly-adaptive development
• Risky projects
• Small teams
• Automated testing
• Readiness to accept new culture and knowledge
• Customer participation
Feature Driven Development
• Feature Driven Development (FDD)
• is not as well-known as many other agile frameworks.
• When is it applicable?
• When dealing with a large, long-running project, especially in an
organization where agile is still mostly confined to software
development, FDD may be your friend.
Best practices for feature-driven development
• Domain object modeling
• Developing by feature
• Individual class (code) ownership
• Feature teams
• Inspections
• Configuration management
• Regular build schedule
• Progress reports
Members of the FDD team
• The FDD modeling team includes the following main roles:
• The project manager oversees the entire project.
• The chief architect is in charge of the overall design and modeling of the system. The chief
architect works with other skilled developers in the planning phase of the development
cycle.
• The development manager leads and mentors the development team and oversees the day-
to-day programming activities.
• The chief programmer helps with analysis and design and may also be assigned to manage
small development teams.
• The class owner is a member of the smaller development teams that are led by the chief
programmer. Responsibilities include designing, coding, testing, and documenting features.
• The domain expert is a member of a team that understands the problem that the customer
needs to be solved. The developers rely on the domain expert’s knowledge to ensure that
they are working and delivering what is most important to the customer.
FDD project life cycle

• Step 1: Develop the overall


model
• Step 2: Build a features list
• Step 3: Plan by feature
• Step 4: Design by feature
• Step 5: Build by feature
Advantages of feature-driven development

• Gives the team a very good understanding of the project’s scope


and context.
• Requires fewer meetings.
• Uses a user-centric approach.
• Works well with large-scale, long-term, or ongoing projects
• Breaks feature sets into smaller chunks and regular iterative releases,
which makes it easier to track and fix coding errors, reduces risk, and
allows you to make a quick turnaround to meet your client’s needs.
Disadvantages of feature-driven development
• FDD is not ideal on smaller projects and does not work for projects where there is only one
developer because it is hard for one or very few people to take on the various roles without help.

• Places a high dependency on a chief programmer who needs to be able to act as a coordinator, lead
designer, and mentor to new team members.

• Provides no written documentation to the client, although there is a lot of documented


communication among team members during the project development cycles. Therefore, the client is
not able to get a proof for their own software.

• Emphasizes individual code ownership instead of a shared team ownership.

• May not work well with older systems because there is already a system in place and no overall
model to define it. You may need to start over and work from the ground up.
Agile methodologies
• Crystal
• Is approach to s/w development that focuses on people and their
interactions, rather than tools and processes
• It aimed to steam line processes and improve optimization
• The Crystal agile framework is built on two core beliefs:
• Teams can find ways on their own to improve and optimize their
workflows
• Every project is unique and always changing, which is why that
project’s team is best suited to determine how it will tackle the work
Key principles of the crystal agile framework
#1: Frequent delivery
#2: Reflective improvement
#3: Osmotic communication
#4: Personal safety
#5: Focus on work
#6: Access to subject matter experts and users
#7: Technical tooling
Crystal properties
• The Crystal method has several essentials, which are known as Crystal
properties:
• Teamwork:
• Communication
• Simplicity
• Reflection
• Responding and reporting correctly:
• Reasoning:
• Reconstruction as and when needed
• Frequent adjustments
• Improve processes
Strengths and Weakness of Crystal
Crystal function
• Crystal Clear- The team consists of only 1-6 members that is suitable
for short-term projects where members work out in a single workspace.
• Crystal Yellow- It has a small team size of 7-20 members, where
feedback is taken from Real Users. This variant involves automated
testing which resolves bugs faster and reduces the use of too much
documentation.
• Crystal Orange- It has a team size of 21-40 members, where the team
is split according to their functional skills. Here the project generally
lasts for 1-2 years and the release is required every 3 to 4 months.
• Crystal Orange Web- It has also a team size of 21-40 members were
the projects that have a continually evolving code base that is being
used by the public. It is also similar to Crystal Orange but here they do
not deal with a single project but a series of initiatives that required
programming.
• Crystal Red- The software development is led by 40-80 members
where the teams can be formed and divided according to requirements.
• Crystal Maroon- It involves large-sized projects where the team size is
80-200 members and where methods are different and as per the
requirement of the software.
• Crystal Diamond & Sapphire- This variant is used in large projects
where there is a potential risk to human life.
Benefits of using the Crystal Agile Framework
• Facilitate and enhance team communication and accountability.
• The adaptive approach lets the team respond well to the demanding requirements.
• Allows team to work with the one they see as the most effective.
• Teams talk directly with each other, which reduces management overhead.
• Faster delivery – The framework enables the team to deliver working software faster, which can help gain a competitive
advantage in the market.
• Higher quality – The framework emphasizes on quality, enabling the team to detect and fix defects early in the development
process, resulting in a higher quality product.
• Improved customer satisfaction – The framework promotes customer involvement, enabling the team to deliver products that
meet customer needs, resulting in higher customer satisfaction.
• Increased productivity – The framework enables the team to focus on delivering the highest value features, which can increase
productivity and reduce waste.
• Flexibility – The framework is highly adaptable, enabling the team to adjust to changing requirements, and make decisions based
on real-time feedback.
• Empowerment – The framework promotes empowerment, enabling team members to take ownership of their work, and make
decisions that contribute to the success of the project.
• Reduced risk – The framework promotes risk management, enabling the team to identify and mitigate potential risks early in the
development process, reducing the likelihood of project failure.
Drawbacks of using the Crystal Agile Framework
• A lack of pre-defined plans may lead to confusion and loss of focus.
• Lack of structure may slow down inexperienced teams.
• Not clear on how a remote team can share knowledge informally.
• Lack of predictability – The framework’s emphasis on adaptability and flexibility may result in a lack of predictability,
making it difficult to plan and estimate project timelines and budgets.
• Lack of documentation – The framework’s emphasis on communication and collaboration may result in a lack of
documentation, making it difficult to track progress and maintain a record of decisions.
• Limited scalability – The framework may not be suitable for large or complex projects, as the lack of structure and
predefined plans may make it difficult to manage teams at scale.
• Dependence on team expertise – The framework relies heavily on the expertise and skills of the development team, which
may not be suitable for teams with limited experience or knowledge.
• Lack of clarity on roles and responsibilities – The framework’s emphasis on self-organizing teams may result in a lack of
clarity on roles and responsibilities, leading to confusion and a loss of focus.
• Inability to handle regulatory requirements – The framework may not be suitable for projects with strict regulatory
requirements, as the lack of documentation and structure may not meet compliance standards.
• Potential for informal knowledge sharing – The framework’s emphasis on osmotic communication may result in informal
knowledge sharing, which may be difficult to track and monitor for accuracy and completeness.
Agile methodologies
• Kanban
• This method is used to design, manage and improve flow of system
• Organizations can visualize their flow of work and limiting their work
in progress
• When is it applicable?
• It can be used in situations where work arrives in an unpredictable
fashion
• It also used to deploy work immediately, without waiting for other
work items
History of Kanban

• Kanban was developed by Taiichi Ohno, a Toyota engineer from


Japan-1940s
• “Kanban” is a combination of two Japanese words: 看 (Kàn), meaning
“sign,” and 板 (Bǎn), meaning “board.”
• Kanban - which is the Japanese word for “billboard” - was developed
by Toyota in the 1940s.
• Agile Kanban is Agile Software Development with Kanban approach.
• In Agile Kanban, Kanban board is used to depict the flow of tasks
across the value stream
Kanban
• Kanban is an Agile management method built on a philosophy of continuous
improvement, where work items are “pulled” from a product backlog into a
steady flow of work.
• The framework is applied using Kanban boards—a form of visual project
management.
• In a Kanban board, tasks—represented as cards—move through stages of
work—represented as columns.
• In this your team can see where work is in real-time.
• Kanban is especially popular with product, engineering, and software
development teams.
• But they can be used by any team that’s interested in building a more
dynamic, flexible workflow.
Kanban model
• The aim is to control and
manage the flow of features
(represented by Kanban
cards) so that the number of
features entering the process
matches those being
completed
What are Kanban boards in project management?

• Kanban teams use a visualization tool called Kanban boards to manage their
workload and flow.
• In a Kanban board, work is displayed in a project board that is organized by
columns.
• The most basic Kanban board might have columns like “To do,” “In
progress,” and “Done.”
• Each column is filled with visual cards that represent individual tasks. A team
moves through the columns until the tasks are completed.
• You can create and maintain your Kanban board online.
• Virtual Kanban board software and tools help you dynamically visualize
content and get at-a-glance insight into your entire project’s work.
What is the difference between Kanban and Scrum?

• Scrum do so on Kanban boards. Scrum is compatible with Kanban but


it is a different framework:
• Scrum helps teams get more work done faster. The method organizes
work into “sprints”—two-week working sessions with daily meetings
and a set amount of work to be completed during the cycle time.
• Kanban helps teams improve processes by visualizing their work in
real-time.
The 4 core principles of Kanban
The 6 practices of Kanban
Kanban example

1. Start with a blank board


2. Create columns to represent work
• Backlog, Inbox, or New: This column is where new work will go before you assign it to a team
member.
• Ready or Prioritized: Move work into this column when it’s ready for kickoff.
• In progress: This is work that your team is currently working on. You may break the “In progress”
column into various other columns—for example, a content team might create columns for
“Drafting,” “Reviewing,” and “Editing,” while an engineering team might have columns for
“Development,” “Testing,” and “Deployment.”
• On hold: Move work into this column if you have to block it for some reason.
• Completed or Done: Move tasks into this column once they’re done!
3. Add tasks to represent work
4. Move work through stages
5. Create new Kanban boards if necessary
The benefits of Kanban
Kanban is a great, flexible tool that can help teams balance work with
team capacity. When done right, Kanban can:
• Provide at-a-glance insight into your team's work.
• Increase clarity, especially for remote teams.
• Encourage flexibility
The downsides of Kanban

• Kanban isn’t the right framework for every team. Some downsides of
Kanban include:
• It’s not as common among non-engineering teams.
• It can quickly become overwhelming.
Tools
• [Link]
• Miro Tool
Agile methodologies
• Lean
• Lean is set of tools and principles that aim to identify and remove
waste to increase the speed of process development
• Maximizing value to client ensuring waste is minimized
• When is it applicable?
• Apply to any sector where there is waste of any form
Lean Software Development/Lean IT​

• Lean software development means delivering applications efficiently and fast.​


• Organizations are under greater pressure than ever to deliver applications faster and more efficiently. ​
• Lean software development, focuses on minimizing waste and increasing efficiency. ​
• Another approach is DevOps, which bridges the gap between development and operations in order to deliver
software faster, more frequently, and more reliably.​
• DevOps is often considered both a philosophy and practice that includes the tools necessary for application
delivery.​
• DevOps has been described as an evolution of Agile methodology, an approach similar in many ways to lean
software development. ​
• DevOps has also been portrayed as a type of lean development system that merges development and
operations into a unified effort.​
Lean Software Development/Lean IT
• The core idea is to maximize customer value while minimizing waste.​
• Simply, lean means creating more value for customers with fewer resources.​
• The ultimate goal is to provide perfect value to the customer through a perfect value creation process that has
zero waste.​
• Lean thinking changes the focus of management from optimizing separate technologies, assets, and vertical
departments to optimizing the flow of products and services through entire value streams that flow
horizontally across technologies, assets, and departments to customers.​
• Eliminating waste along entire value streams, instead of at isolated points, creates processes that need less
human effort, less space, less capital, and less time to make products and services at far less costs and with
much fewer defects, compared with traditional business systems. ​
• Companies are able to respond to changing customer desires with high variety, high quality, low cost, and
with very fast throughput times. Also, information management becomes much simpler and more accurate.​
Lean IT principles​
• Seven key principles for how to approach lean software development:​
• Eliminate waste​
• Empower the team​
• Deliver as fast as possible/deliver fast​
• Decide as late as possible/defer decision​
• Build Quality in​
• See the whole/optimize the whole​
• Amplify learning/creating knowledge​
Lean IT principles
• 1. Eliminate waste
• Lean philosophy regards everything not adding
value to the customer as waste. Such waste may
include:
• unnecessary code and functionality
• delay in the software development process
• unclear requirements
• avoidable process repetition (often caused by
insufficient testing)
• Bureaucracy-complex administrative process
• slow internal communication
• In order to eliminate waste, one should be able
to recognize it. If some activity could be
bypassed or the result could be achieved
without it, it is waste.

To maximize value, we must minimize waste


Lean IT principles
• Empower the team.
• The development team should be able to make technical decisions about the product without being
bogged down by external approval processes.
• The team needs to be treated with respect and have the freedom to make the choices necessary to
deliver software as fast and effectively as possible.
• Ongoing learning is an essential component of team empowerment.
• Deliver as fast as possible/deliver fast
• Development teams should release software as often as they can, with short deployment cycles that
provide them with continuous feedback.
• Not only does this improve the product faster, but it also provides development teams with more
information for making informed decisions.
• And it helps eliminate waste.
Lean IT principles
• Decide as late as possible/defer the decision

• Software development requires a flexible mindset that encourages team members to keep their options open until
they’ve gathered the data necessary to make proper decisions.

• And the longer they wait, the more informed those decisions.

• Deciding late also makes it easier to accommodate new and evolving circumstances.
• Build integrity in
• Accelerated application delivery should not come at the expense of the application’s integrity or quality.
• Fast does not mean sloppy.
• Customers should get an application that’s easy to use, works as it’s supposed to work, and includes the features they
expect.

• The right tools can help ensure integrity by automating repetitive tasks, implementing comprehensive testing, and

providing ongoing monitoring and feedback.


Lean IT principles
• See the whole/optimize the whole

• Software development is immersed in endless detail.

• Development teams should also understand the big picture.

• They should be familiar with the project’s goals, the application’s users, the value that the application

provides, and any other information that offers insights into what they’re trying to achieve as a team and

organization.
• Amplify learning:

• Software development should be treated as an ongoing learning process that’s available to all team members.

• Learning can take many forms, such as training, code reviews, project documentation, pair programming,

or knowledge sharing.
END

You might also like