Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Overview of
Agile Methodology
By
Komal Khetlani
Software development processes
A [really] short history of
traditional approach
to software development
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Waterfall Development is
another name for the more
Waterfall Development
Waterfall Development (contd..)
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!
This approach is highly risky, often more costly and
generally less efficient than Agileapproaches
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Takes too long
Changes
Skipped
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
But…
AGILEIterative
AdaptableRapid
Cooperative
Quality-driven
Not a process, it's a philosophy or set of values
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
Agile Umbrella
Agile
Crystal
XPScrum
DSDM
FDD
Kanban RUP
RUP (120+)
XP (13)
Scrum (9)
Kanban (3)
Do Whatever!! (0)
More Prescriptive
More Adaptive
and few more…
* Check wikipedia for list of all Agile methods
RUP has over 30 roles, over 20
activities, and over 70 artifacts
more rules to follow
fewer rules to follow
Agile Methodologies
• eXtreme Programming (XP)
• Scrum
• Crystal family of methodologies
• Feature-Driven Development (FDD)
• Adaptive Software Development (ASD)
• Dynamic System Development Model (DSDM)
• Agile Unified Process (AUP)
ScrumA light-weight agile process tool
Split your organization
into small, cross-functional, self-
organizing teams.
Split your work into a list of small, concrete deliverables.
Sort the list by priority and estimate the relative effort of each
item.
Scrum Team
Scrum Master
Product/ Project
Owner
Split time into short fixed-length iterations/ sprints (usually 2 – 4
weeks), with potentially shippable code demonstrated after each
iteration.
Scrum (contd..)
January May
Optimize the release plan and update priorities in
collaboration with the customer, based on insights gained by
inspecting the release after each iteration.
Optimize the process by having a retrospective after each
iteration.
Scrum vs. Waterfall
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Iterative Scrum
Things we do in Scrum
The project/ product is described as a list of features: the backlog.
The features are described in terms of user stories.
The scrum team estimates the work associated with each story.
Features in the backlog are ranked in order of importance.
Result: a ranked and weighted list of product features, a
roadmap.
Daily scrum meeting to discuss What did you do y’day? What
will you do today? Any obstacles?
Scrum terminologies
Scrum Artifacts
Iteration/ Sprint 1 Iteration/ Sprint 2
Sample Userstory
Efforts
10hrsEfforts: 2hrs IA, 6hrs Development, 2hrs Testing
The total effort each iteration can
accommodate leads to number
of user story per iteration
One release may contains number of iterations
Release
Scrum planning example
Iteration cycle of 3 weeks
Working hours per day is 8 120hrs
Total hours of work iteration can
accommodate
8hrs x 5days x 3weeks =
Product backlog of 20 stories
Each story effort is 10 hrs
Iteration backlog or number of stories per iteration
12 user story
Scrum in a nutshell
So instead of a large group spending a long time building a
big thing, we have a small team spending a short time
building a small thing.
But integrating regularly to see the whole.
KANBANJust-in-time (JIT)
Visualize the
Work
Measure & Manage Flow
Signboard
Limit Work-In-Progress
Visual Card
KanbanLean approach to agile development
Similar to Scrum in the sense that you focus on features as
opposed to groups of features – however Lean takes this
one step further again.
You select, plan, develop, test and deploy one
feature (in its simplest form) before you select, plan,
develop, test and deploy the next feature.
Aim is to eliminate ‘waste’ wherever possible…
Kanban (contd…)
Visualize the workflow
Limit WIP (work in progress)
Split the work into pieces, write each
item on a card and put on the wall
Use named columns to illustrate where
each item is in the workflow
Assign explicit limits to how many items may be in progress at each stage
Measure the lead time (average time to complete one item,
sometimes called “cycle time”)
Optimize the process to make lead time as small and predictable as possible
Kanban Board Illustration - I
Kanban Board Illustration - II
Extreme Programming
• Most prominent Agile Software development
method
• Prescribes a set of daily stakeholder practices
• “Extreme” levels of practicing leads to more
responsive software.
• Changes are more realistic, natural,
inescapable.
eXtreme
Programming
The XP Guru: Kent Beck
• eXtreme Programming
– The most prominent agile development
methodology
Agile
The 12 Key Practices
• The Planning Game
• Small Releases
• Metaphor
• Simple Design
• Test-Driven Development
• Refactoring
• Pair Programming
• Collective Ownership
• Continuous Integration
• 40-Hour Workweek
• On-site Customer
• Coding Standards
1. Metaphor
• Guide all development and conversations with a
simple shared story of how the whole system
works
– Gives the team a whole picture of describing the
system, where new parts fit, etc.
• Words used to identify technical entities should be
chosen from the metaphor
• The default metaphor is the business domain, and
it’s usually just fine
How It Works for Me?
• Metaphors are good idea
• People should know the business needs and how
their work fits in the project
2. Release Planning
• Requirements via User Stories
– Short cards with natural language description of
what a customer wants
– Prioritized by customer
• Resource and risk estimated by developers
– Via “The Planning Game”
• Play the Planning Game after each increment
User Stories
How It Works for Me?
• Requirements specification (SRS) is better than
user stories
– Written documentation works well for large
projects
• I prefer prototyping the user interface as source
of documentation
• Sometimes its is hard to estimate the required
resources
• Small releases have less risk
3. Testing
• Test-Driven Development (TDD)
– Write tests before code
– Tests are automated
– Often use xUnit framework
– Must run at 100% before proceeding
• Acceptance Tests
– Written with the customer
– Acts as “contract”
– Measure of progress
Test-Driven Development
• Developers write unit tests before coding
• Motivates coding
– Improves design
– Provides regression tests
– Provides specification by example
public void TestMultiplication() {
Dollar five = Money.dollar(5);
AssertEqual(new Dollar(10), five.times(2));
AssertEqual(new Dollar(15), five.times(3));
}
How It Works for Me?
• TDD is good for most projects, not for all
– The real world is different: you always need the
functionality "for tomorrow"!
• I use unit testing for complex logic only
– Testing simple logic is overhead
4. Pair Programming
• Two software engineers work on one task at
one computer
– The driver has control of the keyboard and mouse
and creates the implementation
– The navigator watches the driver’s implementation
• Identifies defects and participates in on-demand
brainstorming
– The roles of driver and observer are periodically
rotated
Pair Programming
• Pairs produce higher quality code
• Pairs complete their tasks faster
• Pairs enjoy their work more
• Pairs feel more confident in their work
How It Works for Me?
• Pair programming is great for complex and critical
logic
– When developers need good concentration
– Where quality is really important
– Especially during design
– Reduces time wasting
• Trivial tasks can be done alone
• Peer reviews instead pair programming is often
alternative
5. Refactoring
• Improve the design of existing code without
changing its functionality
– Relies on unit testing to ensure the code is not
broken
• Bad smells in code:
– Long method / class
– Duplicate code
– Methods does several different things (bad
cohesion)
– Too much dependencies (bad coupling)
– Complex / unreadable code
How It Works for Me?
• Delivering working software faster is important!
– You can write the code to run somehow
• With simple design
• With less effort
– Later you can refactor the code if necessary
• Refactoring is not a reason to intentionally write
bad code!
– Good coding style is always important!
6. Simple Design
• No Big Design Up Front (BDUF)
– Reduces the overhead
– Ship working functionality faster and get feedback
early
• “Do The Simplest Thing That Could Possibly
Work”
– Later use refactoring to change it
• Not too much formal documentation
How It Works for Me?
• Simple design does not mean "no design"
–It is about establishing priorities
–It's a set of tradeoffs you make
–If something is important for this release
and for the whole system, it should be
designed well
–Don't lose time to design something you
will not use soon!
7. Collective Code Ownership
• Code to belongs to the project, not to an
individual engineer!
• Any engineer can modify any code
• Better quality of the code
• Engineers are not required to work around
deficiencies in code they do not own
– Faster progress
– No need to wait for someone else to fix
something
Collective Code Ownership?
How It Works for Me?
• Collective code ownership is absolutely
indispensable
– You need to fight the people who don't agree with
this!
– Fire people writing unreadable and unmaintainable
code
– Don't allow somebody to own some module and be
irreplaceable
8. Continuous Integration
• Pair writes up unit test cases and code for a task
(part of a user story)
• Pair unit tests code to 100%
• Pair integrates
• Pair runs ALL unit test cases to 100%
• Pair moves on to next task with clean slate and
clear mind
• Should happen once or twice a day
How It Works for Me?
• Integrating often is really valuable
– Sometimes you cannot finish a task for one day and
integrate it
– For small projects with small teams integration is
not an issue
– For large and complex projects it's crucial
• Think of automated build environment
9. On-Site Customer
• Customer available on site
– Clarify user stories
– Make critical business decisions
• Developers don’t make assumptions
• Developers don’t have to wait for decisions
• Face to face communication minimizes the
chances of misunderstanding
How It Works for Me?
• On-site customer actually does not work!
– Customers are busy
• Meetings every day is working better
– Customers are not competent!
• Customers always say "Yes, this is what I want"
and later say the opposite
• You need to think instead of them
• Use prototyping
10. Small Releases
• Timeboxed
• As small as possible, but still delivering
business value
– No releases to ‘implement the database’
• Get customer feedback early and often
• Do the planning game after each iteration
– Do they want something different?
– Have their priorities changed?
How It Works for Me?
• Small releases are really valuable
– Manage the risk of delivering something wrong
– Helps the customer to define better requirements
• Release every few weeks
• Large projects are not so flexible
– Try to release something, even you know that it will
be changed
11. Forty-Hour Work Week
• Kent Beck says, “ . . . fresh and eager every
morning, and tired and satisfied every night”
• Burning the midnight oil kills performance
• Tired developers make more mistakes
– Slows you down more in the long run
• If you mess with people’s personal lives (by taking
it over), in the long run the project will pay the
consequences
How It Works for Me?
• 40 hours a week or 40 hours without a sleep?
– Come back to the real world!
– Overtime is not recommendable but often can not
be avoided
• Better planning can help
• Highly skilled senior engineers always suffer of
overtime and high pressure
– That's how the business works!
12. Coding Standards
• Use coding conventions
– Rules for naming, formatting, etc.
– Write readable and maintainable code
• Method commenting
– Self-documenting code
– Don't comment bad code, rewrite it!
• Refactor to improve the design
• Use code audit tools (FxCop, CheckStyle, TFS)
How It Works for Me?
• Coding standards are important
– Enforce good practices to whole the team – tools,
code reviews, etc.
• Standards should be simple
– Complex standards are not followed
– Standards should be more strict for larger teams
– Developers don't like utter rules like "comment any
class member"
The 13th Practice?
The Stand Up Meeting
• Start the day with 15-minute meeting
– Everyone stands up (so the meeting stays short) in
circle
– Going around the room everyone says specifically:
• What they did the day before
• What they plan to do today
• Any obstacles they are experiencing
– Can be the way pairs are formed
People Communicate Most Effectively Face-to-
Face
Richness of the communication channel
Communicationeffectiveness
2 people at
whiteboard
2 people
on phone
2 people
on email
Videotape
Paper
How XP Solve Some SE Problems
Problem Solution
Slipped schedule Short development cycles
Cancelled project Intensive customer presence
Cost of changes
Extensive, ongoing testing,
system always running
Defect rates Unit tests, customer tests
Misunderstand the
business
Customer part of the team
Business changes Changes are welcome
Staff turnover Intensive teamwork
So What does XP Apply to?
• Domains with changing requirements
• High-risk projects (including those with high
schedule risk)
• Small project team: 2 – 12 programmers
– Cannot be used with a large team
• Extended development team
– Developers, managers and customer
– Co-located
• Automated testability
Agile Unified Process
• AUP is a simplified version of RUP
Phases of AUP
 Inception
 Elaboration
 Construction
 Transition
