Agile Architektur - oio.de · 2 © Orientation in Objects GmbH Agile Architektur Ihre Sprecher...

Post on 04-Nov-2019

8 views 0 download

transcript

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

www.oio.deinfo@oio.deVersion:

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

www.oio.deinfo@oio.de

Vielen Dank für Ihre Aufmerksamkeit!