SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Bottom-up anstatt
Top-down
Wie man eine einheitliche
Architektur bei vielfältigen
Anwendungen lebt

Markus Rehrs
@spontifixus

Dr. Stephan Volmer
@stvzeg
Eigentlich nichts Neues

Aufgabe

Einführung einer einheitlichen Architektur für
vielfältige Line-of-Business Anwendungen:
•
•

Datenbank ist die zentrale Komponente

•

Hohe Test- und Integrationsaufwände

•

Development und Operations sind
organisatorisch getrennte Einheiten

•

Hoher Anteil von externen Mitarbeitern

•

Heterogener Technologiestack

•

IMG_1080.jpg by Tom Page
http://www.flickr.com/photos/tompagenet/6851860996/

Datengetriebene Anwendungen

Entwickler erfinden das Rad immer wieder
aufs Neue
Die vermeintliche Logik

Reuse

“If we were to write all the code of a software,
we would write a certain amount of code.”
“If we could reuse some code from somewhere else that was
written before, we could write less code.”
“The more code we can reuse, the less code we write.”
“The less code we write, the sooner we will be done.”

“Get done faster!”
Don't forget to recycle! by James Wang
http://www.flickr.com/photos/10037058@N08/3696670712/
Die Realität sieht anders aus…

Reuse

“There is the time it takes to specify what the software should do.”
“Multiply that by the time it takes to understand
what the software should do.”
“There is the time it takes to write the code.”
“Multiply that by the time it takes to integrate with all other code,
libraries, components, frameworks, databases, services, …”

Debugging!
Deploying!
Testing!
Stabilizing!
Workshops!
Meetings!

Abandoned Boat by William Warby
http://www.flickr.com/photos/wwarby/4859138371/
Aus der Krise in den Aufschwung?

Reuse

Frameworks
Patterns

OSS

Libraries
2000

3GL

2010

1990
SOA

1980
1970
Software
Crisis

OOP
Components
Reuse

Irrtümer, Fakten und Konsequenzen
“Writing code is the primary activity in getting a
system done!
“All code takes the same amount to write!”
“If we just reused more code, everything would be
better.“
“Code by itself is reusable anyway.”
“In order to be reused, code must be generic,
flexible, and replaceable.”
“Code must be specifically designed for reuse!”
“Reusable code is well over-engineered!”

Shiny gold bar reflecting coins by Bullion Vault
http://www.flickr.com/photos/bullionvault/3591732069/
Reuse

Kosten und Nutzen

Kann Ihr Unternehmen sich
wiederverwendbaren Quellcode
leisten?
“Developing reusable code costs three times
as much as single use code”
The Mythical Man Month and Other Essays on Software Engineering,
Frederick P. Brooks Jr.

“Development teams which write reusable code
waste their organizations
a lot of time and money.
Please pay this amount by miguelb
http://www.flickr.com/photos/mig/8689212/

Reuse Myth - Can You Afford Reusable Code?
Allen Kelly
„Was tun?“ spricht Zeus

Reuse

?

Should we not reuse?

•

There are genuine situations were reuse is the
right answer.

!

Look back, not forward!

•
•

Bottom-up instead of top-down!

•
Rear view mirror by a.dombrowski
http://www.flickr.com/photos/adombrowski/5285377223/

Don’t plan for reuse, but look for opportunities!
Simplicity before generality!
Reuse

Schwarz oder Weiß?

Jedes Projekt wählt
Architektur und
Technologie unabhängig
von der umgebenden ITLandschaft.
chess set by Ekkehard Streit
http://www.flickr.com/photos/ekkionline/8846737835/
Reuse

Schwarz oder Weiß?

Ein Framework-Projekt
verschlingt viele
Ressourcen ohnen einen
direkten Mehrwert zu
liefern.
chess set by Ekkehard Streit
http://www.flickr.com/photos/ekkionline/8846737835/
GALAP

Bottom-Up
APET

Wilhelmine Wulff / pixelio.de

MAYA

DRY

KISS

Eine pragmatische Herangehensweise
Libraries und Templates

Artefacts
Quellcode