Disciplines of AUP
 Model
 Implementation
 Test
 Deployment
 Configuration Management
 Project Management
 Environment
Resources
• Agile 101
http://agile101.net/2009/09/08/the-difference-between-waterfall-iterative-
waterfall-scrum-and-lean-in-pictures/
• Kanban and Scrum - making the most of both
http://www.infoq.com/minibooks/kanban-scrum-minibook
• Kanban kick-start example
http://www.limitedwipsociety.org/tag/kanban-board/
Thank You

More Related Content

What's hot

Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
Suresh Krishna Madhuvarsu
 
Agile (Scrum)
Agile (Scrum)Agile (Scrum)
Agile (Scrum)
Dom Cushnan
 
Agile 101
Agile 101Agile 101
Agile 101
Sunil Mundra
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
Payod Soni
 
Another Scrum Cheat Sheet (great one pager)
Another Scrum Cheat Sheet (great one pager)Another Scrum Cheat Sheet (great one pager)
Another Scrum Cheat Sheet (great one pager)
CollectiveKnowledge
 
Scrum
ScrumScrum
Agile
AgileAgile
The Values and Principles of Agile Software Development
The Values and Principles of Agile Software DevelopmentThe Values and Principles of Agile Software Development
The Values and Principles of Agile Software Development
Brad Appleton
 
