0% found this document useful (0 votes)
33 views85 pages

Devops Unit-2

Uploaded by

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

Devops Unit-2

Uploaded by

sreereshma2004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 85

UNIT-2

Rise of Agile Methodologies


 Today, Agile is a well-known development
methodology and the approach of choice for many
development teams, especially those trying to create
an environment of continuous delivery.
 Over the past few years, development teams have
focused on speeding up the time to market for new
products and features to solve needs in real-time.
 Development teams have delivered on this goaI using
Agile methods.
Rise of Agile Methodologies
Before Agile: A Major Problem
 Before Agile, development teams used the Waterfall
approach, that follows a set path in which teams
1. Set project requirements and the scope of work
2. Design a product based on those pre-determined
requirements.
3. Build , Test the product.
4. Fix any problems discovered during testing.
5. Launch a finished product.
Rise of Agile Methodologies
Before Agile: A Major Problem
 Waterfall model based development teams need to
stick to the requirements set out at the very
beginning of the project and do not make any changes
or additions along the way.
 Waterfall prioritized bringing a complete product to
market - meaning it could take years before teams
finished the project.
 During those years, the nature of the problem
would often change, planned solution may be out of
date by the time it finally got to market.
Rise of Agile Methodologies
Before Agile: A Major Problem
 New products no longer had strong market fit. In
many cases, it also lead to unfinished products, as
teams simply abandon the work along the way rather
than deliver an outdated product.
 As a result of these challenges, we can consider the
Waterfall methodology the antagonist in the history of
Agile.
Rise of Agile Methodologies
A Change is Underway: Agile Takes Shape
 software development teams began to change their
approach to planning and delivering new products through
out the 1990s.
 During this time, development methods like Scrum,
Extreme Programming, DSDM, Feature-Driven
Development and Pragmatic Programming are introduced.
 While these methods vary, the common thread among all
of them is a lighter-weight model that allows for more
flexibility and less overhead planning.
 These approaches to software development are the earliest
methods in the history of Agile.
Rise of Agile Methodologies
A Change is Underway: Agile Takes Shape
 Finally in the spring of 2000, a group of 17 software
developers met in Oregon to discuss how they could speed
up development times in order to bring new software to
market faster.
 They recognized two key opportunities make this make
possible
1. Reduce the delay of software to users.
2. Getting feedback from users quickly to confirm the
usefulness of new software and continue to improve on it
accordingly.
Rise of Agile Methodologies
A Manifesto is Born: Agile Comes into Focus
 Less than a year after that Oregon meeting, the same
group of 17 developers met again at Snowbird ,Utah.
 With in three days, the group produced the "Manifesto
for Agile Software Development" (known as the Agile
Manifesto).
Rise of Agile Methodologies
A Manifesto is Born: Agile Comes into Focus
 A true turning point in the history of Agile, this
manifesto laid out four key values
1. Individuals and interactions over processes and
tools
2. Working software over comprehensive
documentation
3. Customer collaboration over contract
negotiation
4. Responding to change over following a plan
Agile Manifesto
 Agile Manifesto is a document that focuses on four core
values and 12 principles for Agile software development.
 Four core values are the pillars of agile processes.
1. Individuals and interactions over processes and
tools
It is people not the tools that ultimately develop a
product. Agile gives value for team collaboration over
working independently and adhering to a process.
Agile Manifesto
2. Working software over comprehensive
documentation.
Never forget that the primary goal of software
development is to build quality software.
Documentation is a guide for understanding how the
software works but being too extensive is a road block
for creating s/w what you need.
Agile Manifesto
3. Customer collaboration over contract negotiation.
Customers are extremely important within the Agile
methodology. Focus on updating your software using
constant customer feedback .Customer collaboration is
more important than the finer details of contract
negotiation.
4. Responding to change over following a plan. –
Teams can shift their strategies and workflows without
derailing an entire project.
Agile principles
1. Our highest priority is to satisfy the
customer through early and continuous delivery
of valuable software.
2. Welcome changing requirements, even late in
development.
3. Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
Agile principles
4. Business people and developers must work
together daily throughout the project.
5. Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
6. The most efficient and effective method of conveying
information to and within a development team is
face-to-face conversation.
Agile principles
7. Working software is the primary measure of
progress.
8. Agile processes promote sustainable
development. The sponsors, developers, and
users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and
good design enhances agility.
Agile principles
10. Simplicity–the art of maximizing the amount of
work not done–is essential.
11. The best architectures, requirements, and
designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how
to become more effective, then tunes and
adjusts its behavior accordingly.
Benefits of the Agile development
Agile promotes collaborative teamwork
 One of the Agile principles states that the most
