Mind the Gap Architecture versus Code Berlin Expert Days September - - PowerPoint PPT Presentation

mind the gap architecture versus code
SMART_READER_LITE
LIVE PREVIEW

Mind the Gap Architecture versus Code Berlin Expert Days September - - PowerPoint PPT Presentation

by Mind the Gap Architecture versus Code Berlin Expert Days September 2016 Oliver B. Fischer - E-Post Development GmbH 2 Was ist Software Architektur? Eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie die


slide-1
SLIDE 1

by

Mind the Gap Architecture versus Code

Berlin Expert Days September 2016 Oliver B. Fischer - E-Post Development GmbH

slide-2
SLIDE 2

2

slide-3
SLIDE 3

3

Was ist Software Architektur?

Eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie die Beschreibung Ihrer Beziehungen.

Helmut Balzert

slide-4
SLIDE 4

4

Was ist Software Architektur?

The fundamental organisaBon of a system embodied in its components, their relaBonships to each other, and the environment, and the principles guiding its design and evoluBon.

IEEE 1471-2000

slide-5
SLIDE 5

5

Was ist Software Architektur?

...from the plethora of definiBons the vary concept

  • f SoGware Architecture is fuzzy to the point
  • f uHer uselessness...

SEI @ CMI: John Carter

A lot of folks mean: That peculiar consistency and homogenity of Design that would give arise to the ease of use and reuse, which is wished for by the developer who calls himself „The SoGware Architect“. ...[which] implodes immediatly on the appointment of a second SoGware Architect...

slide-6
SLIDE 6

6

Ziele von Software Architektur

SoGware-Qualität Prozess Qualität Produkt-Qualität

Wartbarkeit Brauchbarkeit PrüVarkeit Änderbarkeit Portabilität Lesbarkeit Strukturiertheit Einfachheit

slide-7
SLIDE 7

7

Ziele von Software Architektur Durch SoGware Architektur wollen wir erhalten: § Wartbare SoGware § Verständliche SoGware § Anpassbare bzw. Erweiterbare SoGware § Effiziente SoGware

slide-8
SLIDE 8

8

Wann Software Architektur entsteht SoGware Architektur entsteht sobald sich zwei Personen über einen Aspekt eines Dings oder das Zusammenspiel zweier Dinge absBmmen.

slide-9
SLIDE 9

9

Wann Software Architektur entsteht SoBware Architektur entsteht sobald sich zwei Personen [über einen Aspekt eines Dings oder das Zusammenspiel zweier Dinge] absImmen.

slide-10
SLIDE 10

10

Software Architektur ist Kommunikation SoGware Architektur ist [auch] KommunikaBon über Strukturen, Beziehungen und Prinzipien... ...um besser und leichter arbeiten zu können.

slide-11
SLIDE 11

11

Software Architektur ist Kommunikation SoGware Architektur muß Verständnis schaffen, nicht nur für das Wie, sondern auch für das Warum!

slide-12
SLIDE 12

12

Software Architektur ist Kommunikation Drei Rollen-Model

Domainexperte Entwickler User

slide-13
SLIDE 13

13

Software Architektur ist Kommunikation Einfachster Fall

§ Domainexperte § Entwickler § User

slide-14
SLIDE 14

14

Software Architektur ist Kommunikation Es wird schwieriger...

§ Domainexperte § Entwickler § User

slide-15
SLIDE 15

15

Software Architektur ist Kommunikation Es wird schwieriger...

§ Domainexperte § Entwickler § User

slide-16
SLIDE 16

16

Software Architektur ist Kommunikation Das Team wird größer

§ Domainexperte § Entwickler § User

slide-17
SLIDE 17

17

Software Architektur ist Kommunikation Es verteilt sich...

Team in Berlin Team in München

slide-18
SLIDE 18

18

Software Architektur ist Kommunikation Es verteilt sich geographisch und kulturell

Ich spreche Deutsch... Я говорю по-русский I speak Englisch

slide-19
SLIDE 19

19

Software Architektur ist Kommunikation Und dann auch zeitlich...

slide-20
SLIDE 20

20

Software Architektur ist Kommunikation Ach ja: Microservices...

