Der agile Software Architekt - berlin-dose.de · Presentation Domain Persistence Definition einer...

Preview:

Citation preview

Der agile Software Architekt

2013-09-25

Ingmar Kellner

Agil == Beweglich == Zur Handlung Fähig

Gegebene Versprechen schränken meine Agilität ein!

© 2013, hello2morrow GmbH 2

Source: http://de.wiktionary.org/wiki/agil

Architektur

Architecture is the fundamental organization of a system embodied

in its components, their relationships to each other, and to the

environment, and the principles guiding its design and evolution.

[IEEE 1471]

© 2013, hello2morrow GmbH 3

Unser Problem: Strukturelle Erosion

Immobility

Opacity

Rigidity

Fragility

Viscosity

Source: Robert C. Martin

© 2013, hello2morrow GmbH 4

Ursachen

§§ Laws of Software Entropy

Zeitdruck

Fehlende Qualitätsregeln

Unschöne Schnittstellen

Fehlende automatische Überprüfung von Regeln

„Wen kümmert‘s???“ – Mentalität

© 2013, hello2morrow GmbH 5

Vertrauen ist gut, Kontrolle ist besser…

© 2013, hello2morrow GmbH 6

“You can’t manage what you can’t control, and you can’t control what

you don’t measure” [Tom DeMarco]

7

Messung des Kopplungsgrades [John Lakos]

Depends upon = Die Anzahl von Komponenten, von der eine

Komponente direkt oder indirekt abhängig ist (+1 für sich selbst)

ACD (Average Component Dependency) = Die Summe aller

“depends upon” Werte geteilt durch die Anzahl von

Komponenten

6

3 3

1 1 1

ACD = 15/6 = 2,5

© 2013, hello2morrow GmbH

3

1 1

2 3 2

Dependency Inversion:

ACD = 12/6 = 2

6

6 6

1 6 1

Zyklen:

ACD = 26/6 = 4,33

Einfluss von Zyklen auf Agilität

© 2013, hello2morrow GmbH 8

Element A

Element B

Element C

Element A

Element B

Element C

1

2

3

Level

Beispiel einer Package-Zyklengruppe

Zyklengruppe von 46 Packages

© 2013, hello2morrow GmbH 9

Auflösen eines Package Zyklus

© 2013, hello2morrow GmbH 10

Dependency Inversion via Callback Interface

© 2013, hello2morrow GmbH 11

Schnittstellen, Schnittstellen, Schnittstellen, …

© 2013, hello2morrow GmbH 12

Geringer

Kopplungsgrad

Mehr Wieder-

verwendung

Aussagekräftige

Schnittstellen Einhaltung von

Schnittstellen

Höhere

Entwicklungs-

geschwindigkeit

Wirtschaftlicher

Erfolg

Realisierung von

Innovationen

© 2013, hello2morrow GmbH 13

Presentation

Domain

Persistence

Definition einer Architektur Blaupause

Schritt 1: Definition von technischen Abstraktionen

Schritt 2: Definition von fachlichen Abstraktionen

Con

tract

Custo

me

r

User

Co

mm

on

Schritt 3: Definition von Schnittstellen

Software System

Schritt 4: Definition von Abhängigkeiten

Schritt 5: Verbindung zum Source Code

Qualitätsbewusstsein

Kontrolle der Abhängigkeiten

Definition von Regeln

Namenskonventionen

Automatisierte Überprüfung

Werkzeuge

Infrastruktur (z.B. OSGi)

© 2013, hello2morrow GmbH 14

Architektur in der Agilen Entwicklung

© 2013, hello2morrow GmbH 15

Definiert die Architektur,

Metriken + Schwellenwerte,

identifiziert „hot spots“

Implementiert Use Cases

unter Berücksichtigung

der Architektur und

Richtlinien

Überprüft kontinuierlich die

Einhaltung der Architektur

und Richtlinien

Rolle “Architekt” Rolle “Entwickler”

Build Server

Positive Effekte

Barry M. Horowitz, DoD Study

© 2013, hello2morrow GmbH 16

Weitere Informationen

Whitepapers, DZone RefCard, etc. auf unserer Web-Seite:

http://www.hello2morrow.com

i.kellner@hello2morrow.com

Referenzen:

Applying UML And Patterns, Craig Larman, Prentice Hall 2000

Agile Software Development, Robert C. Martin, Prentice Hall 2003

Large-Scale C++ Software Design, John Lakos, Addison-Wesley 1996

Design Patterns, Gamma et al., Addison-Wesley 1994

Controlling Software Projects: Management, Measurement, and Estimates, Tom DeMarco,

Prentice Hall, 1982

The Mythtical Man Month, Frederick P. Brooks, Addison-Wesley, 1975, 1995

The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt, David Thomas,

Addison-Wesley, 1999

© 2013, hello2morrow GmbH 17

Recommended