54
Legacy Code Urs Enzler www.bbv.ch and now what? @ursenzler

Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

  • Upload
    others

  • View
    29

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Legacy CodeUrs Enzler

www.bbv.ch

a n d n o w w h a t ? @ursenzler

Page 2: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 3: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

the Problemw i t h L e g a c y C o d e

Page 4: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 5: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

take forever

break existing featuresnewfeatures have unreliable schedules

Page 6: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 7: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 8: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

BIG BANGR e w r i t e

high risk long time

Page 9: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

software archeology

Page 10: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

visualize

Page 11: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Socratic Testverify your hypothesis

input?

Page 12: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

add new features

Page 13: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extension

Page 14: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extensiononly manual testing possible

no automated proof for correctness

future change may break it

refactoring difficult

even more legacy code

Page 15: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extension

all class behaviours

automated proof for correctness

future change cannot break class

safe class refactoring

refactoring of class neighborhood needed

Page 16: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extension

only few scenarios

automated proof for correctness

future change cannot break feature

safe feature refactoring

refactoring of system boundary needed

Page 17: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extensionautomated proof for correctness

future change cannot break feature or classes

safe feature and class refactoring

refactoring of legacy code for extension

points needed

hard to find

Page 18: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extension

Page 19: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Influencing factorsVision TimeRisk

Maintainability Correctness Speed

Page 20: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Just code it TDD ATDD Extension

better

Maintainability Correctness Speed

Page 21: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 22: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Development gets slower and slower

Page 23: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

improve existing code

Page 24: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 25: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 26: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

reengineerrefactor keep

Page 27: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

reengineerrefactor keep

redesign classes

refactor using TDD

functionality cannot get lost

stepwise improvement possible

Page 28: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

reengineerrefactor keep

ATDD / TDD

stepwise improvement not feasible

risk of losing functionality

Page 29: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

reengineerrefactor keep

Clean-up Backlog

not high priority

Page 30: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

tips & tricks

Page 31: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

restructure to clusters and

components

Page 32: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 33: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 34: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 35: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

demilitarized zone

Page 36: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

flatten hierarchies

Page 37: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Coordinator

Workers

Page 38: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

string GetPath();

Data LoadBy(string id);

AbsoluteFilePath GetPath();

Data LoadBy(DataId id)

value classes

Page 39: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 40: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

test all paths

Page 41: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 42: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

duplication

Page 43: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 44: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

legacy code sea

clean code islands

Page 45: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 46: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

conclusions

Page 47: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

No Big BangContinuous,

step by step Improvement

Page 48: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

get new features without braking existing functionality

fast

Page 49: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 50: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 51: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 52: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 53: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors
Page 54: Legacy Code - XP Days · safe feature and class refactoring refactoring of legacy code for extension points needed hard to find. Just code it TDD ATDD Extension. Influencing factors

Urs Enzler [email protected]

twitter: @ursenzler

blog: www.planetgeek.ch

www.bbv.ch/blog

OSS lead: Appccelerate

user group: www.dotnet-zentral.ch