slide-21
SLIDE 21

21

Altlasten & Technische Schulden Veraltete Libraries.... Neue Lösungsansätze Divergierende Makroarchitektur

slide-22
SLIDE 22

22

Wir brauchen Regeln

Hast Du mal Zeit? Ja, was willst Du denn? Ich habe da eine Idee. Laß mal hören... ... ... Ja, so machen wir das!

§1. Jedes System... §2. Jede Methode... §3. Auf jedem Server... §4. ...

slide-23
SLIDE 23

23

Wir brauchen Regeln

§1. Jedes System... §2. Jede Methode... §3. Auf jedem Server... §4. ...

Regeln entstehen meist informell

slide-24
SLIDE 24

24

Wir brauchen Regeln Informelle Regeln haben Grenzen... § Größe des Teams erschwert KommunikaBon § Entstehung von Inselwissen § FluktuaBon § Charaktertypen

slide-25
SLIDE 25

25

Lösungsansatz Überführung von informellen Regeln in formale Regeln.

slide-26
SLIDE 26

26

Lösungsansatz „Wir schreiben das auf!“ „Wo?“ „Im Wiki!“ Zitat „Wiki, der Ort wo InformaBonen zum Sterben hingehen.“

slide-27
SLIDE 27

27

Lösungsansatz „Wir schreiben das auf!“ „Wo?“ „Im Wiki!“ W here I informaBon K ills I tself

slide-28
SLIDE 28

28

Lösungsansatz

DokumentaIon != KommunikaIon

slide-29
SLIDE 29

29

Lösungsansatz

Helfen Reviews?

slide-30
SLIDE 30

30

Lösungsansatz

Helfen Tools?

slide-31
SLIDE 31

jQAssistant

Mind The Gap! Architecture vs. Code

31

slide-32
SLIDE 32

32

hHp://jQAssistant.org § Open Source

  • GPL v3

§ Current release: 1.1.3

  • iniBated: 03/2013
  • first stable release: 04/2015

§ Neo4j Community EdiBon embedded

  • no installaBon necessary
slide-33
SLIDE 33

33

§ The Idea

  • Scan soGware structures
  • Store in a database
  • Execute queries

§ Add higher level concepts § Find constraint violaBons

  • Create Reports

à Provide feedback to developers within build process

Database Find all…

slide-34
SLIDE 34

34

Command Line/ Maven Scan Analyze Report Plugins Plugins Plugins

slide-35
SLIDE 35

35

§ Available scanner plugins § Plugin API is public

