SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Oliver B. Fischer (@sweblogtweets)
Mind the Gap
Architektur versus Code
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 organisation of a system embodied
in its components, their relationships to each other,
and the environment, and the principles guiding
its design and evolution.
IEEE 1471-2000
5
Was ist Software Architektur?
...from the plethora of definitions the vary concept
of Software Architecture is fuzzy to the point
of utter 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 Software Architect“.
...[which] implodes immediatly on the appointment of a
second Software Architect...
6
Ziele von Software Architektur
Software-Qualität
Prozess Qualität Produkt-Qualität
Wartbarkeit Brauchbarkeit
Prüfbarkeit Änderbarkeit Portabilität
Lesbarkeit Strukturiertheit Einfachheit
7
Ziele von Software Architektur
Durch Software Architektur wollen wir erhalten:
 Wartbare Software
 Verständliche Software
 Anpassbare bzw. Erweiterbare Software
 Effiziente Software
8
Wann Software Architektur entsteht
Software Architektur entsteht sobald sich zwei
Personen über einen Aspekt eines Dings oder
das Zusammenspiel zweier Dinge abstimmen.
9
Wann Software Architektur entsteht
Software Architektur entsteht sobald sich zwei
Personen [über einen Aspekt eines Dings oder
das Zusammenspiel zweier Dinge] abstimmen.
10
Software Architektur ist Kommunikation
Software Architektur ist [auch] Kommunikation
über Strukturen, Beziehungen und Prinzipien...
...um besser und leichter arbeiten zu können.
11
Software Architektur ist Kommunikation
Software 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 Kommunikation
 Entstehung von Inselwissen
 Fluktuation
 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
Informationen zum Sterben
hingehen.“
27
Lösungsansatz
„Wir schreiben das auf!“
„Wo?“
„Im Wiki!“
W here
I information
K ills
I tself
28
Lösungsansatz
Dokumentation
!=
Kommunikation
29
Lösungsansatz
Helfen Reviews?
30
Lösungsansatz
Helfen Tools?
jQAssistant
Mind The Gap!
Architecture vs. Code
31
32
http://jQAssistant.org
 Open Source
 GPL v3
 Current release: 1.1.3
 initiated: 03/2013
 first stable release: 04/2015
 Neo4j Community Edition embedded
 no installation necessary
33
 The Idea
 Scan software structures
 Store in a database
 Execute queries
 Add higher level concepts
 Find constraint violations
 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
LiquibaseJAR, WAR, EARZIP
application.xmlweb.xml
MANIFEST.MF /META-INF/services/*
beans.xml
pom.xml surefire-reports.xml
GZ
*.properties
*.xsd
M2 Repository
*.yaml
Software As A Graph
Mind The Gap!
Architecture vs. Code
36
37
 All we need is…
 Nodes
 Labels
 Properties
 Relationships
 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
Artifact
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
Annotation
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()
Annotation
ANNOTATED_BY
Type
OF_TYPEfqn:javax.persistence.Entity
40
TypeType
Class
EXTENDS
 Explore an application using queries
 Which class extends from another class?
 Let‘s convert this to ASCII art…
 () as nodes
 -[]-> as directed relationships
41
TypeType
Class
EXTENDS
 Explore an application using queries
 Which class extends from another class?
 Let‘s convert this to ASCII art…
 () as nodes
 -[]-> as directed relationships
()-[]->()
42
C2
Type
C1
Type
Class
EXTENDS
 Explore an application using queries
 Which class extends from another class?
 Let‘s convert this to ASCII art…
 () as nodes
 -[]-> as directed relationships
(c1)-[]->(c2)
43
C2
Type
C1
Type
Class
EXTENDS
 Explore an application using queries
 Which class extends from another class?
 Let‘s convert this to ASCII art…
 () as nodes
 -[]-> as directed relationships
(c1)-[:EXTENDS]->(c2)
44
 Explore an application using queries
 Which class extends from another class?
 Let‘s convert this to ASCII art…
 () as nodes
 -[]-> as directed relationships
(c1:Class)-[:EXTENDS]->(c2:Type)
C2
Type
C1
Type
Class
EXTENDS
45
 Explore an application using queries
 Which class extends from another class?
 Pattern 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
http://jqassistant.org/get-started/
Building The Bridge
Mind The Gap!
Architecture vs. Code
47
48
 Analyze
 Execution of rules
 Defined in AsciiDoc or XML documents
 Concepts
 Enrich data model
 Constraints
 Detect violations
 Group
 Allow different execution profiles
49
ConstraintGroup
Concept ConceptConcept
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
Entity
JpaType
Class
fqn:org.springframework.
samples.petclinic.
model.Owner
name:Owner
Annotation
ANNOTATED_BY
Type
OF_TYPEfqn:javax.persistence.Entity
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 specification
 Coding rules
 Design & Architecture
Demo #2
Mind The Gap!
Architecture vs. Code
55
http://github.com/buschmais/spring-petclinic
56
 Holistic view on code structure and system architecture
 Exploration of existing structures
 Validation of rules
 Executable architecture and design specification
 Rules using terms from architecture & design language
Mail: info@jqassistant.org
Web: jqassistant.org
Twitter: @jqassistant
Thank You! – Questions?
by

Weitere ähnliche Inhalte

Ähnlich wie Mind the Gap - Architecture versus Code @ W-JAX 2016

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
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...BATbern
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenRoland Mast
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureQAware GmbH
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsAndreas Schreiber
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptTomasz Waszczyk
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptTomasz Waszczyk
 
DevOps in der Praxis
DevOps in der PraxisDevOps in der Praxis
DevOps in der Praxisinovex GmbH
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxkaftanenko
 
.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
 
German UPA Konferenz - Der IxD Baukasten
German UPA Konferenz - Der IxD BaukastenGerman UPA Konferenz - Der IxD Baukasten
German UPA Konferenz - Der IxD BaukastenUSECON
 
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
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenenpit GmbH & Co. KG
 
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
 
Agilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der SoftwareentwicklungAgilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der Softwareentwicklungrico.fritzsche
 

Ähnlich wie Mind the Gap - Architecture versus Code @ W-JAX 2016 (20)

Micro, Nano, Mono? Microservices verständlich erklärt
Micro, Nano, Mono? Microservices verständlich erklärtMicro, Nano, Mono? Microservices verständlich erklärt
Micro, Nano, Mono? Microservices verständlich erklärt
 
Micro, Nano, Mono - Microservices verständlich erklärt.
Micro, Nano, Mono  - Microservices verständlich erklärt.Micro, Nano, Mono  - Microservices verständlich erklärt.
Micro, Nano, Mono - Microservices verständlich erklärt.
 
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?
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
 
Softwarequalität: Einfluss der Architektur
Softwarequalität: Einfluss der ArchitekturSoftwarequalität: Einfluss der Architektur
Softwarequalität: Einfluss der Architektur
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skript
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skript
 
DevOps in der Praxis
DevOps in der PraxisDevOps in der Praxis
DevOps in der Praxis
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptx
 
.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
 
German UPA Konferenz - Der IxD Baukasten
German UPA Konferenz - Der IxD BaukastenGerman UPA Konferenz - Der IxD Baukasten
German UPA Konferenz - Der IxD Baukasten
 
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...
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesen
 
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
 
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-ComputingUnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
 
Agilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der SoftwareentwicklungAgilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der Softwareentwicklung
 

Mind the Gap - Architecture versus Code @ W-JAX 2016