effective way to communicate with your team is face-to
face.
 This principle that encourages teams to break project
silos and you have a recipe for collaborative teamwork.
Benefits of the Agile development
Agile methods focus on customer needs
 One of the unique aspects of software development is
that teams can focus on customer needs much more
closely than other industries.
 With the rise of agile methods software development
teams can get feedback from their actual customers
quickly.
Benefits of the Agile development
Agile methods are adaptable
 One of the main benefits of using Agile processes in
software development is the ability to shift strategies
quickly, without disrupting the flow of a project.
 Because phases in the traditional waterfall method
flow into one another, shifting strategies is challenging
and can disrupt the rest of the project roadmap.
.
Benefits of the Agile development
 Functionality can be developed rapidly and
demonstrated.
 Suitable for fixed or changing requirements .
 Delivers early partial working solutions.
 Little or no planning required .
Agile models
 1. Scrum
 2.XP (Extreme Programming)
 3. Crystal Methodologies
 4. DSDM (Dynamic Software Development Method)
 5. FDD (Feature Driven Development)
 6. Lean Software Development
 7.
Extreme Programming (XP)
 Extreme Programming (XP) is an agile software
development framework that aims to produce higher
quality software and respond to customer requirements.
 XP is a lightweight, efficient and fun way to develop a
software.
 The general characteristics where XP is appropriate are
1. Dynamically changing software requirements
2. Risks caused by fixed time projects using new
technology
3. Small development team
4. The technology you are using allows for automated unit
and functional tests.
Values of XP
 The five values of XP are communication,
simplicity, feedback, courage, and respect
described in more detail below.
Communication
 XP stresses the importance of the communication –
face to face discussion with the aid of a white board or
other drawing mechanism.
Simplicity
 keep the design of the system as simple as possible so
that it is easier to maintain, support, and revise.
Simplicity also means address only the requirements
that you know about; don’t try to predict the future.
Values of XP
Feedback
 Through constant feedback about their previous
efforts, teams can identify areas for improvement and
revise their practices.
Respect
 The members of your team need to respect each other
in order to communicate with each other, to work
together to identify simple designs and solutions.
Values of XP
Courage
 You need courage to raise organizational issues that
reduce your team’s effectiveness. You need courage to
stop doing something that doesn’t work and try
something else. You need courage to accept and act on
feedback, even when it’s difficult to accept.
Extreme Programming (XP)
 In Extreme Programming ,requirements are gathered
in terms of stories.
 Releases are based on the shorter cycles called
Iterations with span of 14 days time period.
 Each iteration includes phases like coding, unit testing
and system testing.
Extreme Programming(XP)
Extreme Programming (XP)
There are 5 phases available in Agile XP method,
1. Planning
In this stage, the team talks with the customer to
understand the desired product, gathering user stories to
form the basis of the project's goals. These stories are
estimated and prioritized, then transformed into tasks.
2. Design
In this stage, developers take the user stories and design
the code architecture to meet the customer's expectations.
This includes deciding on the programming language,
environment, libraries, and frameworks to be used in
software development.
Extreme Programming (XP)
3. Coding
Here, the development team gets to work on the actual
coding of the software. The code is written iteratively,
meaning that the code is written in small chunks and
tested regularly. This ensures that the code is high quality
and that any bugs can be addressed quickly.
4. Testing
Testing is a vital part of the Extreme Programming
methodology. Developers write automated tests to ensure
that the code is working as expected. This helps identify
any potential bugs before the software is released.
Extreme Programming (XP)
5. Listening
Last, the Extreme Programming development life cycle
includes the listening stage. At this point, the
customer is encouraged to give feedback on the
software and provide input to help make it even better.
This helps ensure that the software meets the
customer's expectations and is of the highest quality.
Scrum Model
 Scrum is one of the Agile development models.
 In the scrum model , a project is divided into small
