Monolithen zähmen leicht gemacht

  • View
    119

  • Download
    11

  • Category

    Software

Preview:

Citation preview

Monolithen zähmen leicht gemacht

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

Bennet Schulz, @bennetellibennet.schulz@codecentric.de

Bennet SchulzIT Consultant

bennet.schulz@codecentric.deblog.codecentric.debennet-schulz.com

@bennetelli

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 schwieriger

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

Recommended