Agile Overview
Agile OverviewAgile Overview
Agile Overview
Stephen Albright
 
Scrum - Agile Methodology
Scrum - Agile MethodologyScrum - Agile Methodology
Scrum - Agile Methodology
Niel Deckx
 
Scrum Training
Scrum TrainingScrum Training
Scrum Training
Qasim Mehmood MBA-PM
 
Agile 101
Agile 101Agile 101
Agile 101
beLithe
 
Agile Introduction - Scrum Framework
Agile Introduction - Scrum FrameworkAgile Introduction - Scrum Framework
Agile Introduction - Scrum Framework
Kshitij Yelkar MBA/PMP/CSM/ICP-ACC
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
Amit Verma
 
2017 Scrum by Picture
2017 Scrum by Picture2017 Scrum by Picture
2017 Scrum by Picture
Pawel Lewinski
 
Scrum and the agile development process
Scrum and the agile development processScrum and the agile development process
Scrum and the agile development process
jhericks
 
Scrum 101
Scrum 101Scrum 101
Scrum 101
beLithe
 
Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
Omar Al-Sabek
 
Agile 101
Agile 101Agile 101
Agile 101
Bill McGehee
 
Scrum
ScrumScrum

What's hot (20)

Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
 
Agile (Scrum)
Agile (Scrum)Agile (Scrum)
Agile (Scrum)
 
