Patterns of Software Change Michael Feathers Groupon Wednesday, - - PowerPoint PPT Presentation

patterns of software change
SMART_READER_LITE
LIVE PREVIEW

Patterns of Software Change Michael Feathers Groupon Wednesday, - - PowerPoint PPT Presentation

Patterns of Software Change Michael Feathers Groupon Wednesday, June 20, 2012 Architecture |rkitek ch r| noun , the part of a system that you can not replace without having a different system Wednesday, June 20, 2012 Unintentional


slide-1
SLIDE 1

Patterns of Software Change

Michael Feathers Groupon

Wednesday, June 20, 2012

slide-2
SLIDE 2

Architecture |ˈärkiˌtek ch ər| noun, the part of a system that you can not replace without having a different system

Wednesday, June 20, 2012

slide-3
SLIDE 3

Unintentional Coupling is Inevitable

Wednesday, June 20, 2012

slide-4
SLIDE 4

Unintentional Coupling is Inevitable

Wednesday, June 20, 2012

slide-5
SLIDE 5

Class:

  • Handles Tax Calculation
  • Handles Charges & Discounts

Wednesday, June 20, 2012

slide-6
SLIDE 6

Class:

  • Handles Tax Calculation
  • Handles Charges & Discounts

Someone decides taxes can be modeled as a charge

Wednesday, June 20, 2012

slide-7
SLIDE 7

Validation in the Model or the Controller?

Wednesday, June 20, 2012

slide-8
SLIDE 8

Organic Patterns

Designer Christopher Poehlmann

Wednesday, June 20, 2012

slide-9
SLIDE 9

Piecemeal Growth Is the Hallmark of Organic Systems

Wednesday, June 20, 2012

slide-10
SLIDE 10

Piecemeal Growth Biases Toward Existing Structure

Wednesday, June 20, 2012

slide-11
SLIDE 11

Architecture |ˈärkiˌtek ch ər| noun, the part of a system that you can not replace without having a different system

Wednesday, June 20, 2012

slide-12
SLIDE 12

The Antidote to Stagnation is Continual Renewal

Wednesday, June 20, 2012

slide-13
SLIDE 13

..and appreciation for things we can’t change

Wednesday, June 20, 2012

slide-14
SLIDE 14

Self-Induced Disruption

Wednesday, June 20, 2012

slide-15
SLIDE 15

Card Checking a Design

Wednesday, June 20, 2012

slide-16
SLIDE 16

Card Checking a Design

“What is we did this now?”

Wednesday, June 20, 2012

slide-17
SLIDE 17

Wednesday, June 20, 2012

slide-18
SLIDE 18

Over-Engineering |ˈōvər ˌenjəˈni(ə)ri ng| noun, weighting a possible future too highly in design

Wednesday, June 20, 2012

slide-19
SLIDE 19

The Coupling Sweet Spot

Wednesday, June 20, 2012

slide-20
SLIDE 20

The Coupling Sweet Spot

Single Responsibility Might Be The Closest Thing We Have, But It Is Not Perfect

Wednesday, June 20, 2012

slide-21
SLIDE 21

Accidental De-coupling

Wednesday, June 20, 2012

slide-22
SLIDE 22

Accidental De-coupling

The Fitnesse Story

Wednesday, June 20, 2012

slide-23
SLIDE 23

When to Jump Course

Wednesday, June 20, 2012

slide-24
SLIDE 24

Activity Flurries

Wednesday, June 20, 2012

slide-25
SLIDE 25

Commits

Complexity

Turbulence

Wednesday, June 20, 2012

slide-26
SLIDE 26

Wednesday, June 20, 2012

slide-27
SLIDE 27

Wednesday, June 20, 2012

slide-28
SLIDE 28

The Trending View

Wednesday, June 20, 2012

slide-29
SLIDE 29

Methods Ascending

Wednesday, June 20, 2012

slide-30
SLIDE 30

Trending Methods

Wednesday, June 20, 2012

slide-31
SLIDE 31

Static Views

Wednesday, June 20, 2012

slide-32
SLIDE 32

Classes By Closure Date

[["DummiesController", 2008-04-21 13:03:08 -0700], ["Core::ActiveRecord::AttributeDefaults::ClassMethods", 2008-04-22 16:02:54 -0700], ["Legacy::Database", 2008-04-24 15:37:51 -0700], ["Core::ActiveRecord::AttributeDelegation::ClassMethods", 2008-04-24 20:46:58 -0700], ["Core::ActiveRecord::SkipValidationForHasOnes", 2008-04-29 21:54:32 -0700]]

Wednesday, June 20, 2012

slide-33
SLIDE 33

Classes By Closure Date

Wednesday, June 20, 2012

slide-34
SLIDE 34

Temporal Correlation of Class Changes

[[["App", "Inventory"], 277], [["Inventory", "Object"], 216], [["Admin", "Inventory"], 195], [["Inventory", "User"], 188], [["Inventory", "Users"], 171], [["Inventory", "Deals"], 167], [["App", "Object"], 159], [["App", "InventoryController"], 152], [["Inventory", "Order"], 149], [["User", "Users"], 149], [["App", "User"], 143], [["Inventory", "InventoryController"], 143], [["Api", "Inventory"], 141], [["Admin", "App"], 136], [["Campaign", "Orders"], 134]]

Wednesday, June 20, 2012

slide-35
SLIDE 35

Temporal Correlation of Class Changes

Wednesday, June 20, 2012

slide-36
SLIDE 36

Objective vs. Subjective

Wednesday, June 20, 2012

slide-37
SLIDE 37

Card Checking Can Reduce Metrics Bias

Wednesday, June 20, 2012

slide-38
SLIDE 38

Self-Induced Disruption (2)

Wednesday, June 20, 2012

slide-39
SLIDE 39

Apoptosis

Wednesday, June 20, 2012

slide-40
SLIDE 40

Leveraging Conway

Wednesday, June 20, 2012

slide-41
SLIDE 41

Understanding the Limits of Growth

Wednesday, June 20, 2012