Retrofitting Architecture - Oredev 2012
-
Upload
chris-chedgey -
Category
Documents
-
view
1.326 -
download
2
description
Transcript of Retrofitting Architecture - Oredev 2012
![Page 1: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/1.jpg)
Retrofitting Architecture (video) Chris Chedgey Structure101 @chedgey Oredev November 9th 2012, Malmo
![Page 2: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/2.jpg)
Architecture
Modularity
Structure
Mud
• defined, communicated, enforced
• interfaces, responsibility
• encapsulation, coupling
•
![Page 3: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/3.jpg)
Modularity Manage complexity
by
Encapsulation
![Page 4: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/4.jpg)
Information hiding
Modularity Manage complexity
by
Encapsulation
![Page 5: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/5.jpg)
Defined interface
Information hiding
Modularity Manage complexity
by
Encapsulation
![Page 6: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/6.jpg)
Defined interface
Information hiding
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 7: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/7.jpg)
Defined interface
Information hiding
Cohesion
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 8: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/8.jpg)
Defined interface
Information hiding
Cohesion Coupling
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 9: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/9.jpg)
Abstraction
Defined interface
Information hiding
Cohesion Coupling
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 10: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/10.jpg)
![Page 11: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/11.jpg)
![Page 12: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/12.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
![Page 13: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/13.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
Modularity
![Page 14: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/14.jpg)
Composition
Complexity
![Page 15: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/15.jpg)
Composition
Complexity
Cyclomatic
Complexity
(CC)
![Page 16: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/16.jpg)
![Page 17: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/17.jpg)
![Page 18: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/18.jpg)
![Page 19: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/19.jpg)
![Page 20: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/20.jpg)
(same problem)
![Page 21: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/21.jpg)
![Page 22: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/22.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
Modularity
![Page 23: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/23.jpg)
![Page 24: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/24.jpg)
Composition
Complexity
Cyclomatic
Complexity
(CC)
![Page 25: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/25.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
![Page 26: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/26.jpg)
![Page 27: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/27.jpg)
![Page 28: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/28.jpg)
Classes
Namespaces
![Page 29: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/29.jpg)
Encapsulation Abstraction
Defined interface?
Information hiding?
Cohesion
Coupling?
Clear responsibility
Modularity?
![Page 30: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/30.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
![Page 31: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/31.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
+Hierarchical
=> Scalable
![Page 32: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/32.jpg)
Coupling
![Page 33: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/33.jpg)
Dependencies
![Page 34: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/34.jpg)
Dependencies
![Page 35: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/35.jpg)
![Page 36: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/36.jpg)
![Page 37: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/37.jpg)
“Tangles”
![Page 38: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/38.jpg)
![Page 39: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/39.jpg)
![Page 40: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/40.jpg)
![Page 41: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/41.jpg)
![Page 42: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/42.jpg)
![Page 43: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/43.jpg)
![Page 44: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/44.jpg)
![Page 45: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/45.jpg)
![Page 46: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/46.jpg)
![Page 47: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/47.jpg)
![Page 48: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/48.jpg)
=
![Page 49: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/49.jpg)
=
Not scalable!!
![Page 50: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/50.jpg)
Ideally…
Start with a loose “architecture”
![Page 51: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/51.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
![Page 52: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/52.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
![Page 53: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/53.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
(~50Kloc – Martin, Foote)
![Page 54: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/54.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
(~50Kloc – Martin, Foote)
Restructure to defined architecture
![Page 55: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/55.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
(~50Kloc – Martin, Foote)
Restructure to defined architecture
Iterate with development
![Page 56: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/56.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
(~50Kloc – Martin, Foote)
Restructure to defined architecture
Iterate with development
Strengthen with growth
![Page 57: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/57.jpg)
0.7.2
Mar „04
![Page 58: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/58.jpg)
0.8.6
Oct „04
![Page 59: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/59.jpg)
0.8.7
Apr „05
![Page 60: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/60.jpg)
Erosion
“Sometimes the developers manage to maintain this purity of design through the initial development and into the first release. More often something goes wrong. The software starts to rot like a piece of bad
meat.”
Bob Martin, “Agile Software Development”
![Page 61: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/61.jpg)
0.8.8
May „05
![Page 62: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/62.jpg)
1.0.0
Jun „06
![Page 63: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/63.jpg)
1.3.0
Nov „07
![Page 64: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/64.jpg)
1.3.5
Sep „08
![Page 65: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/65.jpg)
Cost…
![Page 66: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/66.jpg)
Cost…
Miserable developers
![Page 67: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/67.jpg)
Cost…
Miserable developers
Cost per feature increases
![Page 68: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/68.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
![Page 69: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/69.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
![Page 70: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/70.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
Test cycles increase
![Page 71: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/71.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
Test cycles increase
Reuse less
![Page 72: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/72.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
Test cycles increase
Reuse less
Value of your code base declines
![Page 73: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/73.jpg)
Technical Debt
![Page 74: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/74.jpg)
Technical Debt
![Page 75: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/75.jpg)
Technical Debt
![Page 76: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/76.jpg)
Technical Debt
![Page 77: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/77.jpg)
![Page 78: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/78.jpg)
![Page 79: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/79.jpg)
![Page 80: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/80.jpg)
![Page 81: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/81.jpg)
![Page 82: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/82.jpg)
![Page 83: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/83.jpg)
![Page 84: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/84.jpg)
Abstraction
![Page 85: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/85.jpg)
Abstraction
![Page 86: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/86.jpg)
Abstraction
![Page 87: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/87.jpg)
Abstraction
![Page 88: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/88.jpg)
Abstraction
![Page 89: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/89.jpg)
Abstraction
![Page 90: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/90.jpg)
Abstraction
![Page 91: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/91.jpg)
Abstraction
![Page 92: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/92.jpg)
Refactoring Restructuring
![Page 93: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/93.jpg)
Refactoring
• “Changing code without
modifying behavior to
improve nonfunctional
attributes.”
Restructuring
• “Reorganizing a code-base
without modifying the code to
improve modularity”
![Page 94: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/94.jpg)
Refactoring
• “Changing code without
modifying behavior to
improve nonfunctional
attributes.”
• Code is readable
Restructuring
• “Reorganizing a code-base
without modifying the code to
improve modularity”
• Code-base is understandable
![Page 95: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/95.jpg)
Refactoring
• “Changing code without
modifying behavior to
improve nonfunctional
attributes.”
• Code is readable
• A lot of invasive code editing
Restructuring
• “Reorganizing a code-base
without modifying the code to
improve modularity”
• Code-base is understandable
• Minimal invasive code editing
![Page 96: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/96.jpg)
Refactoring
• “Changing code without modifying behavior to improve nonfunctional attributes.”
• Code is readable
• A lot of invasive code editing
• Scope: small worlds of a few classes at a time; what you see in the IDE.
Restructuring
• “Reorganizing a code-base without modifying the code to improve modularity”
• Code-base is understandable
• Minimal invasive code editing
• Scope: whole code base; what you don‟t see in the IDE
![Page 97: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/97.jpg)
Retrofitting…
![Page 98: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/98.jpg)
Retrofitting…
Physical or virtual?
![Page 99: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/99.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
![Page 100: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/100.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
![Page 101: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/101.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
Create a structured model (levelized+CC) (use strategies)
![Page 102: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/102.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
Create a structured model (levelized+CC) (use strategies)
Adjust module boundaries (strengthen abstractions)
![Page 103: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/103.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
Create a structured model (levelized+CC) (use strategies)
Adjust module boundaries (strengthen abstractions)
Define layers, visibility
![Page 104: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/104.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
Create a structured model (levelized+CC) (use strategies)
Adjust module boundaries (strengthen abstractions)
Define layers, visibility
Repair violations in the implementation levels
![Page 105: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/105.jpg)
![Page 106: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/106.jpg)
Structure101
![Page 107: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/107.jpg)
Restructure101
Structure101
![Page 108: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/108.jpg)
Restructure101
Structure101
![Page 109: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/109.jpg)
Restructure101
Structure101
![Page 110: Retrofitting Architecture - Oredev 2012](https://reader030.fdocuments.net/reader030/viewer/2022012922/547cc417b4af9f041f8b45b0/html5/thumbnails/110.jpg)
Architecture
Modularity
Structure
Mud
• defined, communicated, enforced
• interfaces, responsibility
• encapsulation, coupling
• Thank you! Chris Chedgey
Structure101
@chedgey
(video)