48
Monolithen zähmen leicht gemacht http://weltenkreuzer.de/wp-content/uploads/2015/03/handwerk.jpg Bennet Schulz, @bennetelli [email protected]

Monolithen zähmen leicht gemacht

Embed Size (px)

Citation preview

Page 1: Monolithen zähmen leicht gemacht

Monolithen zähmen leicht gemacht

http://weltenkreuzer.de/wp-content/uploads/2015/03/handwerk.jpg

Bennet Schulz, @[email protected]

Page 2: Monolithen zähmen leicht gemacht

Bennet SchulzIT Consultant

[email protected]

@bennetelli

Page 3: Monolithen zähmen leicht gemacht

Was ist passiert?

Page 4: Monolithen zähmen leicht gemacht

Quelle: http://www.stadtlandmama.de/content/no-no-no-jetzt-bitte-scherben-auffegen

Page 5: Monolithen zähmen leicht gemacht

Was war die Ursache?

Page 6: Monolithen zähmen leicht gemacht

Quelle: https://www.linkedin.com/pulse/software-erosion-httpsenwikipediaorgwikisoftwarerot-miguel-merayo

Page 7: Monolithen zähmen leicht gemacht

März 2004

Page 8: Monolithen zähmen leicht gemacht

Oktober 2004

Page 9: Monolithen zähmen leicht gemacht

April 2005

Page 10: Monolithen zähmen leicht gemacht

Mai 2005

Page 11: Monolithen zähmen leicht gemacht

Mai 2006

Page 12: Monolithen zähmen leicht gemacht

November 2007

Page 13: Monolithen zähmen leicht gemacht

September 2008

Page 14: Monolithen zähmen leicht gemacht

Quelle: https://c1.staticflickr.com/1/722/21473796202_c3076cb3ea_b.jpg

Page 15: Monolithen zähmen leicht gemacht

Quelle: https://c1.staticflickr.com/1/722/21473796202_c3076cb3ea_b.jpg

Erosion stinkt!

Page 16: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

Page 17: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwieriger

Page 18: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwierigeralles dauert länger

Page 19: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwieriger

testen schwieriger

alles dauert länger

Page 20: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwieriger

testen schwieriger

alles dauert länger

„bloß nichts anfassen“

Page 21: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwieriger

testen schwieriger

alles dauert länger

„bloß nichts anfassen“copy & paste

Page 22: Monolithen zähmen leicht gemacht

Quelle: http://www.momentumforimpact.org

ändern schwieriger

testen schwieriger

alles dauert länger

„bloß nichts anfassen“copy & paste

überall herrscht Angst

Page 23: Monolithen zähmen leicht gemacht

Was können wir dagegen tun?

Page 24: Monolithen zähmen leicht gemacht

Quelle: http://www.shutterstock.com/pic-162589649/stock-photo-pastel-isolate-toy-blocks.html?src=LAtnmvYyeCDBHpcf5Nt4jQ-1-34

Page 25: Monolithen zähmen leicht gemacht

„There should be low coupling between Modules and high cohesion within them.“

Eric Evans

Page 26: Monolithen zähmen leicht gemacht

Kohäsionhohe Kohäsion innerhalb von Modulen

Page 27: Monolithen zähmen leicht gemacht

Kopplunglose Kopplung zwischen Modulen

Page 28: Monolithen zähmen leicht gemacht

Warum macht das nicht jeder?

Page 29: Monolithen zähmen leicht gemacht

Demo

Page 30: Monolithen zähmen leicht gemacht

Quelle: http://bigalmanack.com/wp-content/uploads/2016/06/entrepreneur-easy-way.jpg

Page 31: Monolithen zähmen leicht gemacht

Demo

Page 32: Monolithen zähmen leicht gemacht

Wie organisieren wir Pakete und Klassen?

Page 33: Monolithen zähmen leicht gemacht

Nach Fachlichkeiten!

Page 34: Monolithen zähmen leicht gemacht

de.codecentric. …

Page 35: Monolithen zähmen leicht gemacht

de.codecentric.web.posts

Page 36: Monolithen zähmen leicht gemacht

de.codecentric.posts

Page 37: Monolithen zähmen leicht gemacht

de.codecentric.customer.persistence

Page 38: Monolithen zähmen leicht gemacht

de.codecentric.customer.entity de.codecentric.customer.control

de.codecentric.customer.boundary

Page 39: Monolithen zähmen leicht gemacht

Wie integriere ich die Analyse in meine tägliche Arbeit?

Page 40: Monolithen zähmen leicht gemacht
Page 41: Monolithen zähmen leicht gemacht
Page 42: Monolithen zähmen leicht gemacht

Fazit

Page 43: Monolithen zähmen leicht gemacht

Nutzt packages als Mittel zur Modularisierung!

Page 44: Monolithen zähmen leicht gemacht
Page 45: Monolithen zähmen leicht gemacht

• http://stackoverflow.com/questions/3085285/cohesion-coupling

• https://en.wikipedia.org/wiki/Dependency_inversion_principle

• https://en.wikipedia.org/wiki/Software_rot

• https://www.linkedin.com/pulse/software-erosion-httpsenwikipediaorgwikisoftwarerot-miguel-merayo

• https://structure101.com/blog/2008/11/software-erosion-findbugs/

• https://structure101.com/blog/2008/12/software-erosion-and-package-tangles/

• http://www.adam-bien.com/roller/abien/entry/bureaucratic_design_with_java_ee

• http://www.olivergierke.de/2013/01/whoops-where-did-my-architecture-go/

• http://agilewiki.ipponsoft.de/doku.php?id=entity-control-boundary

• http://blog.schauderhaft.de/degraph/documentation.html#testing_of_dependencies

Page 46: Monolithen zähmen leicht gemacht

• Design Principles & Design Patterns, Robert C. Martin, 2000

• http://de.slideshare.net/matthiasnoback/principles-of-package-design-fosdem-2015

• https://en.wikipedia.org/wiki/Software_package_metrics

• http://www.codemanship.co.uk/parlezuml/metrics/OO%20Design%20Principles%20&%20Metrics.pdf

• http://www.codingthearchitecture.com/presentations/sa2015-modular-monoliths

• https://thebojan.ninja/2015/04/08/high-cohesion-loose-coupling/

• http://alvinalexander.com/java/java-law-of-demeter-java-examples

• http://www.oodesign.com/dependency-inversion-principle.html

• https://de.wikipedia.org/wiki/Dependency-Inversion-Prinzip

• http://de.slideshare.net/sandromancuso/how-much-do-we-know-about-objectoriented-programming

Page 47: Monolithen zähmen leicht gemacht

• https://dzone.com/articles/thoughts-on-coupling-in-software-design?edition=196609&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=dd%202016-08-03

• http://structure101.com/blog/2008/12/software-erosion-and-package-tangles/

• https://www.doag.org/formes/pubfiles/5053658/docs/Konferenz/2013/vortraege/Java/2013-Java-Jens_Schauder-Abhaengigkeiten_managen_mit_Degraph-Manuskript.pdf

• http://alistair.cockburn.us/Hexagonal+architecture

• https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

• http://www.blackpepper.co.uk/managing-complexity-with-a-hexagonal-architecture/

• http://dontpanic.42.nl/2011/08/the-dependency-inversion-principle.html

• http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important

Page 48: Monolithen zähmen leicht gemacht