Monolithen zähmen leicht gemacht
-
Upload
bennet-schulz -
Category
Software
-
view
109 -
download
11
Transcript of Monolithen zähmen leicht gemacht
Monolithen zähmen leicht gemacht
http://weltenkreuzer.de/wp-content/uploads/2015/03/handwerk.jpg
Bennet Schulz, @[email protected]
Was ist passiert?
Quelle: http://www.stadtlandmama.de/content/no-no-no-jetzt-bitte-scherben-auffegen
Was war die Ursache?
Quelle: https://www.linkedin.com/pulse/software-erosion-httpsenwikipediaorgwikisoftwarerot-miguel-merayo
März 2004
Oktober 2004
April 2005
Mai 2005
Mai 2006
November 2007
September 2008
Quelle: https://c1.staticflickr.com/1/722/21473796202_c3076cb3ea_b.jpg
Quelle: https://c1.staticflickr.com/1/722/21473796202_c3076cb3ea_b.jpg
Erosion stinkt!
Quelle: http://www.momentumforimpact.org
Quelle: http://www.momentumforimpact.org
ändern schwierigeralles dauert länger
Quelle: http://www.momentumforimpact.org
ändern schwieriger
testen schwieriger
alles dauert länger
Quelle: http://www.momentumforimpact.org
ändern schwieriger
testen schwieriger
alles dauert länger
„bloß nichts anfassen“
Quelle: http://www.momentumforimpact.org
ändern schwieriger
testen schwieriger
alles dauert länger
„bloß nichts anfassen“copy & paste
Quelle: http://www.momentumforimpact.org
ändern schwieriger
testen schwieriger
alles dauert länger
„bloß nichts anfassen“copy & paste
überall herrscht Angst
Was können wir dagegen tun?
Quelle: http://www.shutterstock.com/pic-162589649/stock-photo-pastel-isolate-toy-blocks.html?src=LAtnmvYyeCDBHpcf5Nt4jQ-1-34
„There should be low coupling between Modules and high cohesion within them.“
Eric Evans
Kohäsionhohe Kohäsion innerhalb von Modulen
Kopplunglose Kopplung zwischen Modulen
Warum macht das nicht jeder?
Demo
Quelle: http://bigalmanack.com/wp-content/uploads/2016/06/entrepreneur-easy-way.jpg
Demo
Wie organisieren wir Pakete und Klassen?
Nach Fachlichkeiten!
de.codecentric. …
de.codecentric.web.posts
de.codecentric.posts
de.codecentric.customer.persistence
de.codecentric.customer.entity de.codecentric.customer.control
de.codecentric.customer.boundary
Wie integriere ich die Analyse in meine tägliche Arbeit?
Fazit
Nutzt packages als Mittel zur Modularisierung!
• 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
• 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
• 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