SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
by	
Mind the Gap
Architecture versus Code
Berlin	Expert	Days	
September	2016	
	
Oliver	B.	Fischer	-	E-Post	Development	GmbH
2
3	
Was ist Software Architektur?
Eine	strukturierte	oder	hierarchische	Anordnung		
der	Systemkomponenten	sowie	die	Beschreibung	
Ihrer	Beziehungen.	
Helmut	Balzert
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
5	
Was ist Software Architektur?
...from	the	plethora	of	definiBons	the	vary	concept	
of	SoGware	Architecture	is	fuzzy	to	the	point	
of	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...
6	
Ziele von Software Architektur
SoGware-Qualität	
Prozess Qualität	 Produkt-Qualität	
Wartbarkeit	 Brauchbarkeit	
PrüVarkeit	 Änderbarkeit	 Portabilität	
Lesbarkeit	 Strukturiertheit	 Einfachheit
7	
Ziele von Software Architektur
Durch	SoGware	Architektur	wollen	wir	erhalten:	
	
§  Wartbare	SoGware	
§  Verständliche	SoGware	
§  Anpassbare	bzw.	Erweiterbare	SoGware	
§  Effiziente	SoGware
8	
Wann Software Architektur entsteht
SoGware	Architektur	entsteht	sobald	sich	zwei	
Personen	über	einen	Aspekt	eines	Dings	oder	
das	Zusammenspiel	zweier	Dinge	absBmmen.
9	
Wann Software Architektur entsteht
SoBware	Architektur	entsteht	sobald	sich	zwei	
Personen	[über	einen	Aspekt	eines	Dings	oder	
das	Zusammenspiel	zweier	Dinge]	absImmen.
10	
Software Architektur ist Kommunikation
SoGware	Architektur	ist	[auch]	KommunikaBon	
über	Strukturen,	Beziehungen	und	Prinzipien...	
...um	besser	und	leichter	arbeiten	zu	können.
11	
Software Architektur ist Kommunikation
SoGware	Architektur	muß	Verständnis	schaffen,	
nicht	nur	für	das	Wie,	sondern	auch	für	das	
Warum!
12	
Software Architektur ist Kommunikation
Drei	Rollen-Model	
Domainexperte	 Entwickler	 User
13	
Software Architektur ist Kommunikation
Einfachster	Fall	
§  Domainexperte	
§  Entwickler	
§  User
14	
Software Architektur ist Kommunikation
Es	wird	schwieriger...	
§  Domainexperte	 §  Entwickler	
§  User
15	
Software Architektur ist Kommunikation
Es	wird	schwieriger...	
§  Domainexperte	 §  Entwickler	 §  User
16	
Software Architektur ist Kommunikation
Das	Team	wird	größer	
§  Domainexperte	 §  Entwickler	 §  User
17	
Software Architektur ist Kommunikation
Es	verteilt	sich...	
Team	in	Berlin	 Team	in	München
18	
Software Architektur ist Kommunikation
Es	verteilt	sich	geographisch	und	kulturell	
Ich	spreche		
Deutsch...	
Я	говорю		
по-русский	
I	speak	Englisch
19	
Software Architektur ist Kommunikation
Und	dann	auch	zeitlich...
20	
Software Architektur ist Kommunikation
Ach	ja:	Microservices...
21	
Altlasten & Technische Schulden
Veraltete	Libraries....	
Neue	Lösungsansätze	
Divergierende	Makroarchitektur
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.	...
23	
Wir brauchen Regeln
§1.	Jedes	System...	
§2.	Jede	Methode...	
§3.	Auf	jedem	Server...	
§4.	...	
Regeln	entstehen	meist	informell
24	
Wir brauchen Regeln
Informelle	Regeln	haben	Grenzen...	
§  Größe	des	Teams	erschwert	KommunikaBon	
§  Entstehung	von	Inselwissen	
§  FluktuaBon	
§  Charaktertypen
25	
Lösungsansatz
Überführung	von	informellen	Regeln	
in	formale	Regeln.
26	
Lösungsansatz
„Wir	schreiben	das	auf!“	
„Wo?“	
„Im	Wiki!“	
Zitat	„Wiki,	der	Ort	wo	
InformaBonen	zum	Sterben	
hingehen.“
27	
Lösungsansatz
„Wir	schreiben	das	auf!“	
„Wo?“	
„Im	Wiki!“	
W 	here	
	I	 	informaBon	
K 	ills	
	I 	tself