Eigene VisualStudio Solution
NuGet-Pakete zur Einbindung externer
Komponenten

NuGet-Pakete
Klar umrissene Funktionalität
Bereitstellung externer Komponenten über
eigene Pakete

VisualStudio-Templates
Project-Template für die Applikation
Item-Templates für die einzelnen
Komponenten
Dokumentation

Artefacts
API-Dokumentation
Nachschlagewerk

TFS

Release-Notes
Meeting-Protokolle

Wiki

Doku

Backlog
Defects

Blog

Best-Practices
Anleitungen
Artefacts

Beispiele und Best Practices

Beispielapplikation

Produktive
Applikationen

Code Snippets
Ein Freies Elektron

Process

Team 1

Team 4

Senior
Developer

Team 3

Team 2
Entwicklung mit Rückenwind

Process

Projekt 1

Projekt 4

Blueprint

Projekt 3

Projekt 2
Gemeinsam Stark

Process
Regelmäßige
Meetings

Lebhafte
Kommunikation

Gegenseitige
Reviews

GROSSPROJEKT

Spaßprojekt
miniprojekt

P
kleinprojekt

PROJEKT Y
Semantische Versionierung

Process

Major

Minor

Revision

•

Breaking
Changes

•

Keine Breaking
Changes

•

Keine Breaking
Changes

•

Wesentliche
Veränderungen

•

Neue Features

•

•

Alte Versionen
werden weiter
unterstützt

Bugfixes und
kleinere
Features
Schulungen

Empowering
Einstieg
Einführung

Beispiele
Praxis
Fragerunde
Begeisterung
Empowering

Learning by Doing
Tools

Entwicklungsumgebung

Entwicklungsumgebung und Versionsverwaltung

Lokales NuGet-Repository

IDE Extensions von Drittanbietern und
Eigenentwicklungen

Tools zur statischen Codeanalyse
Tools

Weitere Resourcen

Effiziente
Infrastruktur
Identische
Arbeitsplätze
Starter-Kit
Ein Basis-Check vor dem Start

Zeit

Geld
Wille

Eignung geprüft
Wo ein Wille ist...

Ich möchte lernen wie ich effektiver und
effizenter arbeiten kann!

...ist auch ein Unwilliger

Ich hab das
schon immer
so gemacht!
Wo ein Wille ist...

Ich möchte lernen wie ich effektiver und
effizenter arbeiten kann!

...ist auch ein Weg

Ihr hat mich
überzeugt! Da
bin ich dabei!
Schlüsselfaktor Zusammenarbeit

Menschen

Projekte

Projekte
Blueprint
Thomas Alva Edison

“I readily absorb ideas
from every source,
frequently starting where
the last person left off.”

Library of Congress, Digital ID: cph.3c05139
Das Vorgehen

Am Anfang steht ein Inkubatorprojekt
Inkubator
Inkubator

Blueprint

Projekt B
Das Vorgehen

Generalize as Late as Possible
Projekt Inkubator.Next

Inkubator

Blueprint

Projekt B

Projekt B
Aus Erfahrung gut!

Conclusions
•

Starte mit einem echten Projekt:
Bottom-up anstatt Top-down funktioniert wirklich!

•

Plane kein Framework:
Es entsteht im Laufe der Zeit von selbst!

•

Halte Dich an Prinzipien:
Aber: Pragmatismus anstelle von Religion!

•

Setze Ziele jenseits eines Projektes:
Die Kollegen werden lernen über den Tellerrand
zu schauen!

•

Investiere in Ausbildung, nicht in Code:
Das Know-How der Mitarbeiter ist bares Geld
wert!
Langer Atem zahlt sich aus

Conclusions
•

Ein Framework ist nicht kostenlos:
Ohne kontinuierliches Budget für das “freie
Elektron” läuft das Framework Gefahr ins Koma zu
fallen.

•

Unmittelbarer Return on Invest:
Die Ramp-Up-Zeit für neue Projekte reduziert sich
von fünf Monaten auf fünf Minuten!

•

Projektkosten sind besser planbar:
Die Entwickler können sich auf die
Implementierung der fachlichen Anforderungen
konzentrieren.

