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

32
Bottom-up anstatt Top-down Wie man eine einheitliche Architektur bei vielfältigen Anwendungen lebt Markus Rehrs @spontifixus Dr. Stephan Volmer @stvzeg

Transcript of Bottom-up anstatt Top-down: Wie man eine einheitliche Architektur bei vielfältigen Anwendungen lebt...

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

Bottom-up anstattTop-down

Wie man eine einheitliche Architektur bei vielfältigen

Anwendungen lebt

Markus Rehrs@spontifixus

Dr. Stephan Volmer@stvzeg

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

Eigentlich nichts NeuesAufgabe

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

• Datengetriebene 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

• Entwickler erfinden das Rad immer wieder aufs Neue

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

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

Die vermeintliche LogikReuse

Don't forget to recycle! by James Wanghttp://www.flickr.com/photos/10037058@N08/3696670712/

“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!”

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

Reuse Die Realität sieht anders aus…

“There is the time it takes to specify what the software should do.”

Abandoned Boat by William Warbyhttp://www.flickr.com/photos/wwarby/4859138371/

“There is the time it takes to write the code.”

“Multiply that by the time it takes to understand what the software should do.”

“Multiply that by the time it takes to integrate with all other code, libraries, components, frameworks, databases, services, …”

Testing! Debugging! Deploying!Stabilizing!

Meetings!Workshops!

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

1970

1980

19902000

2010

Software Crisis

3GL

OOP

Libraries

OSS

Components

SOA

FrameworksPatterns

Reuse Aus der Krise in den Aufschwung?

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

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

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!”

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

Reuse Kosten und Nutzen

Please pay this amount by miguelbhttp://www.flickr.com/photos/mig/8689212/

Kann Ihr Unternehmen sichwiederverwendbaren 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.

Reuse Myth - Can You Afford Reusable Code?Allen Kelly

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

!

?

Rear view mirror by a.dombrowskihttp://www.flickr.com/photos/adombrowski/5285377223/

Reuse „Was tun?“ spricht Zeus

Should we not reuse?

• There are genuine situations were reuse is the right answer.

Look back, not forward!

• Don’t plan for reuse, but look for opportunities!

• Bottom-up instead of top-down!

• Simplicity before generality!

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

Reuse Schwarz oder Weiß?

chess set by Ekkehard Streithttp://www.flickr.com/photos/ekkionline/8846737835/

Jedes Projekt wähltArchitektur und

Technologie unabhängigvon der umgebenden IT-

Landschaft.

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

Reuse Schwarz oder Weiß?

Ein Framework-Projektverschlingt viele

Ressourcen ohnen einendirekten Mehrwert zu

liefern.

chess set by Ekkehard Streithttp://www.flickr.com/photos/ekkionline/8846737835/

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

Eine pragmatische Herangehensweise

KISS

DRY

APET

MAYA

Bottom-Up

GALAP

Wilhelmine Wulff / pixelio.de

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

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

Artefacts Libraries und Templates

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

� API-Dokumentation� Nachschlagewerk

Doku

TFS

Blog

Wiki

� Backlog� Defects

� Release-Notes� Meeting-Protokolle

� Best-Practices� Anleitungen

Artefacts Dokumentation

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

Beispielapplikation

ProduktiveApplikationen

Code Snippets

Artefacts Beispiele und Best Practices

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

Process Ein Freies Elektron

Senior Developer

Team 1

Team 2

Team 3

Team 4

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

Process Entwicklung mit Rückenwind

Blueprint

Projekt 1

Projekt 2

Projekt 3

Projekt 4 Blueprint

Projekt 1

Projekt 2

Projekt 3

Projekt 4

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

Process Gemeinsam Stark

miniprojekt

SpaßprojektGROSSPROJEKT

P

PROJEKT Ykleinprojekt

RegelmäßigeMeetings

LebhafteKommunikation

GegenseitigeReviews

miniprojekt

SpaßprojektGROSSPROJEKT

P

PROJEKT Ykleinprojekt

RegelmäßigeMeetings

LebhafteKommunikation

GegenseitigeReviews

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

Process Semantische Versionierung

Major

• Breaking Changes

• WesentlicheVeränderungen

• Alte Versionenwerden weiterunterstützt

Minor

• Keine Breaking Changes

• Neue Features

Revision

• Keine Breaking Changes

• Bugfixes und kleinereFeatures

� �

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

Empowering Schulungen

Einstieg

Einführung

Beispiele

Praxis

Fragerunde

Begeisterung

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

Empowering Learning by Doing

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

Tools

Entwicklungsumgebung und Versionsverwaltung

Lokales NuGet-Repository

IDE Extensions von Drittanbietern und Eigenentwicklungen

Tools zur statischen Codeanalyse

Entwicklungsumgebung

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

Tools Weitere Resourcen

EffizienteInfrastruktur

IdentischeArbeitsplätze

Starter-Kit

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

Ein Basis-Check vor dem Start

Wille

ZeitGeld

Eignung geprüft

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

Ich hab das schon immerso gemacht!

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

Wo ein Wille ist... ...ist auch ein Unwilliger

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

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

Wo ein Wille ist...

Ihr hat michüberzeugt! Da bin ich dabei!

...ist auch ein Weg

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

ProjekteMenschenBlueprint

Projekte

Schlüsselfaktor Zusammenarbeit

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

“I readily absorb ideas from every source,

frequently starting where the last person left off.”

Library of Congress, Digital ID: cph.3c05139

Thomas Alva Edison

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

Das Vorgehen Am Anfang steht ein Inkubatorprojekt

Inkubator

Projekt B

Blueprint

Inkubator

Projekt B

Blueprint

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

Das Vorgehen Generalize as Late as Possible

Projekt B

Inkubator

Projekt B

Blueprint

Projekt Inkubator.Next

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

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 Tellerrandzu schauen!

• Investiere in Ausbildung, nicht in Code:Das Know-How der Mitarbeiter ist bares Geld wert!

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

Langer Atem zahlt sich ausConclusions

Achtung:Erfolg nicht ausgeschlossen!

• Ein Framework ist nicht kostenlos:Ohne kontinuierliches Budget für das “freieElektron” läuft das Framework Gefahr ins Koma zufallen.

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

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

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

Markus [email protected]/mrehrstwitter @spontifixus

Dr. Stephan [email protected]/stvtwitter @stvzeg