1
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Agile Architektur
1.1
Agile Architektur© Orientation in Objects GmbH
Abstract
2
Eine gut geplante Softwarearchitektur stellt das Grundgerüst jederwartbaren Software dar. Das steht in einem scheinbaren Widerspruch zuagilen Softwareprozessen, bei denen langfristige Planungenweitestgehend vermieden werden.
Die Session zeigt anhand zahlreicher konkreter Beispiele, wie man dieErstellung einer Softwarearchitektur in einzelne Aufgabenpaketeunterteilt, dokumentiert und regelmäßig durch Reviews undautomatisierte Architekturtests verifiziert. Das Ziel ist es, auch in einemiterativen Prozess eine langfristig tragfähige Architektur entstehen zulassen.
2
Agile Architektur© Orientation in Objects GmbH
Ihre Sprecher
Trainer, Berater, Entwickler
3
Thorsten Maier, Falk Sippach
@ThorstenMaier @sippsack
Agile Architektur© Orientation in Objects GmbH 4
Agiles Manifest=
Individuen und Interaktionen mehr als Prozesse und Werkzeuge
Funktionierende Software mehr als umfassende Dokumentation
Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
Reagieren auf Veränderung mehr als das Befolgen eines Plans
3
Agile Architektur© Orientation in Objects GmbH 5
Architektur in eigenen Worten:
fundamentale Strukturen,
Konzepte,
Entscheidungen
und Lösungsansätze
... die man nicht mehr leicht los bekommt!
Agile Architektur© Orientation in Objects GmbH 6
Agile Architektur
Widerspruch?
4
Agile Architektur© Orientation in Objects GmbH 7
Unsere These
Eine gute Architektur kann iterativ in kleinen
Aufgabenpaketen entstehen.
Agile Architektur© Orientation in Objects GmbH 8
Agiles Manifest
Die BESTEN Architekturen […] entstehen
durch selbstorganisierte Teams.
(11. Prinzip der agilen Softwareentwicklung)
5
Agile Architektur© Orientation in Objects GmbH 9
Herausforderung in einem agilen Prozess
Architekturarbeit aufteilen
Darum geht es heute
12 konkrete Arbeitspakete
Agile Architektur© Orientation in Objects GmbH 10
PLANPLANPLANPLAN
DODODODO
CHECKCHECKCHECKCHECK
ACTACTACTACT
6
Agile Architektur© Orientation in Objects GmbH 11
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
Agile Architektur© Orientation in Objects GmbH
1
12
Nicht-funktionale
Anforderungen konkretisieren
� Software-Architektur
7
Agile Architektur© Orientation in Objects GmbH 13
„Benutzerfreundlich“
„Schnell“
„Wartbar“
Agile Architektur© Orientation in Objects GmbH 14
Nicht-funktionale Anforderungen
müssen prüfbar sein
8
Agile Architektur© Orientation in Objects GmbH 15
„Benutzerfreundlich“
=
Nachbearbeitung eines Inkasso-Anrufes
darf maximal 30 Sekunden dauern und muss
nach 3 Klicks abgeschlossen sein.
Agile Architektur© Orientation in Objects GmbH 16
„Wartbar“
=
Ein neues Krankenversicherungsprodukt lässt
sich mit einem durchschnittlichen Aufwand von
28 Personentagen in die Anwendung integrieren.
9
Agile Architektur© Orientation in Objects GmbH
Leitung Entwicklung
17
Marketing
Leitung WartungKunde
Endbenutzer
Stakeholder
bewusst machen
2
Agile Architektur© Orientation in Objects GmbH
Leitung Entwicklung
18
Marketing
Leitung WartungKunde
Endbenutzer
Wartbarkeit
Geringe Kosten,
geringe Fluktuation
Geringe Kosten,
pünktliche Lieferung
Neue Feature
Time-to-market
Schnell,
benutzerfreundlich
Agiles Team
10
Agile Architektur© Orientation in Objects GmbH 19
Bausteine und
Beziehungen entwerfen
3
Agile Architektur© Orientation in Objects GmbH 20
Fachliche
Anforderungen
Randbedingungen
Qualitätsziele
Architektur
Bau-
steineSpezial-
konzepte
Techno-
logien
Lösungsstrategie
Risi-
ken
11
Agile Architektur© Orientation in Objects GmbH 21
Architektur bewerten
4
Agile Architektur© Orientation in Objects GmbH 22
Theorie:
Architekturen früh vergleichbar
Praxis:
Analyse wird während Schadensbegrenzung
spät im Projekt durchgeführt
12
Agile Architektur© Orientation in Objects GmbH 23
Szenariobasierte
Architekturbewertung
SAAM – Software architecture analysis method
ATAM – Architecture tradeoff analysis method
ACDM – Architecture-centric design method
Agile Architektur© Orientation in Objects GmbH 24
Architektur 1 Architektur 2
Neues Krankenversicherungsprodukt
DHL statt Hermes
…
Ergebnis
Komponenten Aufwand Komponenten Aufwand
3 28d 2 20d
- - 4 12d
3 28d 6 32d
Stakeholder
13
Agile Architektur© Orientation in Objects GmbH 25
Architektur dokumentieren
5
Agile Architektur© Orientation in Objects GmbH 26
Ansicht
Schnitt
Grundriss
14
Agile Architektur© Orientation in Objects GmbH 27
Kontextsichten
Laufzeitsichten Bausteinsichten Verteilungssichten
Agile Architektur© Orientation in Objects GmbH 28
Lev
el
0Le
ve
l 1
Lev
el
2
Nicht zu detailliert,
sondern pragmatisch
und effizient!
15
Agile Architektur© Orientation in Objects GmbH 29
Templates für:
Microsoft Word
Confluence
Markdown, AsciiDoc
Latex, DocBook
HTML, EPUB
Textile
Agile Architektur© Orientation in Objects GmbH 30
Continuous
Documentation
Documentation
as Code
REPO
16
Agile Architektur© Orientation in Objects GmbH 31
Architektur kommunizieren
6
Agile Architektur© Orientation in Objects GmbH 32
"Man glaubt nur so lange, dass
ein Entwurf perfekt ist, bis man ihn
jemand anderem gezeigt hat."
(Software Architecture Documentation in Practice von Bachmann, Bass)
17
Agile Architektur© Orientation in Objects GmbH 33
vs.
ԪԬ
$€!!!!
?
Agile Architektur© Orientation in Objects GmbH 34
Wenn man die Architektur
nicht erklären kann,
ist sie zu kompliziert!
18
Agile Architektur© Orientation in Objects GmbH 35
Agile Architektur© Orientation in Objects GmbH 36
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
19
Agile Architektur© Orientation in Objects GmbH 37
Dokumentation generieren
7
Agile Architektur© Orientation in Objects GmbH
interface DemoService {String foobar();
}
class DemoServiceImpl implements DemoService {@Overridepublic String foobar() {
return "demo";}
}
enum State {NEW, OPEN, APPROVED, IN_PROGRESS, FIXED
}
38
PlantUML +
AsciiDoc
generieren
Quellcode
DB-Schema
UML-Modell
Schnittstellen
Konfiguration
@startuml
interface DemoServiceDemoService <|-- DemoServiceImpl
enum State {NEWOPENAPPROVEDIN_PROGRESSFIXED
}
@enduml
# Werte von State
* NEW* OPEN* APPROVED* IN_PROGRESS* FIXED
20
Agile Architektur© Orientation in Objects GmbH 39
Generate
automatisiert
validieren!
Agile Architektur© Orientation in Objects GmbH 40
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
21
Agile Architektur© Orientation in Objects GmbH 41
Automatisierte
Architekturchecks
einrichten
8
Agile Architektur© Orientation in Objects GmbH
@Component
public class DemoServiceImpl implements DemoService {
@Autowired
private DemoController demoController;
public void superServiceMethod() {
demoController.doSomething();
}
}
42
Controller
ServiceImpl
22
Agile Architektur© Orientation in Objects GmbH 43
https://github.com/thorstenmaier/architecture-layer-check/
Controller
ServiceImpl
DaoImpl
@RunWith(SpringRunner.class)
@SpringBootTest
public class DepencencyTesterApplicationTests {
@Autowired
private DefaultListableBeanFactory beanFactory;
@Test
public void checkDependencies() {
for (String beanName : beanFactory.getBeanDefinitionNames()) {
for (String depName : beanFactory.getDependenciesForBean(beanName)) {
checkNotAllowedConnection(beanName, depName, ".*ServiceImpl", ".*Controller");
checkNotAllowedConnection(beanName, depName, ".*Controller", ".*DaoImpl");
checkNotAllowedConnection(beanName, depName, ".*DaoImpl", ".*Controller");
}
}
}
private void checkNotAllowedConnection(String beanName, String depName, String beanNamePattern,
String dependencyNamePattern) {
String msg = "Connection not allowed: " + beanName + " -> " + depName;
assertFalse(msg, beanName.matches(beanNamePattern) && depName.matches(dependencyNamePattern));
}
}
Agile Architektur© Orientation in Objects GmbH 44
Dokumentation ausführen
9
23
Agile Architektur© Orientation in Objects GmbH 45
Living Documentation
Agile Architektur© Orientation in Objects GmbH 46
24
Agile Architektur© Orientation in Objects GmbH 47
Architektur-
definition
in PlantUML
Generierte
Cypher-
Regel
[[architecture:DefinedDependencies][plantuml,role=concept]----[artifactId:xo.impl] as impl <<:Maven:Project>>[artifactId:xo.api] as api <<:Maven:Project>>[artifactId:xo.spi] as spi <<:Maven:Project>>
impl -> api : Defines Dependencyimpl -> spi : Defines Dependencyspi -> api : Defines Dependency----
[[architecture:UndefinedDependencies[source,cypher,role=constraint,requiresConceptsThere must not be dependencies between Maven project which have not been defined.----MATCH(p1:Maven:Project)-[:CREATES]-(p2:Maven:Project)-[:CREATES]-(t2)-[:DEPENDS_ON]->(t1)
WHERE NOT(p1)-[:DEFINES_DEPENDENCY
RETURN*
----
Agile Architektur© Orientation in Objects GmbH 48
Code Reviews
installieren
10
25
Agile Architektur© Orientation in Objects GmbH 49
Kennen Sie das?
„Das ist historisch
gewachsen.“
Agile Architektur© Orientation in Objects GmbH 50
…noch ein Klassiker
„Thomas ist leider gerade
im Urlaub“
26
Agile Architektur© Orientation in Objects GmbH 51
Bugs finden
Agile Architektur© Orientation in Objects GmbH 52
Wissen
27
Agile Architektur© Orientation in Objects GmbH 53
100 105
15
0
20
40
60
80
100
120
ohne Code-Review mit Code-Review
En
twic
klu
ng
sko
ste
n i
n %
Code-Review
Entwicklung
Agile Architektur© Orientation in Objects GmbH 54
ohne Code-Review mit Code-Review
Bugfixing
Code-Review
EntwicklungWissen
28
Agile Architektur© Orientation in Objects GmbH 55
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
Agile Architektur© Orientation in Objects GmbH 56
Retrospektive
durchführen
11
29
Agile Architektur© Orientation in Objects GmbH 57
Entwicklungsteam Management KundeArchitektur
Agile Architektur© Orientation in Objects GmbH 58
Verbesserungen einplanen
und vorantreiben
12
30
Agile Architektur© Orientation in Objects GmbH 59
Arbeitspakete
aus Retrospektive
Agile Architektur© Orientation in Objects GmbH 60
Something that's
everybody's responsibility
is no one's responsibility.
31
Agile Architektur© Orientation in Objects GmbH 61
Mitentwickelnder
Kümmerer/
Koordinator
Agile Architektur© Orientation in Objects GmbH 62
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
Nicht-funktionale
Anforderungen
konkretisieren
Stakeholder
bewusst machen
Bausteine und
Beziehungen
entwerfen
Architektur
bewerten
Architektur
dokumentieren
Architektur
kommunizieren
Automatisierte
Architekturtests
einrichtenCode Reviews
installieren
Retrospektive
durchführen
Verbesserungen
einplanen und
vorantreiben
Dokumentation
generieren
Dokumentation
ausführen
32
Agile Architektur© Orientation in Objects GmbH 63
ArchitekturArchitekturArchitekturArchitektur
entwerfenentwerfenentwerfenentwerfen
ArchitekturArchitekturArchitekturArchitektur
umsetzenumsetzenumsetzenumsetzen
automatischautomatischautomatischautomatisch
prüfenprüfenprüfenprüfen
Prozess & ArchitekturProzess & ArchitekturProzess & ArchitekturProzess & Architektur
verbessernverbessernverbessernverbessern
Nicht-funktionale
Anforderungen
konkretisieren
Stakeholder
bewusst machen
Bausteine und
Beziehungen
entwerfenArchitektur
bewerten
Architektur
dokumentieren
Architektur
kommunizieren
Automatisierte
Architekturtests
einrichten
Code Reviews
installieren
Retrospektive
durchführen
Verbesserungen
einplanen und
vorantreiben
Dokumentation
generieren
Dokumentation
ausführen
Thorsten
Thorsten Thorsten
Thorsten
Thorsten
Thorsten
Falk
Falk
Falk
Falk
Falk
Falk
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Vielen Dank für Ihre Aufmerksamkeit!