Achtung:
Erfolg nicht ausgeschlossen!
Markus Rehrs
markus.rehrs@zuehlke.com
xing.to/mrehrs
twitter @spontifixus

Dr. Stephan Volmer
stephan.volmer@zuehlke.com
xing.to/stv
twitter @stvzeg

Weitere ähnliche Inhalte

Ähnlich wie Bottom-up anstatt Top-down: Wie man eine einheitliche Architektur bei vielfältigen Anwendungen lebt - Vortrag TeamConf 27.11.2013

Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Mastering architecture, design- and code-quality
Mastering architecture, design- and code-qualityMastering architecture, design- and code-quality
Mastering architecture, design- and code-qualitySebastian Dietrich
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Pattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentPattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentMatthias Feit
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?Johann-Peter Hartmann
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsHussein Morsy
 
Wieviel Facebook braucht ein Unternehmen?
Wieviel Facebook braucht ein Unternehmen?Wieviel Facebook braucht ein Unternehmen?
Wieviel Facebook braucht ein Unternehmen?Bogo Vatovec
 
2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineeringDaniel Fisher
 
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-UmgebungDas Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-UmgebungOPITZ CONSULTING Deutschland
 
Digitale Produktentwicklung für Verlage
Digitale Produktentwicklung für VerlageDigitale Produktentwicklung für Verlage
Digitale Produktentwicklung für VerlageGunnar Lott
 
Designsysteme (deutsch) #Xcamp18
Designsysteme (deutsch) #Xcamp18Designsysteme (deutsch) #Xcamp18
Designsysteme (deutsch) #Xcamp18Benno Lœwenberg
 
Designsysteme (deutsch) #UXcampHH
Designsysteme (deutsch) #UXcampHHDesignsysteme (deutsch) #UXcampHH
Designsysteme (deutsch) #UXcampHHBenno Lœwenberg
 
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes -  ICS.UG 2015Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes -  ICS.UG 2015
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015ICS User Group
 
Drei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert habenDrei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert habenChristian Trabold
 
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold Kegebein
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold KegebeinFMK 2013 Design, Gestaltungsmittel in Layouts, Arnold Kegebein
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold KegebeinVerein FM Konferenz
 

Ähnlich wie Bottom-up anstatt Top-down: Wie man eine einheitliche Architektur bei vielfältigen Anwendungen lebt - Vortrag TeamConf 27.11.2013 (20)

Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Mastering architecture, design- and code-quality
Mastering architecture, design- and code-qualityMastering architecture, design- and code-quality
Mastering architecture, design- and code-quality
 
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Pattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentPattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & Development
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
Vom Buzzword zum Service
Vom Buzzword zum ServiceVom Buzzword zum Service
Vom Buzzword zum Service
 
Wieviel Facebook braucht ein Unternehmen?
Wieviel Facebook braucht ein Unternehmen?Wieviel Facebook braucht ein Unternehmen?
Wieviel Facebook braucht ein Unternehmen?
 
2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering
 
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-UmgebungDas Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
 
Digitale Produktentwicklung für Verlage
Digitale Produktentwicklung für VerlageDigitale Produktentwicklung für Verlage
Digitale Produktentwicklung für Verlage
 
Designsysteme (deutsch) #Xcamp18
Designsysteme (deutsch) #Xcamp18Designsysteme (deutsch) #Xcamp18
Designsysteme (deutsch) #Xcamp18
 
Designsysteme (deutsch) #UXcampHH
Designsysteme (deutsch) #UXcampHHDesignsysteme (deutsch) #UXcampHH
Designsysteme (deutsch) #UXcampHH
 
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes -  ICS.UG 2015Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes -  ICS.UG 2015
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
 
Drei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert habenDrei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert haben
 
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold Kegebein
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold KegebeinFMK 2013 Design, Gestaltungsmittel in Layouts, Arnold Kegebein
FMK 2013 Design, Gestaltungsmittel in Layouts, Arnold Kegebein
 

Bottom-up anstatt Top-down: Wie man eine einheitliche Architektur bei vielfältigen Anwendungen lebt - Vortrag TeamConf 27.11.2013