Agile 101
Agile 101Agile 101
Agile 101
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 
Another Scrum Cheat Sheet (great one pager)
Another Scrum Cheat Sheet (great one pager)Another Scrum Cheat Sheet (great one pager)
Another Scrum Cheat Sheet (great one pager)
 
Scrum
ScrumScrum
Scrum
 
Agile
AgileAgile
Agile
 
The Values and Principles of Agile Software Development
The Values and Principles of Agile Software DevelopmentThe Values and Principles of Agile Software Development
The Values and Principles of Agile Software Development
 
Agile Overview
Agile OverviewAgile Overview
Agile Overview
 
Scrum - Agile Methodology
Scrum - Agile MethodologyScrum - Agile Methodology
Scrum - Agile Methodology
 
Scrum Training
Scrum TrainingScrum Training
Scrum Training
 
Agile 101
Agile 101Agile 101
Agile 101
 
Agile Introduction - Scrum Framework
Agile Introduction - Scrum FrameworkAgile Introduction - Scrum Framework
Agile Introduction - Scrum Framework
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
 
2017 Scrum by Picture
2017 Scrum by Picture2017 Scrum by Picture
2017 Scrum by Picture
 
Scrum and the agile development process
Scrum and the agile development processScrum and the agile development process
Scrum and the agile development process
 
Scrum 101
Scrum 101Scrum 101
Scrum 101
 
Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
 
Agile 101
Agile 101Agile 101
Agile 101
 
Scrum
ScrumScrum
Scrum
 

Similar to Agile

Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
Svetlin Nakov
 
Agile methodology and scrum development
Agile methodology and scrum developmentAgile methodology and scrum development
Agile methodology and scrum development
baabtra.com - No. 1 supplier of quality freshers
 
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
Roberto Pérez Alcolea
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
Roberto Jr. Figueroa
 
Agile Talk 30 Jul 1o2
Agile Talk 30 Jul 1o2Agile Talk 30 Jul 1o2
Agile Talk 30 Jul 1o2
Akhil Kumar
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development Process
Software Park Thailand
 
Waterfallacies V1 1
Waterfallacies V1 1Waterfallacies V1 1
Waterfallacies V1 1
Jorge Boria
 
Overview of agile methodology
Overview of agile methodologyOverview of agile methodology
Overview of agile methodology
Lee D Clemons MBA, PMP, CSM
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectively
Ashutosh Agarwal
 
Extreme programming (xp)
Extreme programming (xp)Extreme programming (xp)
Extreme programming (xp)
Mohamed Abdelrahman
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
sunilkumar_
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
International Islamic University Islamabad
 
The Software Development Process
The Software Development ProcessThe Software Development Process
The Software Development Process
Cesar Augusto Nogueira
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
Alexandru Bolboaca
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
cfry
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
Purvik Rana
 
Introduction to continuous delivery
Introduction to continuous deliveryIntroduction to continuous delivery
Introduction to continuous delivery
OlympicSoftware
 
PM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan MarkovićPM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan Marković
Software StartUp Academy Osijek
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
Damian T. Gordon
 

Similar to Agile (20)

Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile methodology and scrum development
Agile methodology and scrum developmentAgile methodology and scrum development
Agile methodology and scrum development
 
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Agile Talk 30 Jul 1o2
Agile Talk 30 Jul 1o2Agile Talk 30 Jul 1o2
Agile Talk 30 Jul 1o2
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development Process
 
Waterfallacies V1 1
Waterfallacies V1 1Waterfallacies V1 1
Waterfallacies V1 1
 
Overview of agile methodology
Overview of agile methodologyOverview of agile methodology
Overview of agile methodology
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectively
 
Extreme programming (xp)
Extreme programming (xp)Extreme programming (xp)
Extreme programming (xp)
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
The Software Development Process
The Software Development ProcessThe Software Development Process
The Software Development Process
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
 
Introduction to continuous delivery
Introduction to continuous deliveryIntroduction to continuous delivery
Introduction to continuous delivery
 
PM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan MarkovićPM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan Marković
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
 

Recently uploaded

