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

Gamze Karaagac
Gamze KaraagacGamze Karaagac
Gamze Karaagac
yzturan
 
Video Analysis
Video AnalysisVideo Analysis
Video Analysis
ksimmons29
 
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
 
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
euroFOT
 
Commercial Environments Brochure
Commercial Environments BrochureCommercial Environments Brochure
Commercial Environments Brochure
dianecom1
 

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 Presentation
Kushagra Udai
 
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
 
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

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

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Recently uploaded (20)

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

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 ✓✓