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