Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
-
Upload
jacques-de-vos -
Category
Software
-
view
25 -
download
0
Transcript of Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
![Page 1: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/1.jpg)
RESCUING LEGACY SOFTWAREFROM IMPENDING DOOM
[email protected]@martincronje
[email protected]@jacdevos
![Page 2: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/2.jpg)
Why this talk?
![Page 3: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/3.jpg)
Legacy code kills agility
![Page 4: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/4.jpg)
Refactoring is hard
![Page 5: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/5.jpg)
Refactoring storiesfrom the
trenches
![Page 6: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/6.jpg)
Why and when, but not how
![Page 7: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/7.jpg)
Credits• Kent Beck on Small, Safe Steps and TDD• Robert C. Martin on Clean Code• Martin Fowler on Refactoring Techniques• Ward Cunningham on Technical Debt• Michael Feathers on Starting with a Mess• J.B. Rainsberger relating it to Accidental
Complication
![Page 8: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/8.jpg)
What is legacy code?
What is the value in fixing legacy code?
How do we speak to Product Owners about it?
Should you rewrite?
What is refactoring?
When should we refactor?
![Page 9: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/9.jpg)
What is legacy code?
![Page 10: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/10.jpg)
Legacy code has a negative perception.
![Page 11: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/11.jpg)
• Any code in production• Ancient code• Unsupported technology• Not up to standard• Code smells
You may have heard…
![Page 12: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/12.jpg)
- J.B. Rainsberger
code that we feel afraid to
Legacy code is valuablechange.
![Page 13: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/13.jpg)
Summary: Legacy Code?Legacy code is risky and expensive to change
![Page 14: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/14.jpg)
Why fix legacy code?
![Page 15: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/15.jpg)
• If it ain't broken, don't fix it• Make it easier to work with• For our future happiness• Good craftsmanship
You may have heard…
![Page 16: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/16.jpg)
Professionalism
![Page 17: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/17.jpg)
Quality culture
![Page 18: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/18.jpg)
Return on investment
![Page 19: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/19.jpg)
Increasing the future value
![Page 20: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/20.jpg)
…a trade-off against present value
![Page 21: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/21.jpg)
In summaryImprove the code to reduce maintenance costs
![Page 22: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/22.jpg)
Do POs understand the value in fixing legacy code?
![Page 23: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/23.jpg)
• Not enough time• We cannot afford it• Business will close-down• Just one more feature• They allow us to recover
You may have heard…
![Page 24: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/24.jpg)
Developers vs ProductOwners
![Page 25: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/25.jpg)
Do they really say that?
![Page 26: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/26.jpg)
How do we explain it to them?
![Page 27: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/27.jpg)
Risk to business continuity
![Page 28: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/28.jpg)
Unpredictable timelines
![Page 29: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/29.jpg)
In summaryLearn how to communicate the impact of legacy code to Product Owners
![Page 30: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/30.jpg)
Should we rewrite?
![Page 31: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/31.jpg)
• No. Rather the devil you know• No. It’s too expensive• Yes. Use latest technologies• Yes. Learnt from mistakes!
You may have heard…
![Page 32: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/32.jpg)
Big bang rewrite
![Page 33: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/33.jpg)
Lesson #1:Unpredictable timelines
![Page 34: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/34.jpg)
Lesson #2:Puts your business at risk
![Page 35: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/35.jpg)
Lesson #3:Always harder than you
think
![Page 36: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/36.jpg)
In summaryResist the temptation to rewrite.
![Page 37: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/37.jpg)
What is the alternative?
![Page 38: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/38.jpg)
Refactoring is a safer bet
![Page 39: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/39.jpg)
- Refactoring, Martin Fowler
and cheaper to modify without
…make it easier to understand
behavior.
changing its observable
![Page 40: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/40.jpg)
Increase ease of change, while decreasing risk of
change
![Page 41: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/41.jpg)
Small incremental improvements into
production
![Page 42: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/42.jpg)
Cast safety nets as you progress
![Page 43: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/43.jpg)
Start with lowest impactimprovemen
t
![Page 44: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/44.jpg)
In summaryImprove design without changing observable behaviour
![Page 45: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/45.jpg)
When do we refactor?
![Page 46: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/46.jpg)
Construction Refactoring
![Page 47: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/47.jpg)
New code Code changes Solution wide
TDD Refactoring Litter-Pickup RefactoringComprehension Refactoring
Preparatory Refactoring
Planned RefactoringLong-Term Refactoring
Refactoring workflows
![Page 48: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/48.jpg)
Cleaning up as we go
![Page 49: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/49.jpg)
Shanty Towncampsite?
What if this is the
![Page 50: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/50.jpg)
problems
Handling major
![Page 51: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/51.jpg)
refactoring
Tracer bullet
![Page 52: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/52.jpg)
In summaryClean up as you go, and escalate when there is an impending crisis
![Page 53: Agile Australia 2016 - Rescuing Legacy Software from Impending Doom](https://reader031.fdocuments.us/reader031/viewer/2022030123/58a402d51a28ab64528b68b7/html5/thumbnails/53.jpg)
Code that we’re afraid to change.
Invest in making change easier and less risky.
Talk to Product Owners about return on investment.
Avoid rewrites, favour refactoring.
Many, small improvements without changing behaviour.
Keep it clean and escalate when crisis is imminent.