SlideShare a Scribd company logo
1 of 12
M
I
k
a
d
o
Using Japanese to
save your Legacy S/W
K
a
n
b
a
n
+
Mikado Method  Mikado Game
Making a change to your legacy code is not
unlike picking out the Mikado from the other
sticks in the pile.
Removing one impacts the others.
And not in a good way…
What is the biggest difference?
We can
Revertour
code!
The Guts of the Mikado Method
• Make the ONE change you need/want to make
• See what broke – these are pre-requisites (the
next set of changes to make before doing this
one)
• Visualize (add to graph)
• REVERT !!
Repeat until no breakages occur.
Decouple
Content Edit &
Publishing
Servers
Create
Standalone
Publish
Server
Reimplement
DB Interface
Remove
Methods from
Edit Server
Code
Separate
Storage
Interface
Discovery
Refactor
✓ ✓
✓
✓
✓
✓ ✓
✓
Move
Check User
Permissions
Separate
Approval
Logic
Move
Publish-Reject
Code
Change
Deployment
Properties
✓
For Defects…
• Need to use exploratory and regression testing
to ID the next items to be graphed
• If not present, wrap unit tests around what
you are touching
• Have testing occur in an environment that
mimics as close to production as possible
Real Mikado Power
• Comes when you have unit, integration, and
acceptance tests
• These help reveal necessary refactors by
showing failures that the change creates
• Safer than exploration to find breakages
Some Restructuring Considerations
• Refactor Before Adding Functionality
• Separate Bulky Interfaces (limiting the
consumers it serves)
• Extract Methods/Classes into Common
Libraries
Let’s look at the first one…
Refactor Before Adding Functionality
• Suppose -
. . .
public static final int FIVE_CARD_POKER = 0;
public static final int INDIAN_POKER = 1;
. . .
Public class CardGameEngine {
. . .
public void deal (Game game, User user, Dealer dealer) {
if (game.getType() == FIVE_CARD_POKER {
user.setCards(dealer.deal(5));
} else if (game.getType() == INDIAN_POKER {
user.setCards(dealer.deal(1));
} else {
// else what?
}
}
• Want to add War (each player is dealt 26 cards)
• Could add it to the If-Then-Else logic, but this will get
messy, especially if I wanted to add more…
Mikado Graph for Refactor
Add War
card game
Refactor
If statements to extract
game-specific logic
Move 5 Card Poker
Logic to FiveCardPoker
class
Move Indian Poker
Logic to IndianPoker
class
Implement War
Logic to War class
Triage ReadyIntake
Update
Tests FIX Re-Test Deploy DONE
Done Done Done
✓✓
T
H
A
N
K
Y
O
U
あ
り
が
と
う
ご
ざ
い
ま
し
た

More Related Content

Viewers also liked

Jesus died on cross for us
Jesus died on cross for usJesus died on cross for us
Jesus died on cross for usyinglingyy
 
Android Beyond The Phone
Android Beyond The PhoneAndroid Beyond The Phone
Android Beyond The PhoneMarko Gargenta
 
レガシーコード改善ガイド輪読会 第9章
レガシーコード改善ガイド輪読会 第9章レガシーコード改善ガイド輪読会 第9章
レガシーコード改善ガイド輪読会 第9章ikikko
 
Gamze Karaagac
Gamze KaraagacGamze Karaagac
Gamze Karaagacyzturan
 
Video Analysis
Video AnalysisVideo Analysis
Video Analysisksimmons29
 
Kutadgu profile nov2012
Kutadgu profile nov2012Kutadgu profile nov2012
Kutadgu profile nov2012Ahter Kutadgu
 
Planning of a field operational test on navigation systems: Implementation an...
Planning of a field operational test on navigation systems: Implementation an...Planning of a field operational test on navigation systems: Implementation an...
Planning of a field operational test on navigation systems: Implementation an...euroFOT
 
Tamara Littleton - #smib10 presentation
Tamara Littleton - #smib10 presentation Tamara Littleton - #smib10 presentation
Tamara Littleton - #smib10 presentation smibevents
 
Eaon Pritchard - #smib10 Presentation
Eaon Pritchard - #smib10 Presentation Eaon Pritchard - #smib10 Presentation
Eaon Pritchard - #smib10 Presentation smibevents
 
Rucksack Collection
Rucksack CollectionRucksack Collection
Rucksack Collectionkausarh
 
Presentation from Ahmed Benmimoun at parallel session on FOTs
Presentation from Ahmed Benmimoun at parallel session on  FOTsPresentation from Ahmed Benmimoun at parallel session on  FOTs
Presentation from Ahmed Benmimoun at parallel session on FOTseuroFOT
 
Commercial Environments Brochure
Commercial Environments BrochureCommercial Environments Brochure
Commercial Environments Brochuredianecom1
 

Viewers also liked (16)

Smart Networking
Smart NetworkingSmart Networking
Smart Networking
 
Jesus died on cross for us
Jesus died on cross for usJesus died on cross for us
Jesus died on cross for us
 
Android Beyond The Phone
Android Beyond The PhoneAndroid Beyond The Phone
Android Beyond The Phone
 
レガシーコード改善ガイド輪読会 第9章
レガシーコード改善ガイド輪読会 第9章レガシーコード改善ガイド輪読会 第9章
レガシーコード改善ガイド輪読会 第9章
 
Gamze Karaagac
Gamze KaraagacGamze Karaagac
Gamze Karaagac
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7
 
Video Analysis
Video AnalysisVideo Analysis
Video Analysis
 
169266 employers guide_to_nys_labor_laws_2014 (1)
169266 employers guide_to_nys_labor_laws_2014 (1)169266 employers guide_to_nys_labor_laws_2014 (1)
169266 employers guide_to_nys_labor_laws_2014 (1)
 
Riley
RileyRiley
Riley
 
Kutadgu profile nov2012
Kutadgu profile nov2012Kutadgu profile nov2012
Kutadgu profile nov2012
 
Planning of a field operational test on navigation systems: Implementation an...
Planning of a field operational test on navigation systems: Implementation an...Planning of a field operational test on navigation systems: Implementation an...
Planning of a field operational test on navigation systems: Implementation an...
 
Tamara Littleton - #smib10 presentation
Tamara Littleton - #smib10 presentation Tamara Littleton - #smib10 presentation
Tamara Littleton - #smib10 presentation
 
Eaon Pritchard - #smib10 Presentation
Eaon Pritchard - #smib10 Presentation Eaon Pritchard - #smib10 Presentation
Eaon Pritchard - #smib10 Presentation
 
Rucksack Collection
Rucksack CollectionRucksack Collection
Rucksack Collection
 
Presentation from Ahmed Benmimoun at parallel session on FOTs
Presentation from Ahmed Benmimoun at parallel session on  FOTsPresentation from Ahmed Benmimoun at parallel session on  FOTs
Presentation from Ahmed Benmimoun at parallel session on FOTs
 
Commercial Environments Brochure
Commercial Environments BrochureCommercial Environments Brochure
Commercial Environments Brochure
 

Similar to Mikado + Kanban

Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship PresentationKushagra Udai
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkGorm Lai
 
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...Intel® Software
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesiFunFactory Inc.
 
Game Models - A Different Approach
Game Models - A Different ApproachGame Models - A Different Approach
Game Models - A Different ApproachNick Pruehs
 
How Modding Made Bethesda Better: GDC 2015 Level Design in a Day
How Modding Made Bethesda Better: GDC 2015 Level Design in a DayHow Modding Made Bethesda Better: GDC 2015 Level Design in a Day
How Modding Made Bethesda Better: GDC 2015 Level Design in a DayJoel Burgess
 
Optimizing Direct X On Multi Core Architectures
Optimizing Direct X On Multi Core ArchitecturesOptimizing Direct X On Multi Core Architectures
Optimizing Direct X On Multi Core Architecturespsteinb
 
Igniting the Spark: Building Online Services for Borderlands 2
Igniting the Spark: Building Online Services for Borderlands 2Igniting the Spark: Building Online Services for Borderlands 2
Igniting the Spark: Building Online Services for Borderlands 2Jimmy Sieben
 
Tales from the Optimization Trenches - Unite Copenhagen 2019
Tales from the Optimization Trenches - Unite Copenhagen 2019Tales from the Optimization Trenches - Unite Copenhagen 2019
Tales from the Optimization Trenches - Unite Copenhagen 2019Unity Technologies
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixVictor Rentea
 
Beat Your Mom At Solitaire—Reverse Engineering of Computer Games
Beat Your Mom At Solitaire—Reverse Engineering of Computer GamesBeat Your Mom At Solitaire—Reverse Engineering of Computer Games
Beat Your Mom At Solitaire—Reverse Engineering of Computer GamesChristoph Matthies
 
Enterprise Tic-Tac-Toe
Enterprise Tic-Tac-ToeEnterprise Tic-Tac-Toe
Enterprise Tic-Tac-ToeScott Wlaschin
 
Xbox (Pratik Negi)
Xbox (Pratik Negi)Xbox (Pratik Negi)
Xbox (Pratik Negi)pratik negi
 
Xbox (Pratik Negi)
Xbox (Pratik Negi)Xbox (Pratik Negi)
Xbox (Pratik Negi)pratik negi
 
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai Yu
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai YuAn Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai Yu
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai YuDatabricks
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)Rajkumar Pawar
 

Similar to Mikado + Kanban (20)

Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship Presentation
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...
Dynamic Resolution Techniques for Intel® Processor Graphics | SIGGRAPH 2018 T...
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile games
 
Game Models - A Different Approach
Game Models - A Different ApproachGame Models - A Different Approach
Game Models - A Different Approach
 
How Modding Made Bethesda Better: GDC 2015 Level Design in a Day
How Modding Made Bethesda Better: GDC 2015 Level Design in a DayHow Modding Made Bethesda Better: GDC 2015 Level Design in a Day
How Modding Made Bethesda Better: GDC 2015 Level Design in a Day
 
Optimizing Direct X On Multi Core Architectures
Optimizing Direct X On Multi Core ArchitecturesOptimizing Direct X On Multi Core Architectures
Optimizing Direct X On Multi Core Architectures
 
Igniting the Spark: Building Online Services for Borderlands 2
Igniting the Spark: Building Online Services for Borderlands 2Igniting the Spark: Building Online Services for Borderlands 2
Igniting the Spark: Building Online Services for Borderlands 2
 
Tales from the Optimization Trenches - Unite Copenhagen 2019
Tales from the Optimization Trenches - Unite Copenhagen 2019Tales from the Optimization Trenches - Unite Copenhagen 2019
Tales from the Optimization Trenches - Unite Copenhagen 2019
 
Pong
PongPong
Pong
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Beat Your Mom At Solitaire—Reverse Engineering of Computer Games
Beat Your Mom At Solitaire—Reverse Engineering of Computer GamesBeat Your Mom At Solitaire—Reverse Engineering of Computer Games
Beat Your Mom At Solitaire—Reverse Engineering of Computer Games
 
Enterprise Tic-Tac-Toe
Enterprise Tic-Tac-ToeEnterprise Tic-Tac-Toe
Enterprise Tic-Tac-Toe
 
Xbox (Pratik Negi)
Xbox (Pratik Negi)Xbox (Pratik Negi)
Xbox (Pratik Negi)
 
Xbox (Pratik Negi)
Xbox (Pratik Negi)Xbox (Pratik Negi)
Xbox (Pratik Negi)
 
Programming
ProgrammingProgramming
Programming
 
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai Yu
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai YuAn Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai Yu
An Adaptive Execution Engine for Apache Spark with Carson Wang and Yucai Yu
 
Endless runner
Endless runnerEndless runner
Endless runner
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)
 
Soc research
Soc researchSoc research
Soc research
 

More from Paul Boos

User Story Splitting.pptx
User Story Splitting.pptxUser Story Splitting.pptx
User Story Splitting.pptxPaul Boos
 
Development Game with Purpose - AGS
Development Game with Purpose - AGSDevelopment Game with Purpose - AGS
Development Game with Purpose - AGSPaul Boos
 
Agile Dev - Game with Purpose - WIA&T
Agile Dev - Game with Purpose - WIA&TAgile Dev - Game with Purpose - WIA&T
Agile Dev - Game with Purpose - WIA&TPaul Boos
 
Agile Leadership 201: Enriching Management for AgileNoVA
Agile Leadership 201: Enriching Management for AgileNoVAAgile Leadership 201: Enriching Management for AgileNoVA
Agile Leadership 201: Enriching Management for AgileNoVAPaul Boos
 
Agile Leadership 201 for TriAgile
Agile Leadership 201 for TriAgileAgile Leadership 201 for TriAgile
Agile Leadership 201 for TriAgilePaul Boos
 
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...Paul Boos
 
Agile Leadership 201: Enriching Management
Agile Leadership 201: Enriching ManagementAgile Leadership 201: Enriching Management
Agile Leadership 201: Enriching ManagementPaul Boos
 
Pass on Perfection
Pass on PerfectionPass on Perfection
Pass on PerfectionPaul Boos
 
Your Agile Leadership Journey: Leading People, Managing Paradoxes
Your Agile Leadership Journey: Leading People, Managing ParadoxesYour Agile Leadership Journey: Leading People, Managing Paradoxes
Your Agile Leadership Journey: Leading People, Managing ParadoxesPaul Boos
 
Business Models in the Non-Profit and Public Sectors
Business Models in the Non-Profit and Public SectorsBusiness Models in the Non-Profit and Public Sectors
Business Models in the Non-Profit and Public SectorsPaul Boos
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroPaul Boos
 
Trust Psychological Safety
Trust Psychological SafetyTrust Psychological Safety
Trust Psychological SafetyPaul Boos
 
Catalytic leadership no va agile webinar
Catalytic leadership   no va agile webinarCatalytic leadership   no va agile webinar
Catalytic leadership no va agile webinarPaul Boos
 
Understanding Lean & Agile Coaching Agile and Beyond 2018
Understanding Lean & Agile Coaching Agile and Beyond 2018Understanding Lean & Agile Coaching Agile and Beyond 2018
Understanding Lean & Agile Coaching Agile and Beyond 2018Paul Boos
 
Catalytic Leadership Agile Tour Montreal
Catalytic Leadership   Agile Tour MontrealCatalytic Leadership   Agile Tour Montreal
Catalytic Leadership Agile Tour MontrealPaul Boos
 
Understanding coaching presentation agile dc2017 v2
Understanding coaching presentation   agile dc2017 v2Understanding coaching presentation   agile dc2017 v2
Understanding coaching presentation agile dc2017 v2Paul Boos
 
Catalytic Leadership Agile2017
Catalytic Leadership   Agile2017Catalytic Leadership   Agile2017
Catalytic Leadership Agile2017Paul Boos
 
Understanding coaching presentation agile dc2017 - for publishing
Understanding coaching presentation   agile dc2017 - for publishingUnderstanding coaching presentation   agile dc2017 - for publishing
Understanding coaching presentation agile dc2017 - for publishingPaul Boos
 
Catalytic Leadership for AgileDC
Catalytic Leadership for AgileDCCatalytic Leadership for AgileDC
Catalytic Leadership for AgileDCPaul Boos
 

More from Paul Boos (20)

User Story Splitting.pptx
User Story Splitting.pptxUser Story Splitting.pptx
User Story Splitting.pptx
 
Development Game with Purpose - AGS
Development Game with Purpose - AGSDevelopment Game with Purpose - AGS
Development Game with Purpose - AGS
 
Agile Dev - Game with Purpose - WIA&T
Agile Dev - Game with Purpose - WIA&TAgile Dev - Game with Purpose - WIA&T
Agile Dev - Game with Purpose - WIA&T
 
Clue Retro
Clue RetroClue Retro
Clue Retro
 
Agile Leadership 201: Enriching Management for AgileNoVA
Agile Leadership 201: Enriching Management for AgileNoVAAgile Leadership 201: Enriching Management for AgileNoVA
Agile Leadership 201: Enriching Management for AgileNoVA
 
Agile Leadership 201 for TriAgile
Agile Leadership 201 for TriAgileAgile Leadership 201 for TriAgile
Agile Leadership 201 for TriAgile
 
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...
Your Agile Leadership Journey: Leading People-Managing Paradoxes - Agile Char...
 
Agile Leadership 201: Enriching Management
Agile Leadership 201: Enriching ManagementAgile Leadership 201: Enriching Management
Agile Leadership 201: Enriching Management
 
Pass on Perfection
Pass on PerfectionPass on Perfection
Pass on Perfection
 
Your Agile Leadership Journey: Leading People, Managing Paradoxes
Your Agile Leadership Journey: Leading People, Managing ParadoxesYour Agile Leadership Journey: Leading People, Managing Paradoxes
Your Agile Leadership Journey: Leading People, Managing Paradoxes
 
Business Models in the Non-Profit and Public Sectors
Business Models in the Non-Profit and Public SectorsBusiness Models in the Non-Profit and Public Sectors
Business Models in the Non-Profit and Public Sectors
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
 
Trust Psychological Safety
Trust Psychological SafetyTrust Psychological Safety
Trust Psychological Safety
 
Catalytic leadership no va agile webinar
Catalytic leadership   no va agile webinarCatalytic leadership   no va agile webinar
Catalytic leadership no va agile webinar
 
Understanding Lean & Agile Coaching Agile and Beyond 2018
Understanding Lean & Agile Coaching Agile and Beyond 2018Understanding Lean & Agile Coaching Agile and Beyond 2018
Understanding Lean & Agile Coaching Agile and Beyond 2018
 
Catalytic Leadership Agile Tour Montreal
Catalytic Leadership   Agile Tour MontrealCatalytic Leadership   Agile Tour Montreal
Catalytic Leadership Agile Tour Montreal
 
Understanding coaching presentation agile dc2017 v2
Understanding coaching presentation   agile dc2017 v2Understanding coaching presentation   agile dc2017 v2
Understanding coaching presentation agile dc2017 v2
 
Catalytic Leadership Agile2017
Catalytic Leadership   Agile2017Catalytic Leadership   Agile2017
Catalytic Leadership Agile2017
 
Understanding coaching presentation agile dc2017 - for publishing
Understanding coaching presentation   agile dc2017 - for publishingUnderstanding coaching presentation   agile dc2017 - for publishing
Understanding coaching presentation agile dc2017 - for publishing
 
Catalytic Leadership for AgileDC
Catalytic Leadership for AgileDCCatalytic Leadership for AgileDC
Catalytic Leadership for AgileDC
 

Recently uploaded

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 

Recently uploaded (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 

Mikado + Kanban

  • 1. M I k a d o Using Japanese to save your Legacy S/W K a n b a n +
  • 2. Mikado Method  Mikado Game Making a change to your legacy code is not unlike picking out the Mikado from the other sticks in the pile. Removing one impacts the others. And not in a good way… What is the biggest difference?
  • 4. The Guts of the Mikado Method • Make the ONE change you need/want to make • See what broke – these are pre-requisites (the next set of changes to make before doing this one) • Visualize (add to graph) • REVERT !! Repeat until no breakages occur.
  • 5. Decouple Content Edit & Publishing Servers Create Standalone Publish Server Reimplement DB Interface Remove Methods from Edit Server Code Separate Storage Interface Discovery Refactor ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Move Check User Permissions Separate Approval Logic Move Publish-Reject Code Change Deployment Properties ✓
  • 6. For Defects… • Need to use exploratory and regression testing to ID the next items to be graphed • If not present, wrap unit tests around what you are touching • Have testing occur in an environment that mimics as close to production as possible
  • 7. Real Mikado Power • Comes when you have unit, integration, and acceptance tests • These help reveal necessary refactors by showing failures that the change creates • Safer than exploration to find breakages
  • 8. Some Restructuring Considerations • Refactor Before Adding Functionality • Separate Bulky Interfaces (limiting the consumers it serves) • Extract Methods/Classes into Common Libraries Let’s look at the first one…
  • 9. Refactor Before Adding Functionality • Suppose - . . . public static final int FIVE_CARD_POKER = 0; public static final int INDIAN_POKER = 1; . . . Public class CardGameEngine { . . . public void deal (Game game, User user, Dealer dealer) { if (game.getType() == FIVE_CARD_POKER { user.setCards(dealer.deal(5)); } else if (game.getType() == INDIAN_POKER { user.setCards(dealer.deal(1)); } else { // else what? } } • Want to add War (each player is dealt 26 cards) • Could add it to the If-Then-Else logic, but this will get messy, especially if I wanted to add more…
  • 10. Mikado Graph for Refactor Add War card game Refactor If statements to extract game-specific logic Move 5 Card Poker Logic to FiveCardPoker class Move Indian Poker Logic to IndianPoker class Implement War Logic to War class
  • 11. Triage ReadyIntake Update Tests FIX Re-Test Deploy DONE Done Done Done ✓✓