work parts called as sprints.
 Each sprint is typically two to four weeks long .
 At the end of each sprint the stakeholders and the
team members need to assess the developed software
increment.
 The stakeholders may suggest any changes and
improvements to the software if necessary.
 Software therefore gets developed in series of sprints.
Scrum Model
Scrum Model
 The Scrum team consists of the following roles:
 product owner represents the customer’s perspective
and Guides the team towards building the right
software .
 product owner take the responsibility of
communicating customer views to the development
team.
 In every sprint the product owner in consultation with
team members define the features of the software to
be developed in the next sprint ,decides the release
dates and also reprioritize the s/w features if needed.
Scrum Model
scrum master
 scrum master acts as the project manager for the
project.
 Responsibilities include removing any barriers that
project may face ,ensuring the team is fully productive
by improving close cooperation among all team
members.
Scrum Model
Team member
 Scrum team consists of cross functional team
members with expertise in areas like quality assurance,
programming, user interface design, and testing.
 Team is self organizing in the sense that team
members distribute their responsibilities among
themselves.
Scrum Model
 Three main artefacts in scrum methodology are
product backlog
 This document contains all the features that remain to
be developed.
 product backlog forms the pool of features from which
some of the features are chosen for development
during the next sprint.
sprint backlog
 sprint backlog lists the tasks that are identified for
development of the identified features and this forms
the sprint backlog.
Scrum Model
Sprint burndown chart
 During a sprint, sprint burndown chart is used as a
tool to visualise the progress made and the work
remaining on a daily basis.
Scrum Model
 Three Types of meetings are mandatory during the
project
 Sprint planning
 During the sprint planning meeting, the team
members commit to develop and deliver certain
features in the next sprint.
 In this meeting product owner works with the team to
negotiate which product backlog items the team will
work.
Scrum Model
Daily scrum
 Daily scrum is a short standup meeting conducted
everyday morning to review the status of the progress
achieved and major issues placed on a day-to-day
basis.
 Each team members focuses on three issues
 what did he done yesterday
 what will he do today
 what are the obstacles on the way
Scrum Model
Sprint review meeting
 At the end of each sprint , review meeting is
conducted and the team demonstrate the new
functionality developed during the sprint to the
product owner and the stakeholders.
 feedback is collected from the participants of the
meeting.
Kanban
 Kanban is a visual approach to Agile.
 Develoment Teams use Kanban board tools to
represent certain tasks in the development process.
 Tasks are represented by job cards on a board.
 A column on the board represents a stage (termed as
the Work stage).
 As team members work on tasks, they move cards
from the backlog column to the column that
represents the stage the task is in.
 This method is a good way for teams to identify
roadblocks and to visualize the amount of work that's
getting done.
. Kanban
Advantages of Kanban
 Empowerment of Team −
 Team is allowed to take decisions as and when required.
 Team collaboratively resolves the bottlenecks.
 Team has access to the relevant information.
 Team continually communicates with customer.
 Continuous Delivery −
 Focus on work completion.
 Limited requirements at any point of time.
 Focus on delivering value to the customer.
 Emphasis on whole project.
Disadvantages of kanban
 The kanban system assumes stable, repetitive
production plans.
 Lack of explicit iteration.
 Not updating the board.
 Over-complicated Board.
Dynamic Software Development
Method (DSDM)
 DSDM is a Rapid Application Development (RAD)
approach to software development and provides an
agile project delivery framework.
 The important aspect of DSDM is that the users are
required to be involved actively, and the teams are
given the power to make decisions.
 Frequent delivery of product becomes the active focus
with DSDM.
Dynamic Software Development
Method (DSDM)
 The Eight Principles of DSDM:
1) Focus on the business need
2) Deliver on time
3) Collaborate
4) Never compromise quality
5) Build incrementally from firm foundations
6) Develop iteratively
7) Communicate continuously and clearly
8) Demonstrate control
Dynamic Software Development
Method (DSDM)
 The DSDM project consists of 7 phases
