Walk Like An A

Werbung
Walk Like
An
Architect
Was macht eigentlich der
Architekt?
So nicht
Elfenbein Stil
Denk dir ein theoretisches Problem aus
Denk dir eine theoretische Lösung aus
Dokumentiere sie in einem Tool, das niemand
außer dir benutzen kann
Warte auf ein Wunder
Überraschung! Funktioniert nicht!
Diktator
Sieht alles.
Kontrolliert alles.
Überraschung! Funktioniert nicht!
Super Developer
Kann alles
Macht alles
Überraschung! Funktioniert nicht!
Außer in 1-Mannprojekten
Ein Architekt ist
ein Dienstleister/Diener der Stakeholder UND
des Entwicklungsteams
Für Stakeholder
Anforderungen werden ignoriert,
bis es zu spät ist
Performance
Skalierbarkeit
Wartbarkeit
Weiterentwickelbarkeit
Installierbarkeit
...
Anforderungen?
Welche
Anforderungen
Nicht Funktionale Anforderungen haben
Eigenschaften von Basis Anforderungen und
Leistungsanforderungen nach Kano
Sie werden
vorrausgesetzt, nicht
genannt
Mehr ist besser
Leider verursachen
Sie auch
Zielkonflikte
Einfach Fragen hilft daher nicht:
Soll es schnell sein? Ja
Soll es wartbar sein? Ja
Soll es skalierbar sein? Ja
Soll es billig sein?
...
Das alles und noch viel
mehr ...
Rio Reiser "König von Deutschland"
Szenario basierte
Arbeit
Wir können die
Anwendung doppelt
so schnell machen
Aber wir brauchen mehr Geld (50%) für
Training für die Entwickler, doppelt so viele
Server, und 0.1% der Transaktionen könnten
nicht verarbeitet werden und müssen durch den
Anwender erneut durchgeführt werden.
Wir könnnen die
Anwendung auf zwei
Weisen bauen
So dass
einfache CRUD Masken von einem
Junior Entwickler nach
1 Wöchiger Einarbeitung
in 4h implementiert werden kann.
Extravagante Features (farbcodierte
Dropdownbox) aber nur von einem
Experten mit
>6Monate Erfahrung mit der Applikation.
Oder so dass eine
einfache CRUD Maske einen
normalen Entwickler nach
1 Monatigen Einarbeitung für
2 Tage beschäftigt, das
extravagante Feature von dem
gleichen Entwickler
ebenso lange dauert.
Schnittstelle X
antwortet nicht mehr
auf Anfragen
Unsere Anwendung ist nicht mehr verfügbar
Kann weiter benutzt werden, so lange
Schnittstelle nicht zwingend benötigt
Die Schnittstellenanfragen werden zwischen
gespeichert und ausgeführt, wenn die
Schnittstelle wieder verfügbar ist.
Sammeln von
Anforderungen
Architektur Workshop
Alle Stakeholder involvieren ...
Admins / Operating
Unterschiedliche User
Entwickler
Priorisieren
Wofür soll wieviel Geld ausgegeben werden
Architekturziele versteigern
Umsetzen
Probleme identifizieren
Alternativen sammeln
bewerten
implementieren (s.u.)
Man muss mit vielen
Leuten intensiv reden
und arbeiten
Es gibt Konflikte mit
denen man umgehen
muss
Aufgabe des
Projektleiters?
Theoretisch vielleicht
Hab ich noch nicht erlebt
Stakeholder lieben
Feedback
Was ist and Architekturarbeit passiert?
Warum macht es das System besser?
Welche Ziele werden erreicht?
Sind es noch die richtigen Ziele?
Für Entwickler
Nicht gegen sie
"When you need me but do
not want me, then I must
stay. When you want me but
no longer need me, then I
have to go. It's rather sad,
really, but there it is."
Nanny McPhee
(http://www.imdb.com/title/tt0396752/quotes)
Zuhören
Wo treten Schwierigkeiten auf?
Welche Lösungsansätze gibt es
Welches Know How ist vorhanden
Involvieren
Architekturentscheidungen gemeinsam
treffen
Feedback einholen
Architekturbewertungen gemeinsam
durchführen
Helfen
Beispiel Code schlägt UML
Feedback einholen
Pair Programming schlägt Show
Programming
Dokumentation
Verlinkung zwischen Code & Doku
Kontrolle als Hilfe
Kontrolle als Feedback
Code Reviews (wechselseitig)
Tests
"Ich habe eine ganz
hervorragende Architektur
gemacht, aber das
Entwicklungsteam hat es
total versaut."
Architekt im Internet
Der Architekt hat
wesentliche
Randbedingungen
ignoriert!
Man muss mit vielen
Leuten intensiv reden
und arbeiten
Es gibt Konflikte mit
denen man umgehen
muss
Architektur ist die
Summe der
Architekturentscheidungen
Wir benutzen
Hibernate!
Das sieht man auch im Code
Für welches Problem ist dies die Lösung?
Was waren die Alternativen
Wie machen wir die
Datenbankanbindung?
Randbedingungen und
Ziele
Code Duplikation in SQL vermeiden
Performant
Flexibel bei speziellen Anforderungen
Produktiv gegen DB2, lokal gegen H2
Randbedingungen und
Ziele
Machen Alternativen identifizierbar
Machen Alternativen bewertbar
Definieren, wann eine Entscheidung überdacht
werden muss
Alternativen
Repositories mit Spring JDBC Template
implementieren
JPA/Hibernate
Nicht Relationale Datenbank
Alternativen +
Bewertung
Beantwortet "Warum nutzt Ihr nicht XY"
Grenzt abgelehnte Alternativen von nicht
betrachteten ab
Wir brauchen breites
Technisches Know
How
Man kann nicht alles
wissen
Aber vieles kennen
Und bewerten können
Ehrlichkeit
Lernen
Bücher
Blogs
Stackoverflow (nicht nach der ersten
Antwort aufhören)
Videos
Konferenzen
Jens Schauder
T-Systems on site services GmbH
http://blog.schauderhaft.de
[email protected]
@jensschauder
Herunterladen