Software Engineering and Project Management - Introduction to Project Management
Software Engineering and Project Management - Introduction to Project ManagementSoftware Engineering and Project Management - Introduction to Project Management
Software Engineering and Project Management - Introduction to Project Management
Prakhyath Rai
 
Introduction to neural network (Module 1).pptx
Introduction to neural network (Module 1).pptxIntroduction to neural network (Module 1).pptx
Introduction to neural network (Module 1).pptx
archanac21
 
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-IDUNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
GOWSIKRAJA PALANISAMY
 
LeetCode Database problems solved using PySpark.pdf
LeetCode Database problems solved using PySpark.pdfLeetCode Database problems solved using PySpark.pdf
LeetCode Database problems solved using PySpark.pdf
pavanaroshni1977
 
Understanding Cybersecurity Breaches: Causes, Consequences, and Prevention
Understanding Cybersecurity Breaches: Causes, Consequences, and PreventionUnderstanding Cybersecurity Breaches: Causes, Consequences, and Prevention
Understanding Cybersecurity Breaches: Causes, Consequences, and Prevention
Bert Blevins
 
Development of Chatbot Using AI/ML Technologies
Development of  Chatbot Using AI/ML TechnologiesDevelopment of  Chatbot Using AI/ML Technologies
Development of Chatbot Using AI/ML Technologies
maisnampibarel
 
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
Escorts service
 
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
kinni singh$A17
 
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
Escorts service
 
Exploring Deep Learning Models for Image Recognition: A Comparative Review
Exploring Deep Learning Models for Image Recognition: A Comparative ReviewExploring Deep Learning Models for Image Recognition: A Comparative Review
Exploring Deep Learning Models for Image Recognition: A Comparative Review
sipij
 
system structure in operating systems.pdf
system structure in operating systems.pdfsystem structure in operating systems.pdf
system structure in operating systems.pdf
zyroxsunny
 
Response & Safe AI at Summer School of AI at IIITH
Response & Safe AI at Summer School of AI at IIITHResponse & Safe AI at Summer School of AI at IIITH
Response & Safe AI at Summer School of AI at IIITH
IIIT Hyderabad
 
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model SafeRohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
binna singh$A17
 
Vernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsxVernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsx
Tool and Die Tech
 
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
VICTOR MAESTRE RAMIREZ
 
Press Tool and It's Primary Components.pdf
Press Tool and It's Primary Components.pdfPress Tool and It's Primary Components.pdf
Press Tool and It's Primary Components.pdf
Tool and Die Tech
 
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model SafePaharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
aarusi sexy model
 
Literature Reivew of Student Center Design
Literature Reivew of Student Center DesignLiterature Reivew of Student Center Design
Literature Reivew of Student Center Design
PriyankaKarn3
 
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen FramesUnblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Sinan KOZAK
 
Lecture 6 - The effect of Corona effect in Power systems.pdf
Lecture 6 - The effect of Corona effect in Power systems.pdfLecture 6 - The effect of Corona effect in Power systems.pdf
Lecture 6 - The effect of Corona effect in Power systems.pdf
peacekipu
 

Recently uploaded (20)

Software Engineering and Project Management - Introduction to Project Management
Software Engineering and Project Management - Introduction to Project ManagementSoftware Engineering and Project Management - Introduction to Project Management
Software Engineering and Project Management - Introduction to Project Management
 
Introduction to neural network (Module 1).pptx
Introduction to neural network (Module 1).pptxIntroduction to neural network (Module 1).pptx
Introduction to neural network (Module 1).pptx
 
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-IDUNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
UNIT I INCEPTION OF INFORMATION DESIGN 20CDE09-ID
 
LeetCode Database problems solved using PySpark.pdf
LeetCode Database problems solved using PySpark.pdfLeetCode Database problems solved using PySpark.pdf
LeetCode Database problems solved using PySpark.pdf
 
Understanding Cybersecurity Breaches: Causes, Consequences, and Prevention
Understanding Cybersecurity Breaches: Causes, Consequences, and PreventionUnderstanding Cybersecurity Breaches: Causes, Consequences, and Prevention
Understanding Cybersecurity Breaches: Causes, Consequences, and Prevention
 
Development of Chatbot Using AI/ML Technologies
Development of  Chatbot Using AI/ML TechnologiesDevelopment of  Chatbot Using AI/ML Technologies
Development of Chatbot Using AI/ML Technologies
 
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Siliguri 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
 
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
( Call  ) Girls Vasant Kunj Just 9873940964 High Class Model Shneha Patil
 
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
@Call @Girls Kochi 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any Time
 