28	
Lösungsansatz
DokumentaIon	
!=	
KommunikaIon
29	
Lösungsansatz
Helfen	Reviews?
30	
Lösungsansatz
Helfen	Tools?
jQAssistant
Mind	The	Gap!	
Architecture	vs.	Code	
31
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
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…
34	
Command	
Line/	
Maven	
Scan	
Analyze	
Report	
Plugins	
Plugins	
Plugins
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
Software As A Graph
Mind	The	Gap!	
Architecture	vs.	Code	
36
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
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
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
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
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	
()-[]->()
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)
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)
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
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
Demo #1
Mind	The	Gap!	
Architecture	vs.	Code	
46	
hHp://jqassistant.org/get-started/
Building The Bridge
Mind	The	Gap!	
Architecture	vs.	Code	
47
48	
§  Analyze		
-  ExecuBon	of	rules	
§  Defined	in	AsciiDoc	or	XML	documents	
-  Concepts	
§  Enrich	data	model	
-  Constraints	
§  Detect	violaBons	
-  Group	
§  Allow	different	execuBon	profiles
49	
Constraint	Group	
Concept	 Concept	Concept	
Includes	
Requires	 Requires	
Requires
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	
----
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
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	
----
53	
§  Group	
	
[[default]]	
[role=group,includesConstraints="model:JpaEntityInModelPackage"]	
==	Naming	Rules	
	
The	following	naming	rules	apply:	
-	<<model:JpaEntityInModelPackage>>
54	
§  AsciiDoc	
§  Wiki	syntax	
§  Rendering	to	
-  DocBook		
-  HTML	
-  PDF	
§  Executable	specificaBon	
-  Coding	rules	
-  Design	&	Architecture
Demo #2
Mind	The	Gap!	
Architecture	vs.	Code	
55	
hHp://github.com/buschmais/spring-petclinic
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
Mail:	info@jqassistant.org	
Web:	jqassistant.org	
TwiHer:	@jqassistant	
Thank You! – Questions?
by

Weitere ähnliche Inhalte

Ähnlich wie Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016

Mind the Gap - Architecture versus Code @ W-JAX 2016
Mind the Gap - Architecture versus Code @ W-JAX 2016Mind the Gap - Architecture versus Code @ W-JAX 2016
Mind the Gap - Architecture versus Code @ W-JAX 2016Oliver Fischer
 
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...Matthias Bohlen
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternBrockhaus Consulting GmbH
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Christian Baranowski
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
IA Konferenz 2009
IA Konferenz 2009IA Konferenz 2009
IA Konferenz 2009Jutta Korn
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenenpit GmbH & Co. KG
 
Continuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn AgileContinuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn AgileLeanIX GmbH
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
Code-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-EntwicklungCode-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-Entwicklungbhoeck
 
Large Scale Scrum (LeSS) als Organisations-Design-Framework
Large Scale Scrum (LeSS) als Organisations-Design-FrameworkLarge Scale Scrum (LeSS) als Organisations-Design-Framework
Large Scale Scrum (LeSS) als Organisations-Design-FrameworkJosef Scherer
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPChristian Guenther
 
Architektur = Kommunikation
Architektur = KommunikationArchitektur = Kommunikation
Architektur = KommunikationMatthias Bohlen
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDevDay Dresden
 
Automatisierte Generierung hybrider Apps für Mobile Devices
Automatisierte Generierung hybrider Apps für Mobile DevicesAutomatisierte Generierung hybrider Apps für Mobile Devices
Automatisierte Generierung hybrider Apps für Mobile DevicesJens Küsters
 
ZüRich Ii Mobile App Final V3
ZüRich Ii Mobile App Final V3ZüRich Ii Mobile App Final V3
ZüRich Ii Mobile App Final V3guest08d4be
 
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...Rainer Stropek
 

Ähnlich wie Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016 (20)

Mind the Gap - Architecture versus Code @ W-JAX 2016
Mind the Gap - Architecture versus Code @ W-JAX 2016Mind the Gap - Architecture versus Code @ W-JAX 2016
Mind the Gap - Architecture versus Code @ W-JAX 2016
 
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary Pattern
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
IA Konferenz 2009
IA Konferenz 2009IA Konferenz 2009
IA Konferenz 2009
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-ComputingUnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesen
 
Continuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn AgileContinuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn Agile
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
Code-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-EntwicklungCode-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-Entwicklung
 
Large Scale Scrum (LeSS) als Organisations-Design-Framework
Large Scale Scrum (LeSS) als Organisations-Design-FrameworkLarge Scale Scrum (LeSS) als Organisations-Design-Framework
Large Scale Scrum (LeSS) als Organisations-Design-Framework
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
 
Architektur = Kommunikation
Architektur = KommunikationArchitektur = Kommunikation
Architektur = Kommunikation
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
 
Automatisierte Generierung hybrider Apps für Mobile Devices
Automatisierte Generierung hybrider Apps für Mobile DevicesAutomatisierte Generierung hybrider Apps für Mobile Devices
Automatisierte Generierung hybrider Apps für Mobile Devices
 
ZüRich Ii Mobile App Final V3
ZüRich Ii Mobile App Final V3ZüRich Ii Mobile App Final V3
ZüRich Ii Mobile App Final V3
 
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...
BASTA Spring 2018: User Interface, quo vadis? Überlebensstrategien eines Soft...
 
Architekturbewertung
ArchitekturbewertungArchitekturbewertung
Architekturbewertung
 

Mind the Gap - Architecture versus Code @ Berlin Expert Days 2016