1) Pre-project
2) Feasibility Study
3) Business Study
4) Functional Model Iteration
5) Design and build Iteration
6) Implementation
7) Post-project
Dynamic Software Development
Method (DSDM)
Advantages of DSDM
1. DSDM provides high level of customer satisfaction due to
fast time to market and a high quality solution.
2. DSDM provides Development teams with a better work/life
balance, with shorter hours and more time off which
results in enhanced productivity and creativity.
3. DSDM facilitates better control with increased use of formal
inspections.
4. DSDM requires shorter development time.
5. DSDM facilitates early definition of quality goals and
processes.
Feature Driven Development
(FDD)
 It is an agile iterative and incremental model that
focuses on progressing the features of the developing
software.
 This method is focused around “designing & building”
features.
 Unlike other Agile methods in software engineering,
FDD describes short phases of work that has to be
accomplished separately per feature.
 Feature-Driven Development (FDD) is customer-
centric with the goal of delivering software often and
efficiently.
Feature Driven Development
(FDD)
How Does FDD Work?
Typically five basic activities exist during FDD:
1) Develop overall model: The overall model or rough
outline of the system is created by identifying the
scope and context of the system.
2) Build feature list: Developers brainstorm a list of
features that would be useful to users . Each feature
should be in a timeframe of around two weeks.
3) Plan by feature : Features are organized by their
importance to client and time required to create.
Feature Driven Development
(FDD)
4) Design by feature: The actual details of each
feature are produced, inspected and finalized.
5) Build by feature : After the design is improved, the
completed feature is added to the official build for
delivery to the client.
Feature Driven Development
(FDD)
Advantages of FDD
 Reporting at all levels leads to easy progress tracking.
 FDD provides greater accuracy in cost estimation of
the project due to feature segmentation.
 Allows larger teams to develop products with
continuous success
 Simple five-step process allows for more rapid
development.
Feature Driven Development
(FDD)
Disadvantages of FDD
 Not good for smaller projects
 Less written documentation, which can lead to
confusion
 Highly dependent on lead developers or programmers.
Iterative Agile Software Development
 Agile Methods break the product into small
incremental builds.
 These builds are provided in iterations. Each iteration
typically lasts from about one to three weeks.
 Every iteration involves cross functional teams
working simultaneously on various areas like -
planning ,Requirements Analysis, Design, Coding
Unit Testing and Acceptance Testing.
 At the end of the iteration, a working product is
displayed to the customer and important stakeholders.
Iterative Agile Software Development
Iterative Agile Software Development
 Agile iterative approach focuses on delivering valuable
s/w as fast as possible in increments, rather than all at
once.
 An iterative approach means the software or product
development process is split into multiple explicit
iterations or versions, each delivering some valuable
improvements or additional features.
Iterative Agile Software Development
 Iterative methodology allows software developers to
adjust, refine, and review software development
processes constantly to improve their performance
incrementally.
 The agile iterative approach creates opportunities for
constant evaluation and improvement in development
processes.
 P (Plan) - Iteration Planning
 In this event,the team collaborates to discuss the objectives for the next
iteration. It also summarizes the work done and determines the team backlog
required for the next iteration.
 D (Design) - Iteration Execution
 This is the 'do' step where the development of the software, its design and
coding takes place. If it's a second or third iteration, then functiona lity testing
is also conducted. The team collects user stories and prepares for the next step,
which is the Iteration Review.
 C (Check) -Iteration Review
 Also known as the 'check' step,Iteration Review is carried out with the Product
Owner.The team shows the tested deliverable to the Product Owner,who then
reviews the completed work and ascertains whether all criteria have been met.
 A (Adjust) - Iteration Retrospect
 In this event,the team evaluates the entire process of the iteration from the first
step. It essentially works on any improvements that are gathered in previorus
iterations. New problems are identified along with their causes. Before the
team starts the next cycle again,the team backlog is refined for future
reference.
Iterative Agile Software
Development
 The Agile team implements the PDCA cycle on each
iteration separately in the following manner:
P(Plan) - Iteration Planning
 In this event, the team collaborates to discuss the