Exploring Deep Learning Models for Image Recognition: A Comparative Review
Exploring Deep Learning Models for Image Recognition: A Comparative ReviewExploring Deep Learning Models for Image Recognition: A Comparative Review
Exploring Deep Learning Models for Image Recognition: A Comparative Review
 
system structure in operating systems.pdf
system structure in operating systems.pdfsystem structure in operating systems.pdf
system structure in operating systems.pdf
 
Response & Safe AI at Summer School of AI at IIITH
Response & Safe AI at Summer School of AI at IIITHResponse & Safe AI at Summer School of AI at IIITH
Response & Safe AI at Summer School of AI at IIITH
 
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model SafeRohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
Rohini @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Yogita Mehra Top Model Safe
 
Vernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsxVernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsx
 
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
Advances in Detect and Avoid for Unmanned Aircraft Systems and Advanced Air M...
 
Press Tool and It's Primary Components.pdf
Press Tool and It's Primary Components.pdfPress Tool and It's Primary Components.pdf
Press Tool and It's Primary Components.pdf
 
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model SafePaharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
Paharganj @ℂall @Girls ꧁❤ 9873777170 ❤꧂VIP Arti Singh Top Model Safe
 
Literature Reivew of Student Center Design
Literature Reivew of Student Center DesignLiterature Reivew of Student Center Design
Literature Reivew of Student Center Design
 
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen FramesUnblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen Frames
 
Lecture 6 - The effect of Corona effect in Power systems.pdf
Lecture 6 - The effect of Corona effect in Power systems.pdfLecture 6 - The effect of Corona effect in Power systems.pdf
Lecture 6 - The effect of Corona effect in Power systems.pdf
 

