![Page 1: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/1.jpg)
Rediscovering Modularity Chris Chedgey Structure101 @chedgey Stuttgart, Munich, Nuremberg November 20th – 22nd 2012
![Page 2: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/2.jpg)
Modularity Manage complexity
by
Encapsulation
![Page 3: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/3.jpg)
Information hiding
Modularity Manage complexity
by
Encapsulation
![Page 4: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/4.jpg)
Defined interface
Information hiding
Modularity Manage complexity
by
Encapsulation
![Page 5: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/5.jpg)
Defined interface
Information hiding
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 6: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/6.jpg)
Defined interface
Information hiding
Cohesion
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 7: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/7.jpg)
Defined interface
Information hiding
Cohesion Coupling
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 8: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/8.jpg)
Abstraction
Defined interface
Information hiding
Cohesion Coupling
Clear responsibility
Modularity Manage complexity
by
Encapsulation
![Page 9: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/9.jpg)
![Page 10: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/10.jpg)
![Page 11: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/11.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
![Page 12: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/12.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
Modularity
![Page 13: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/13.jpg)
Composition
Complexity
![Page 14: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/14.jpg)
Composition
Complexity
Cyclomatic
Complexity
(CC)
![Page 15: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/15.jpg)
![Page 16: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/16.jpg)
![Page 17: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/17.jpg)
![Page 18: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/18.jpg)
![Page 19: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/19.jpg)
(same problem)
![Page 20: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/20.jpg)
![Page 21: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/21.jpg)
Encapsulation Abstraction
Defined interface
Information hiding
Cohesion
Coupling
Clear responsibility
Modularity
![Page 22: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/22.jpg)
![Page 23: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/23.jpg)
Composition
Complexity
Cyclomatic
Complexity
(CC)
![Page 24: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/24.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
![Page 25: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/25.jpg)
![Page 26: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/26.jpg)
![Page 27: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/27.jpg)
Classes
Packages
![Page 28: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/28.jpg)
Encapsulation Abstraction
Defined interface?
Information hiding?
Cohesion
Coupling?
Clear responsibility
Modularity?
![Page 29: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/29.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
![Page 30: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/30.jpg)
Composition
Complexity
Compositional
Complexity
(CC)
+Hierarchical
=> Scalable
![Page 31: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/31.jpg)
Coupling
![Page 32: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/32.jpg)
Dependencies
![Page 33: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/33.jpg)
Dependencies
![Page 34: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/34.jpg)
![Page 35: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/35.jpg)
![Page 36: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/36.jpg)
“Tangles”
![Page 37: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/37.jpg)
![Page 38: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/38.jpg)
![Page 39: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/39.jpg)
![Page 40: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/40.jpg)
![Page 41: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/41.jpg)
![Page 42: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/42.jpg)
![Page 43: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/43.jpg)
![Page 44: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/44.jpg)
![Page 45: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/45.jpg)
![Page 46: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/46.jpg)
![Page 47: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/47.jpg)
=
![Page 48: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/48.jpg)
=
Not scalable!!
![Page 49: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/49.jpg)
Ideally…
Start with a loose “architecture”
![Page 50: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/50.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
![Page 51: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/51.jpg)
Ideally…
Start with a loose “architecture”
Let suitable architecture emerge, without “baggage”
At some point stronger, higher-level abstractions are needed
![Page 52: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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
(~50Kloc – Martin, Foote)
![Page 53: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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)
Restructure to defined architecture
![Page 54: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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
Iterate with development
![Page 55: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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
Strengthen with growth
![Page 56: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/56.jpg)
0.7.2
Mar „04
![Page 57: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/57.jpg)
0.8.6
Oct „04
![Page 58: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/58.jpg)
0.8.7
Apr „05
![Page 59: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/59.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 60: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/60.jpg)
0.8.8
May „05
![Page 61: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/61.jpg)
1.0.0
Jun „06
![Page 62: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/62.jpg)
1.3.0
Nov „07
![Page 63: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/63.jpg)
1.3.5
Sep „08
![Page 64: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/64.jpg)
Cost…
![Page 65: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/65.jpg)
Cost…
Miserable developers
![Page 66: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/66.jpg)
Cost…
Miserable developers
Cost per feature increases
![Page 67: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/67.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
![Page 68: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/68.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
![Page 69: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/69.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
Test cycles increase
![Page 70: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/70.jpg)
Cost…
Miserable developers
Cost per feature increases
Unexpected impacts of change
Unreliable schedules
Test cycles increase
Reuse less
![Page 71: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/71.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 72: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/72.jpg)
Technical Debt
![Page 73: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/73.jpg)
Technical Debt
![Page 74: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/74.jpg)
Technical Debt
![Page 75: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/75.jpg)
Technical Debt
![Page 76: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/76.jpg)
![Page 77: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/77.jpg)
![Page 78: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/78.jpg)
![Page 79: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/79.jpg)
![Page 80: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/80.jpg)
![Page 81: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/81.jpg)
![Page 82: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/82.jpg)
![Page 83: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/83.jpg)
Abstraction
![Page 84: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/84.jpg)
Abstraction
![Page 85: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/85.jpg)
Abstraction
![Page 86: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/86.jpg)
Abstraction
![Page 87: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/87.jpg)
Abstraction
![Page 88: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/88.jpg)
Abstraction
![Page 89: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/89.jpg)
Abstraction
![Page 90: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/90.jpg)
Abstraction
![Page 91: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/91.jpg)
Refactoring Restructuring
![Page 92: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/92.jpg)
Refactoring
• “Changing code without
modifying behavior to
improve nonfunctional
attributes.”
Restructuring
• “Reorganizing a code-base
without modifying the code to
improve modularity”
![Page 93: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/93.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 94: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/94.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 95: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/95.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 96: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/96.jpg)
Retrofitting…
![Page 97: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/97.jpg)
Retrofitting…
Physical or virtual?
![Page 98: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/98.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
![Page 99: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/99.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
![Page 100: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/100.jpg)
Retrofitting…
Physical or virtual?
Top-down or bottom-up?
Bust big class tangles
Create a structured model (levelized+CC) (use strategies)
![Page 101: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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)
Adjust module boundaries (strengthen abstractions)
![Page 102: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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)
Define layers, visibility
![Page 103: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/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
Repair violations in the implementation levels
![Page 104: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/104.jpg)
![Page 105: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/105.jpg)
Structure101
![Page 106: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/106.jpg)
Restructure101
Structure101
![Page 107: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/107.jpg)
Restructure101
Structure101
Visualization
![Page 108: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/108.jpg)
Restructure101
Structure101
![Page 109: Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, November 2012](https://reader031.vdocument.in/reader031/viewer/2022013003/54c41f7c4a79593e5e8b45a5/html5/thumbnails/109.jpg)
Architecture
Modularity
Structure
Mud
• defined, communicated, enforced
• interfaces, responsibility
• encapsulation, coupling
•
Thank you! Structure101
@chedgey