Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016
-
Upload
oliver-fischer -
Category
Technology
-
view
94 -
download
2
Transcript of Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016
![Page 1: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/1.jpg)
by
Mind the Gap Architecture versus Code
BerlinExpertDaysSeptember2016
OliverB.Fischer-E-PostDevelopmentGmbH
![Page 2: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/2.jpg)
2
![Page 3: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/3.jpg)
3
Was ist Software Architektur?
EinestrukturierteoderhierarchischeAnordnungderSystemkomponentensowiedieBeschreibungIhrerBeziehungen.
HelmutBalzert
![Page 4: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/4.jpg)
4
Was ist Software Architektur?
ThefundamentalorganisaBonofasystemembodiedinitscomponents,theirrelaBonshipstoeachother,andtheenvironment,andtheprinciplesguidingitsdesignandevoluBon.
IEEE1471-2000
![Page 5: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/5.jpg)
5
Was ist Software Architektur?
...fromtheplethoraofdefiniBonsthevaryconceptofSoGwareArchitectureisfuzzytothepointofuHeruselessness...
SEI@CMI:JohnCarter
Alotoffolksmean:
ThatpeculiarconsistencyandhomogenityofDesignthatwouldgivearisetotheeaseofuseandreuse,whichiswishedforbythedeveloperwhocallshimself„TheSoGwareArchitect“.
...[which]implodesimmediatlyontheappointmentofasecondSoGwareArchitect...
![Page 6: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/6.jpg)
6
Ziele von Software Architektur
SoGware-Qualität
Prozess Qualität Produkt-Qualität
Wartbarkeit Brauchbarkeit
PrüVarkeit Änderbarkeit Portabilität
Lesbarkeit Strukturiertheit Einfachheit
![Page 7: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/7.jpg)
7
Ziele von Software Architektur
DurchSoGwareArchitekturwollenwirerhalten:§ WartbareSoGware§ VerständlicheSoGware§ Anpassbarebzw.ErweiterbareSoGware§ EffizienteSoGware
![Page 8: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/8.jpg)
8
Wann Software Architektur entsteht
SoGwareArchitekturentstehtsobaldsichzweiPersonenübereinenAspekteinesDingsoderdasZusammenspielzweierDingeabsBmmen.
![Page 9: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/9.jpg)
9
Wann Software Architektur entsteht
SoBwareArchitekturentstehtsobaldsichzweiPersonen[übereinenAspekteinesDingsoderdasZusammenspielzweierDinge]absImmen.
![Page 10: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/10.jpg)
10
Software Architektur ist Kommunikation
SoGwareArchitekturist[auch]KommunikaBonüberStrukturen,BeziehungenundPrinzipien...
...umbesserundleichterarbeitenzukönnen.
![Page 11: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/11.jpg)
11
Software Architektur ist Kommunikation
SoGwareArchitekturmußVerständnisschaffen,nichtnurfürdasWie,sondernauchfürdasWarum!
![Page 12: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/12.jpg)
12
Software Architektur ist Kommunikation
DreiRollen-Model
Domainexperte Entwickler User
![Page 13: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/13.jpg)
13
Software Architektur ist Kommunikation
EinfachsterFall
§ Domainexperte§ Entwickler§ User
![Page 14: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/14.jpg)
14
Software Architektur ist Kommunikation
Eswirdschwieriger...
§ Domainexperte § Entwickler§ User
![Page 15: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/15.jpg)
15
Software Architektur ist Kommunikation
Eswirdschwieriger...
§ Domainexperte § Entwickler § User
![Page 16: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/16.jpg)
16
Software Architektur ist Kommunikation
DasTeamwirdgrößer
§ Domainexperte § Entwickler § User
![Page 17: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/17.jpg)
17
Software Architektur ist Kommunikation
Esverteiltsich...
TeaminBerlin TeaminMünchen
![Page 18: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/18.jpg)
18
Software Architektur ist Kommunikation
Esverteiltsichgeographischundkulturell
IchsprecheDeutsch...
Яговорюпо-русский
IspeakEnglisch
![Page 19: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/19.jpg)
19
Software Architektur ist Kommunikation
Unddannauchzeitlich...
![Page 20: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/20.jpg)
20
Software Architektur ist Kommunikation
Achja:Microservices...
![Page 21: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/21.jpg)
21
Altlasten & Technische Schulden
VeralteteLibraries....
NeueLösungsansätze
DivergierendeMakroarchitektur
![Page 22: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/22.jpg)
22
Wir brauchen Regeln
HastDumalZeit?Ja,waswillstDudenn?
IchhabedaeineIdee.Laßmalhören...
......
Ja,somachenwirdas!
§1.JedesSystem...§2.JedeMethode...§3.AufjedemServer...§4....
![Page 23: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/23.jpg)
23
Wir brauchen Regeln
§1.JedesSystem...§2.JedeMethode...§3.AufjedemServer...§4....
Regelnentstehenmeistinformell
![Page 24: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/24.jpg)
24
Wir brauchen Regeln
InformelleRegelnhabenGrenzen...
§ GrößedesTeamserschwertKommunikaBon§ EntstehungvonInselwissen§ FluktuaBon§ Charaktertypen
![Page 25: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/25.jpg)
25
Lösungsansatz
ÜberführungvoninformellenRegelninformaleRegeln.
![Page 26: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/26.jpg)
26
Lösungsansatz
„Wirschreibendasauf!“„Wo?“
„ImWiki!“
Zitat„Wiki,derOrtwoInformaBonenzumSterbenhingehen.“
![Page 27: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/27.jpg)
27
Lösungsansatz
„Wirschreibendasauf!“„Wo?“
„ImWiki!“
W hereI informaBonK illsI tself
![Page 28: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/28.jpg)
28
Lösungsansatz
DokumentaIon!=
KommunikaIon
![Page 29: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/29.jpg)
29
Lösungsansatz
HelfenReviews?
![Page 30: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/30.jpg)
30
Lösungsansatz
HelfenTools?
![Page 31: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/31.jpg)
jQAssistant
MindTheGap!Architecturevs.Code
31
![Page 32: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/32.jpg)
32
hHp://jQAssistant.org§ OpenSource- GPLv3
§ Currentrelease:1.1.3- iniBated:03/2013- firststablerelease:04/2015
§ Neo4jCommunityEdiBonembedded- noinstallaBonnecessary
![Page 33: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/33.jpg)
33
§ TheIdea- ScansoGwarestructures
- Storeinadatabase
- Executequeries§ Addhigherlevelconcepts§ FindconstraintviolaBons
- CreateReports
àProvidefeedbacktodeveloperswithinbuildprocess
Database
Findall…
![Page 34: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/34.jpg)
34
CommandLine/Maven
Scan
Analyze
Report
Plugins
Plugins
Plugins
![Page 35: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/35.jpg)
35
§ Availablescannerplugins
§ PluginAPIispublic
*.class
RDBMSSchema
GitJaCoCo
FindBugsCheckStyle
LiquibaseJAR,WAR,EARZIP
applicaBon.xmlweb.xml
MANIFEST.MF /META-INF/services/*
beans.xml
pom.xml surefire-reports.xml
GZ
*.properBes
*.xsd
M2Repository
*.yaml
![Page 36: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/36.jpg)
Software As A Graph
MindTheGap!Architecturevs.Code
36
![Page 37: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/37.jpg)
37
§ Allweneedis…- Nodes- Labels- ProperBes- RelaBonships
§ Modelingisjust…- Takingapen- Drawingthestructuresonawhiteboard(i.e.thedatabase)
§ Wedon‘tneed…- Foreignkeys- Tablesandschemas- Deepknowledgeingraphtheory
Type
EXTENDSfqn:org.springframework.samples.
petclinic.model.Owner
![Page 38: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/38.jpg)
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
![Page 39: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/39.jpg)
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_TYPEfqn: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_TYPEfqn:javax.persistence.EnBty
![Page 40: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/40.jpg)
40
TypeType
Class
EXTENDS
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ Let‘sconvertthistoASCIIart…- ()asnodes- -[]->asdirectedrelaBonships
![Page 41: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/41.jpg)
41
TypeType
Class
EXTENDS
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ Let‘sconvertthistoASCIIart…- ()asnodes- -[]->asdirectedrelaBonships
()-[]->()
![Page 42: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/42.jpg)
42
C2Type
C1Type
Class
EXTENDS
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ Let‘sconvertthistoASCIIart…- ()asnodes- -[]->asdirectedrelaBonships
(c1)-[]->(c2)
![Page 43: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/43.jpg)
43
C2Type
C1Type
Class
EXTENDS
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ Let‘sconvertthistoASCIIart…- ()asnodes- -[]->asdirectedrelaBonships
(c1)-[:EXTENDS]->(c2)
![Page 44: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/44.jpg)
44
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ Let‘sconvertthistoASCIIart…- ()asnodes- -[]->asdirectedrelaBonships
(c1:Class)-[:EXTENDS]->(c2:Type)
C2Type
C1Type
Class
EXTENDS
![Page 45: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/45.jpg)
45
§ ExploreanapplicaBonusingqueries- Whichclassextendsfromanotherclass?
§ PaHernmatchingisthecoreprincipleofCypherMATCH(c1:Class)-[:EXTENDS]->(c2:Type)RETURNc1.fqn,c2.fqn
C2Type
C1Type
Class
EXTENDS
![Page 46: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/46.jpg)
Demo #1
MindTheGap!Architecturevs.Code
46
hHp://jqassistant.org/get-started/
![Page 47: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/47.jpg)
Building The Bridge
MindTheGap!Architecturevs.Code
47
![Page 48: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/48.jpg)
48
§ Analyze- ExecuBonofrules
§ DefinedinAsciiDocorXMLdocuments
- Concepts§ Enrichdatamodel
- Constraints§ DetectviolaBons
- Group§ AllowdifferentexecuBonprofiles
![Page 49: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/49.jpg)
49
ConstraintGroup
Concept ConceptConcept
Includes
Requires Requires
Requires
![Page 50: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/50.jpg)
50
§ Concept==JPAEntities[[jpa2:Entity]].Labelsalltypesannotatedwith@javax.persistence.EntitywithJpaandEntity.[source,cypher,role=concept]----MATCH(t:Type)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(a:Type)WHEREa.fqn="javax.persistence.Entity"SETt:Jpa:EntityRETURNtASEntity----
![Page 51: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/51.jpg)
51
§ Concept
EnBty
JpaType
Class
fqn:org.springframework.samples.petclinic.model.Owner
name:Owner
AnnotaBon
ANNOTATED_BY
Type
OF_TYPEfqn:javax.persistence.EnBty
![Page 52: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/52.jpg)
52
§ Constraint[[model:JpaEntityInModelPackage]].AllJPAentitiesmustbelocatedinpackagesnamed"model".[source,cypher,role=constraint,requiresConcepts="jpa2:Entity"]----MATCH(package:Package)-[:CONTAINS]->(entity:Jpa:Entity)WHEREpackage.name<>"model"RETURNentityASEntityInWrongPackage----
![Page 53: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/53.jpg)
53
§ Group[[default]][role=group,includesConstraints="model:JpaEntityInModelPackage"]==NamingRulesThefollowingnamingrulesapply:-<<model:JpaEntityInModelPackage>>
![Page 54: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/54.jpg)
54
§ AsciiDoc§ Wikisyntax
§ Renderingto- DocBook- HTML
§ ExecutablespecificaBon- Codingrules- Design&Architecture
![Page 55: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/55.jpg)
Demo #2
MindTheGap!Architecturevs.Code
55
hHp://github.com/buschmais/spring-petclinic
![Page 56: Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016](https://reader035.fdocuments.net/reader035/viewer/2022081401/58ede33d1a28aba0708b46c9/html5/thumbnails/56.jpg)
56
- HolisBcviewoncodestructureandsystemarchitecture
- ExploraBonofexisBngstructures
- ValidaBonofrules- ExecutablearchitectureanddesignspecificaBon
- Rulesusingtermsfromarchitecture&designlanguage