Agile

  • 2. Software development processes A [really] short history of
  • 3. traditional approach to software development REQUIREMENTS DESIGN DEVELOPMENT TESTING MAINTENANCE Waterfall Development is another name for the more Waterfall Development
  • 4. Waterfall Development (contd..) 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!
  • 5. This approach is highly risky, often more costly and generally less efficient than Agileapproaches REQUIREMENTS DESIGN DEVELOPMENT TESTING MAINTENANCE Takes too long Changes Skipped 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 But…
  • 7. 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
  • 8. Agile Umbrella Agile Crystal XPScrum DSDM FDD Kanban RUP RUP (120+) XP (13) Scrum (9) Kanban (3) Do Whatever!! (0) More Prescriptive More Adaptive and few more… * Check wikipedia for list of all Agile methods RUP has over 30 roles, over 20 activities, and over 70 artifacts more rules to follow fewer rules to follow
  • 9. Agile Methodologies • eXtreme Programming (XP) • Scrum • Crystal family of methodologies • Feature-Driven Development (FDD) • Adaptive Software Development (ASD) • Dynamic System Development Model (DSDM) • Agile Unified Process (AUP)
  • 10. ScrumA light-weight agile process tool Split your organization into small, cross-functional, self- organizing teams. Split your work into a list of small, concrete deliverables. Sort the list by priority and estimate the relative effort of each item. Scrum Team Scrum Master Product/ Project Owner
  • 11. Split time into short fixed-length iterations/ sprints (usually 2 – 4 weeks), with potentially shippable code demonstrated after each iteration. Scrum (contd..) January May Optimize the release plan and update priorities in collaboration with the customer, based on insights gained by inspecting the release after each iteration. Optimize the process by having a retrospective after each iteration.
  • 14. Things we do in Scrum The project/ product is described as a list of features: the backlog. The features are described in terms of user stories. The scrum team estimates the work associated with each story. Features in the backlog are ranked in order of importance. Result: a ranked and weighted list of product features, a roadmap. Daily scrum meeting to discuss What did you do y’day? What will you do today? Any obstacles? Scrum terminologies
  • 15. Scrum Artifacts Iteration/ Sprint 1 Iteration/ Sprint 2 Sample Userstory Efforts 10hrsEfforts: 2hrs IA, 6hrs Development, 2hrs Testing The total effort each iteration can accommodate leads to number of user story per iteration One release may contains number of iterations Release
  • 16. Scrum planning example Iteration cycle of 3 weeks Working hours per day is 8 120hrs Total hours of work iteration can accommodate 8hrs x 5days x 3weeks = Product backlog of 20 stories Each story effort is 10 hrs Iteration backlog or number of stories per iteration 12 user story
  • 17. Scrum in a nutshell So instead of a large group spending a long time building a big thing, we have a small team spending a short time building a small thing. But integrating regularly to see the whole.
  • 18. KANBANJust-in-time (JIT) Visualize the Work Measure & Manage Flow Signboard Limit Work-In-Progress Visual Card
  • 19. KanbanLean approach to agile development Similar to Scrum in the sense that you focus on features as opposed to groups of features – however Lean takes this one step further again. You select, plan, develop, test and deploy one feature (in its simplest form) before you select, plan, develop, test and deploy the next feature. Aim is to eliminate ‘waste’ wherever possible…
  • 20. Kanban (contd…) Visualize the workflow Limit WIP (work in progress) Split the work into pieces, write each item on a card and put on the wall Use named columns to illustrate where each item is in the workflow Assign explicit limits to how many items may be in progress at each stage Measure the lead time (average time to complete one item, sometimes called “cycle time”) Optimize the process to make lead time as small and predictable as possible
  • 23. Extreme Programming • Most prominent Agile Software development method • Prescribes a set of daily stakeholder practices • “Extreme” levels of practicing leads to more responsive software. • Changes are more realistic, natural, inescapable.
  • 25. The XP Guru: Kent Beck • eXtreme Programming – The most prominent agile development methodology
  • 27. The 12 Key Practices • The Planning Game • Small Releases • Metaphor • Simple Design • Test-Driven Development • Refactoring • Pair Programming • Collective Ownership • Continuous Integration • 40-Hour Workweek • On-site Customer • Coding Standards
  • 28. 1. Metaphor • Guide all development and conversations with a simple shared story of how the whole system works – Gives the team a whole picture of describing the system, where new parts fit, etc. • Words used to identify technical entities should be chosen from the metaphor • The default metaphor is the business domain, and it’s usually just fine
  • 29. How It Works for Me? • Metaphors are good idea • People should know the business needs and how their work fits in the project
  • 30. 2. Release Planning • Requirements via User Stories – Short cards with natural language description of what a customer wants – Prioritized by customer • Resource and risk estimated by developers – Via “The Planning Game” • Play the Planning Game after each increment
  • 32. How It Works for Me? • Requirements specification (SRS) is better than user stories – Written documentation works well for large projects • I prefer prototyping the user interface as source of documentation • Sometimes its is hard to estimate the required resources • Small releases have less risk
  • 33. 3. Testing • Test-Driven Development (TDD) – Write tests before code – Tests are automated – Often use xUnit framework – Must run at 100% before proceeding • Acceptance Tests – Written with the customer – Acts as “contract” – Measure of progress
  • 34. Test-Driven Development • Developers write unit tests before coding • Motivates coding – Improves design – Provides regression tests – Provides specification by example public void TestMultiplication() { Dollar five = Money.dollar(5); AssertEqual(new Dollar(10), five.times(2)); AssertEqual(new Dollar(15), five.times(3)); }
  • 35. How It Works for Me? • TDD is good for most projects, not for all – The real world is different: you always need the functionality "for tomorrow"! • I use unit testing for complex logic only – Testing simple logic is overhead
  • 36. 4. Pair Programming • Two software engineers work on one task at one computer – The driver has control of the keyboard and mouse and creates the implementation – The navigator watches the driver’s implementation • Identifies defects and participates in on-demand brainstorming – The roles of driver and observer are periodically rotated
  • 37. Pair Programming • Pairs produce higher quality code • Pairs complete their tasks faster • Pairs enjoy their work more • Pairs feel more confident in their work
  • 38. How It Works for Me? • Pair programming is great for complex and critical logic – When developers need good concentration – Where quality is really important – Especially during design – Reduces time wasting • Trivial tasks can be done alone • Peer reviews instead pair programming is often alternative
  • 39. 5. Refactoring • Improve the design of existing code without changing its functionality – Relies on unit testing to ensure the code is not broken • Bad smells in code: – Long method / class – Duplicate code – Methods does several different things (bad cohesion) – Too much dependencies (bad coupling) – Complex / unreadable code
  • 40. How It Works for Me? • Delivering working software faster is important! – You can write the code to run somehow • With simple design • With less effort – Later you can refactor the code if necessary • Refactoring is not a reason to intentionally write bad code! – Good coding style is always important!
  • 41. 6. Simple Design • No Big Design Up Front (BDUF) – Reduces the overhead – Ship working functionality faster and get feedback early • “Do The Simplest Thing That Could Possibly Work” – Later use refactoring to change it • Not too much formal documentation
  • 42. How It Works for Me? • Simple design does not mean "no design" –It is about establishing priorities –It's a set of tradeoffs you make –If something is important for this release and for the whole system, it should be designed well –Don't lose time to design something you will not use soon!
  • 43. 7. Collective Code Ownership • Code to belongs to the project, not to an individual engineer! • Any engineer can modify any code • Better quality of the code • Engineers are not required to work around deficiencies in code they do not own – Faster progress – No need to wait for someone else to fix something
  • 45. How It Works for Me? • Collective code ownership is absolutely indispensable – You need to fight the people who don't agree with this! – Fire people writing unreadable and unmaintainable code – Don't allow somebody to own some module and be irreplaceable
  • 46. 8. Continuous Integration • Pair writes up unit test cases and code for a task (part of a user story) • Pair unit tests code to 100% • Pair integrates • Pair runs ALL unit test cases to 100% • Pair moves on to next task with clean slate and clear mind • Should happen once or twice a day
  • 47. How It Works for Me? • Integrating often is really valuable – Sometimes you cannot finish a task for one day and integrate it – For small projects with small teams integration is not an issue – For large and complex projects it's crucial • Think of automated build environment
  • 48. 9. On-Site Customer • Customer available on site – Clarify user stories – Make critical business decisions • Developers don’t make assumptions • Developers don’t have to wait for decisions • Face to face communication minimizes the chances of misunderstanding
  • 49. How It Works for Me? • On-site customer actually does not work! – Customers are busy • Meetings every day is working better – Customers are not competent! • Customers always say "Yes, this is what I want" and later say the opposite • You need to think instead of them • Use prototyping
  • 50. 10. Small Releases • Timeboxed • As small as possible, but still delivering business value – No releases to ‘implement the database’ • Get customer feedback early and often • Do the planning game after each iteration – Do they want something different? – Have their priorities changed?
  • 51. How It Works for Me? • Small releases are really valuable – Manage the risk of delivering something wrong – Helps the customer to define better requirements • Release every few weeks • Large projects are not so flexible – Try to release something, even you know that it will be changed
  • 52. 11. Forty-Hour Work Week • Kent Beck says, “ . . . fresh and eager every morning, and tired and satisfied every night” • Burning the midnight oil kills performance • Tired developers make more mistakes – Slows you down more in the long run • If you mess with people’s personal lives (by taking it over), in the long run the project will pay the consequences
  • 53. How It Works for Me? • 40 hours a week or 40 hours without a sleep? – Come back to the real world! – Overtime is not recommendable but often can not be avoided • Better planning can help • Highly skilled senior engineers always suffer of overtime and high pressure – That's how the business works!
  • 54. 12. Coding Standards • Use coding conventions – Rules for naming, formatting, etc. – Write readable and maintainable code • Method commenting – Self-documenting code – Don't comment bad code, rewrite it! • Refactor to improve the design • Use code audit tools (FxCop, CheckStyle, TFS)
  • 55. How It Works for Me? • Coding standards are important – Enforce good practices to whole the team – tools, code reviews, etc. • Standards should be simple – Complex standards are not followed – Standards should be more strict for larger teams – Developers don't like utter rules like "comment any class member"
  • 56. The 13th Practice? The Stand Up Meeting • Start the day with 15-minute meeting – Everyone stands up (so the meeting stays short) in circle – Going around the room everyone says specifically: • What they did the day before • What they plan to do today • Any obstacles they are experiencing – Can be the way pairs are formed
  • 57. People Communicate Most Effectively Face-to- Face Richness of the communication channel Communicationeffectiveness 2 people at whiteboard 2 people on phone 2 people on email Videotape Paper
  • 58. How XP Solve Some SE Problems Problem Solution Slipped schedule Short development cycles Cancelled project Intensive customer presence Cost of changes Extensive, ongoing testing, system always running Defect rates Unit tests, customer tests Misunderstand the business Customer part of the team Business changes Changes are welcome Staff turnover Intensive teamwork
  • 59. So What does XP Apply to? • Domains with changing requirements • High-risk projects (including those with high schedule risk) • Small project team: 2 – 12 programmers – Cannot be used with a large team • Extended development team – Developers, managers and customer – Co-located • Automated testability
  • 60. Agile Unified Process • AUP is a simplified version of RUP Phases of AUP  Inception  Elaboration  Construction  Transition
  • 61. Disciplines of AUP  Model  Implementation  Test  Deployment  Configuration Management  Project Management  Environment
  • 62. Resources • Agile 101 http://agile101.net/2009/09/08/the-difference-between-waterfall-iterative- waterfall-scrum-and-lean-in-pictures/ • Kanban and Scrum - making the most of both http://www.infoq.com/minibooks/kanban-scrum-minibook • Kanban kick-start example http://www.limitedwipsociety.org/tag/kanban-board/

Editor's Notes

  1. The meanings of the Manifesto items on the left within the agile software development context are described below. Individuals and Interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming. Working software – working software will be more useful and welcome than just presenting documents to clients in meetings. Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important. Responding to change – agile development is focused on quick responses to change and continuous development
  2. Prescriptive means “more rules to follow” and adaptive means “fewer rules to follow”.
  3. 9/1/201707/16/96
  4. 9/1/201707/16/96
  5. 9/1/201707/16/96