Reclaim Your Architecture

Preview:

Citation preview

RECLAIM YOURARCHITECTURE!

Tools und Techniken um deine Software Architektur zurückzu erobern!

Begriffsde�nitionDie Feinde der ArchitekturUnsere Waffen (aka Tools und Techniken)Beispiele und Code

Rational Uni�ed Process, 1999

“the highest level concept of a system in itsenvironment. The architecture of a software

system (at a given point in time) is itsorganization or structure of signi�cant

components interacting through interfaces,those components being composed ofsuccessively smaller components and

interfaces“

Martin Fowler, 2003

“Stuff that's hard to change later“

KNOW YOUR ENEMY!

Technische Schuld

“doing things the quick and dirty way sets usup with a technical debt, which is similar to a

�nancial debt. Like a �nancial debt, thetechnical debt incurs interest payments,

which come in the form of the extra effort thatwe have to do in future development because

of the quick and dirty design choice.“

Bewußte Entscheidung!

Entropie (phys.)

“Tendenz in der unbelebten Welt zu immergrößerer Unordnung.“

Unbewußte Entwicklung!

SYMPTOME DER ENTROPIE

SCHLECHT ZU WARTEN

SCHWER ZU ERWEITERN

MANGELNDE WIEDERVERWENDBARKEIT

SCHWER ZU TESTEN

ZUNEHMENDE UNVERSTÄNDLICHKEIT

URSACHEN

ZIRKULÄRE ABHÄNGIGKEITENZwischen Klasse, Packages, Modulen etc.

FEHLENDE ABSTRAKTIONKlassen, Packages, Module haben sehr viele Abhängigkeiten

KEINE ODER MANGELHAFTE UMSETZUNG VONARCHITEKTURREGELNUnerlaubte Abhängigkeiten

NIEDRIGE KOHÄSION, HOHE KOPPLUNGKohäsion bezeichnet den Zusammenhalt innerhalb einer

Komponente, Kopplung die äußere Bindung

CODE SMELLSZyklomatische Komplexität, Duplizierter Code, Große

Klassen / Methoden, ...

FIGHT BACK!

SCHRITT 1: BESTANDSAUFNAHME“If you can't measure it, you can't manage it.“

Bestehende Architektur ermittelnDependency Structure Matrix (DSM) AnalyseZirkuläre Abhängigkeiten aufdeckenMetriken sammeln

SCHRITT 2: DEFINITION DER ZIELPARAMETER

Zielarchitektur bestimmenZiel-Code-Coverage de�nierenRealistische Boundaries für Metriken de�nieren

SCHRITT 3: ZIELPARAMETER KONTINUIERLICHÜBERPRÜFEN

Degraph (oder JDepend)Jenkins + SonarQubeStructure101

LINKS UND WEITERFÜHRENDE INFORMATIONENhttp://schauder.github.io/degraph/http://docs.sonarqube.org/display/HOME/Spaghetti+Designhttp://erik.doernenburg.com/2010/04/dependency-structure-matrix/http://www.ndepend.com/docs/dependency-structure-matrix-dsmhttp://structure101.com/resources/http://www.martinfowler.com/ieeeSoftware/coupling.pdfJava Application Architecture, Kirk Knoernschild

Recommended