*.class RDBMS Schema Git JaCoCo FindBugs CheckStyle Liquibase JAR, WAR, EAR ZIP applicaBon.xml web.xml MANIFEST.MF /META-INF/services/* beans.xml pom.xml surefire-reports.xml GZ *.properBes *.xsd M2 Repository *.yaml

slide-36
SLIDE 36

Software As A Graph

Mind The Gap! Architecture vs. Code

36

slide-37
SLIDE 37

37

§ All we need is…

  • Nodes
  • Labels
  • ProperBes
  • RelaBonships

§ Modeling is just…

  • Taking a pen
  • Drawing the structures on a whiteboard (i.e. the database)

§ We don‘t need…

  • Foreign keys
  • Tables and schemas
  • Deep knowledge in graph theory

Type EXTENDS

fqn:org.springframework.samples. petclinic.model.Owner

slide-38
SLIDE 38

Project ArBfact Maven CONTAINS Package

name:org

CONTAINS Package

name:springframework

CONTAINS Package

name:petclinic

Package CONTAINS

name:model name:petclinic

CONTAINS Package

name:samples

CREATES

slide-39
SLIDE 39

RETURNS READS Field DECLARES

name:address

Package

name:model

Class Type CONTAINS fqn:org.springframework. samples.petclinic. model.Person

name:Person

AnnotaBon

ANNOTATED_BY Type OF_TYPE

fqn:javax.persistence.MappedSuperclass

Type EXTENDS Class fqn:org.springframework. samples.petclinic. model.Owner

name:Owner

Type OF_TYPE

fqn:java.lang.String

DECLARES Method

name:getAddress()

AnnotaBon

ANNOTATED_BY Type OF_TYPE

fqn:javax.persistence.EnBty

slide-40
SLIDE 40

40

Type Type Class EXTENDS

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ Let‘s convert this to ASCII art…

  • () as nodes
  • -[]-> as directed relaBonships
slide-41
SLIDE 41

41

Type Type Class EXTENDS

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ Let‘s convert this to ASCII art…

  • () as nodes
  • -[]-> as directed relaBonships

()-[]->()

slide-42
SLIDE 42

42

C2

Type

C1

Type Class EXTENDS

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ Let‘s convert this to ASCII art…

  • () as nodes
  • -[]-> as directed relaBonships

(c1)-[]->(c2)

slide-43
SLIDE 43

43

C2

Type

C1

Type Class EXTENDS

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ Let‘s convert this to ASCII art…

  • () as nodes
  • -[]-> as directed relaBonships

(c1)-[:EXTENDS]->(c2)

slide-44
SLIDE 44

44

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ Let‘s convert this to ASCII art…

  • () as nodes
  • -[]-> as directed relaBonships

(c1:Class)-[:EXTENDS]->(c2:Type)

C2

Type

C1

Type Class EXTENDS

slide-45
SLIDE 45

45

§ Explore an applicaBon using queries

  • Which class extends from another class?

§ PaHern matching is the core principle of Cypher

MATCH (c1:Class)-[:EXTENDS]->(c2:Type) RETURN c1.fqn, c2.fqn

C2

Type

C1

Type Class EXTENDS

slide-46
SLIDE 46

Demo #1

Mind The Gap! Architecture vs. Code

46

hHp://jqassistant.org/get-started/

slide-47
SLIDE 47

Building The Bridge

Mind The Gap! Architecture vs. Code

47

slide-48
SLIDE 48

48

§ Analyze

  • ExecuBon of rules

§ Defined in AsciiDoc or XML documents

  • Concepts

§ Enrich data model

  • Constraints

§ Detect violaBons

  • Group

§ Allow different execuBon profiles

slide-49
SLIDE 49

49

Constraint Group Concept Concept Concept Includes Requires Requires Requires

slide-50
SLIDE 50

50

§ Concept

== JPA Entities [[jpa2:Entity]] .Labels all types annotated with @javax.persistence.Entity with Jpa and Entity. [source,cypher,role=concept]

  • MATCH

(t:Type)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(a:Type) WHERE a.fqn ="javax.persistence.Entity" SET t:Jpa:Entity RETURN t AS Entity

slide-51
SLIDE 51

51

§ Concept

EnBty Jpa Type Class fqn:org.springframework. samples.petclinic. model.Owner

name:Owner

AnnotaBon

ANNOTATED_BY Type OF_TYPE

fqn:javax.persistence.EnBty

slide-52
SLIDE 52

52

§ Constraint

[[model:JpaEntityInModelPackage]] .All JPA entities must be located in packages named "model". [source,cypher,role=constraint,requiresConcepts="jpa2:Entity"]

  • MATCH

(package:Package)-[:CONTAINS]->(entity:Jpa:Entity) WHERE package.name <> "model" RETURN entity AS EntityInWrongPackage

slide-53
SLIDE 53

53

§ Group

[[default]] [role=group,includesConstraints="model:JpaEntityInModelPackage"] == Naming Rules The following naming rules apply:

  • <<model:JpaEntityInModelPackage>>
slide-54
SLIDE 54

54

§ AsciiDoc

§ Wiki syntax § Rendering to

  • DocBook
  • HTML
  • PDF

§ Executable specificaBon

  • Coding rules
  • Design & Architecture
slide-55
SLIDE 55

Demo #2

Mind The Gap! Architecture vs. Code

55

hHp://github.com/buschmais/spring-petclinic

slide-56
SLIDE 56

56

  • HolisBc view on code structure and system architecture
  • ExploraBon of exisBng structures
  • ValidaBon of rules
  • Executable architecture and design specificaBon
  • Rules using terms from architecture & design language
slide-57
SLIDE 57

Mail: info@jqassistant.org Web: jqassistant.org TwiHer: @jqassistant Thank You! – Questions?

by