objectives for the next iteration. It also summarizes the
work done and determines the team backlog required for
the next iteration.
D (Design) - Iteration Execution
 This is the 'do' step where the development of the software,
its design and coding takes place. If it's a second or third
iteration, then functionality testing is also conducted.
Iterative Agile Software
Development
 C (Check) -Iteration Review
 Also known as the 'check' step,Iteration Review is carried out with the
Product Owner.The team shows the tested deliverable to the Product
Owner,who then reviews the completed work and ascertains whether
all criteria have been met.
 A (Adjust) - Iteration Retrospect
 In this event,the team evaluates the entire process of the iteration from
the first step. It essentially works on any improvements that are
gathered in previous iterations. New problems are identified along
with their causes. Before the team starts the next cycle again, the team
backlog is refined for future reference.
 The iterations are repeated for optimizations and improvisations and,
the lessons learned from previous cycles are applied in the next cycle.
Until a fully functionalsoftware is ready to hit the market.
Iterative Agile Software
Development
 Benefits of Agile Iterative Development
 Customer Involvement - Agile Iterative development
encourages user contribution. After each iterative cycle,
customer feedback is obtained, and the product is then
subjected to necessary changes based on that feedback .
This aspect brings adaptabi lity into the project's
framework.

 Favours Evolution - The planning in the Agile Iterative
development process is a continuous feat,that allows space
for evolving ideas,instead of extensive planning that only
precedes execution and testing in Waterfall.

Iterative Agile Software
Development
 Risk Assessment - Agile iteration allows risk
identification and mitigation early on in the
development to avoid speed bumps later down the
timeline.
 Rapid Delivery -The work is divided into small
cycles,allowing team members to dedicate their focus
and deliver on time. Moreover,testing is conducted
simultaneously in coding and design in every
iteration,which greatly reduces the time needed to
achieve completion
Iterative Agile Software
Development
 Flexibility for making changes. The methodology
allows for modification throughout the development
process.
 Customer involvement. Developm ent teams focus on
customer feedback during the Design and Adjust
periods of the POCA iterative cycle.
 Early risk identification and response. Managing each
iteration is simpler than managing the whole project at
one time. The iterative approach allows development
teams to tackle issues early on without requiring the
team to backtrack.
Iterative Agile Software
Development
 Rapid delivery. The iterative approach requires less
time spent on documenting and thus allows
development teams to spend more time designing and
implementing projects.
 Testing during iteration is easier than testing at the
end of the development process. By testing early on,
teams can analyze risks and modify their deliverables.
 Enables cognitively-diverse teams to experiment and
innovate. The modifiable and cyclicalnature of the
iterative approach allows teams to test new ideas for
their products.
Where is the agile iterative
approach employed?
 Some requirements may evolve during the
development process. The agile iterative approach
allows teams to modify and enhance different aspects
of a deliverable throughout the cycle,especially in the
Check and

Adjust phases. The cyclical and modifiable nature of
the methodology gives development teams a large
advantage over more rigid processes.

 While working on a project, a development team can
quickly and 'productively' adapt to change. The POCA
model of the iterative approach al lows for far more
flexibil ity,adaptability,and speed compared to
sequential approaches.
 The urgency or risk associated with project
components may change. The approach provides a
time and space for urgency and risk recognition and
alleviation in the early stages of the process.
Agile Values
 Agile Values refers to the set of 4 values outlined by
the Agile Alliance in the Agile manifesto.
 This set of values encourages putting people before
processes, getting software out the door fast,
collaborating with customers, and adjusting plans as
needed.
Agile Values
Individuals and Interactions Over
Processes and Tools
 Value people more than processes or tools because it is
the people who respond to business needs and drive
the development process.
 If the process or the tools drive development, the team
is less responsive to change and less likely to meet
customer needs.
 Conformity makes teams hard to accommodate new
ideas, new requirements, and new thinking.
Individuals and Interactions Over
Processes and Tools
 If the individuals are aligned and understand each
other, then the team can resolve any issues with the
tools or processes.
 But if the teams insist on blindly sticking to the
processes then it might cause misunderstandings
among the individuals.
Individuals and Interactions Over
Processes and Tools
 It’s always preferable to have interactions and
communication among the team members rather than
blindly depending on processes to guide the way
forward.
 Allowing individuals to contribute on their own also
allows them to showcase freely what they can bring to
the table. When these team interactions are directed
towards solving a common problem, the results can be
quite powerful.
Individuals and Interactions Over
Processes and Tools
Benefits with valuing individuals and interactions
 Communication is clear ,quick and effective.
 Teamwork becomes strong as people work together.
 Development teams can self-organize.
 Development teams have more chances to innovate.
 Development teams can customize processes as necessary.
 Development team members can take personal ownership
of the project.
 Development team members can have deeper job
satisfaction.
Individuals and Interactions Over
Processes and Tools
 Disadvantages with value for process over people:
 People may over-depedent on processes instead of
finding the best ways to create good products.
 One process doesn't fit all teams - different people
have different work styles.
 One process doesn't fit all projects.
 Communication can be ambiguous and time-
consuming.
Working software over
comprehensive documentation
 In the past, more focus used to be on proper
documentation of every aspect of the project. The
team spends months to write requirements, design,
analysis, and test case documents.
 Traditional product development processes often
required extensive documentation. Under the agile
philosophy, getting software in the hands of customers
is the highest priority.
 The Agile values dictate that the first and foremost
duty of the project team is completing the final
deliverables as identified by the customers.
Working software over
comprehensive documentation
 Traditional project management involved
comprehensive documentation which entailed a lag of
months. This used to impact the project delivery
negatively and the resulting delays were inevitable.
 Documentation created for these projects was very
detailed and so many documents were created that
many of them were not even referred to during the
project progress. This was an unnecessary evil with
which the project teams used to live with.
Working software over
comprehensive documentation
 This doesn’t imply that the documentation is not
necessary. It just means that a working product is any
day a better indicator of alignment to the customer
needs and expectations than a document created
months ago.
 It also implies that the teams are responsive to change
as when required while showing the working software
to the client when the sprint ends.
Customer Collaboration Over
Contract Negotiation
 The agile philosophy highlights the importance of
customer-centric product development practices over
product-centric approaches.
 Traditional product-centric processes allowed
contracts to dictate what was delivered in the end,
which left a lot of room for mismatched expectations.
 The agile philosophy encourage building a continuous
customer feedback loop into development cycles.
 Contracts are the legal agreements between the
supplier and the customers.
Customer Collaboration Over
Contract Negotiation
 Once the negotiation is over, there can be no
discussion over it. What agile says is that instead of
negotiation, go for collaboration.
 Collaboration implies that there is still room for
discussion and the communication is ongoing.
 It gives a two-fold advantage – helps the team to do a
course correction if required at an earlier stage, it
helps the client also refine their vision and redefine
their requirements if required during the course of the
project.
Customer Collaboration Over
Contract Negotiation
 Traditional software development models involve the
customer before the development begins and they are
not involved during the project development.
 Agile breaks through this barrier as well by allowing
for customer involvement over the whole lifecycle.
 This helps the agile teams align better to the customer
needs. One of the ways to achieve this is through a
dedicated and involved product owner who can help
the team in real time for clarifications and aligning the
work with the customer priorities.
Responding to Change Over
Following a Plan
Responding to Change Over
Following a Plan
 The standard thought process is that the changes are
an expensive affair and we should avoid changes.
 But as experience also teaches us, changes are mostly
inevitable and instead of running from it we should try
to accept it and plan for it.
 What agile thinks is that change is not an expense, it is
a welcome feedback which helps to improve the
project. It should not be avoided but instead, it adds
value.
Responding to Change Over
Following a Plan
 Needs and requirements change over time, and
priorities shift as well. That fixed roadmap will quickly
become obsolete.
 According to the Agile Manifesto, a software team
should be able to adjust and change direction at any
time with a flexible roadmap.
 Dynamic roadmap can change every quarter or
month, and Agile teams can adapt to these changes.
Responding to Change Over
Following a Plan
 With the short sprints proposed by agile, the teams
can get a quick feedback and shift priorities at a short
notice. New features can be added from iteration to
iteration.
 Agile follows the just in time approach where planning
is done just enough when needed. And the plans are
always open to change as the sprints progress.

You might also like