Interview mit Ralf Westphal
15.08.2008, 00:00 Uhr
Die individuelle Architektur finden
Architektur ist wesentlich mehr, als das Aufbauen von Anwendungsschichten. Denn die Anforderungen sind für jede Anwendung anders. Ralf Westphal als Content Manager der prio.conference 2008 erklärt im Interview, was die Teilnehmer auf der Konferenz lernen können.
dotnetpro: Architektur von Software ist doch ein alter Hut: Eine Anwendung besteht aus den drei Schichten Data Access Layer, Business Layer, UI Layer. Warum widmet sich die prio.conference (www.prioconference.de, 10. und 11. November 2008, Kurhaus Casino Baden-Baden, Thema: Softwarearchitektur) der dotnetpro diesem Thema?
Ralf Westphal: Weil Architektur eben kein alter Hut ist. Jedenfalls kein so alter Hut, dass wir ihn für abgetragen halten sollten. Die drei genannten Schichten strukturieren Software zwar grundsätzlich, das heißt sie sind ein jahrealtes Architekturmuster - Softwarearchitektur damit allerdings für erschöpfend behandelt zu denken, wäre ein Trugschluss. Die drei Schichten sind nur ein Muster von vielen, wenn auch ein oft anwendbares. Was aber, wenn diese drei Schichten nicht passen? Softwareentwicklung sollte nicht mit einem Muster in der Hand beginnen.
Die Frage sollte nicht lauten: "Wie bilde ich die Funktionalität meiner Software auf die drei Schichten ab?" Die funktionalen und nichtfunktionalen Anforderungen sind meistens so breit und die technologischen Möglichkeiten so vielfältig, dass Softwareentwicklung gut daran tut, nicht mit einer vorgefertigten Architekturschablone zu beginnen, sondern eine individuelle Architektur zu finden.
Das ist die kreative Leistung des Softwarearchitekten, mit der er die projekteigenen Kräfte ausgleicht. Stakeholder wie Kunde und Entwicklungsteam haben ja ganz unterschiedliche Ansprüche an eine Software. Und so ist immer wieder neu abzuwägen, ob die Struktur einer Anwendung eher auf Performance oder Flexibilität oder Skalierbarkeit oder Sicherheit usw. ausgerichtet sein sollte. Drei Schichten sind da als Patentlösung naiv.
Dazu kommt dann noch die Dynamik: Architektur lässt sich erstens nicht pauschal verschreiben und zweitens setzt sie sich schon gar nicht quasi wie von selbst um. Architektur muss wechselnden Anforderungen nachgeführt werden und Code muss dieser Architektur auch ständig folgen. Wenn Software nach einem motivierten Projektstart nicht auf die schiefe Bahn in Richtung Unwartbarkeit kommen soll, dann muss ständig Energie in sie hineinfließen, um sie strukturell (!) auf Kurs zu halten. Dass sie funktional auf Kurs bleibt, dafür sorgt schon der Kunde. Die Bedingung der Funktionalität ist jedoch eine angemessene Struktur - und genau die gilt es durch explizite Softwarearchitekturplanung zu finden und zu erhalten.
Dass das keine leichte Aufgabe ist, sollte inzwischen auf der Hand liegen. Wer nachhaltige (!) Lösungen will, der sollte nicht mit drei Schichten und Objektorientierung im Gepäck unter Hurra-Rufen einfach loslaufen. Die prio.conference zeigt deshalb, wie es anders gehen sollte.
Die Frage sollte nicht lauten: "Wie bilde ich die Funktionalität meiner Software auf die drei Schichten ab?" Die funktionalen und nichtfunktionalen Anforderungen sind meistens so breit und die technologischen Möglichkeiten so vielfältig, dass Softwareentwicklung gut daran tut, nicht mit einer vorgefertigten Architekturschablone zu beginnen, sondern eine individuelle Architektur zu finden.
Das ist die kreative Leistung des Softwarearchitekten, mit der er die projekteigenen Kräfte ausgleicht. Stakeholder wie Kunde und Entwicklungsteam haben ja ganz unterschiedliche Ansprüche an eine Software. Und so ist immer wieder neu abzuwägen, ob die Struktur einer Anwendung eher auf Performance oder Flexibilität oder Skalierbarkeit oder Sicherheit usw. ausgerichtet sein sollte. Drei Schichten sind da als Patentlösung naiv.
Dazu kommt dann noch die Dynamik: Architektur lässt sich erstens nicht pauschal verschreiben und zweitens setzt sie sich schon gar nicht quasi wie von selbst um. Architektur muss wechselnden Anforderungen nachgeführt werden und Code muss dieser Architektur auch ständig folgen. Wenn Software nach einem motivierten Projektstart nicht auf die schiefe Bahn in Richtung Unwartbarkeit kommen soll, dann muss ständig Energie in sie hineinfließen, um sie strukturell (!) auf Kurs zu halten. Dass sie funktional auf Kurs bleibt, dafür sorgt schon der Kunde. Die Bedingung der Funktionalität ist jedoch eine angemessene Struktur - und genau die gilt es durch explizite Softwarearchitekturplanung zu finden und zu erhalten.
Dass das keine leichte Aufgabe ist, sollte inzwischen auf der Hand liegen. Wer nachhaltige (!) Lösungen will, der sollte nicht mit drei Schichten und Objektorientierung im Gepäck unter Hurra-Rufen einfach loslaufen. Die prio.conference zeigt deshalb, wie es anders gehen sollte.
dotnetpro: Welche Aspekte werden denn auf der prio.conference behandelt?
Ralf Westphal: Ohne Frage: Softwarearchitektur ist ein weites Feld. Auch die prio kann deshalb nur einen Ausschnitt behandeln. Aber das ist wenigstens schon mal ein Anfang in einer Branche, die sich sonst vor allem um die neuesten Technologien kümmert. Insofern sehe ich den Zweck der prio.conference auch darin - nicht nur in diesem Jahr - einen Rahmen aufzuspannen; einen Rahmen, in dem Technologien, deren Bedienung allerorten erklärt wird, wo es also um das Wie geht, wo diese Technologien einen Ort finden, an dem es um das Warum geht. Architekturrelevante Technologien à la WCF oder WPF oder Jabber kommen also natürlich auch auf der prio.conference vor.
Die prio.conference bettet sie jedoch in ein großes Bild aus Architekturkonzepten ein. Es geht um Strukturierungsmöglichkeiten von Software - Stichworte Aspektorientierung, Komponentenorientierung oder Domain Driven Design. Es geht um Strukturqualität - Stichworte Metriken, Abhängigkeiten, Kopplung oder Analysewerkzeuge. Es geht um die Formulierung und Dokumentation von Architektur - Stichworte Domain Specific Languages, Design by Contract oder Softwarezellen. Es geht um die "Verschaltung" von Architekturelementen, das heißt auch wieder ein eher technisches Thema - Stichworte Event Driven Architecture, Peer-to-Peer oder Präsenzprotokoll.
Und schließlich möchte die prio etwas für die Orientierung tun. Das Hype-Thema SOA kann deshalb nicht ganz fehlen; aber statt Lobeshymnen bietet die Konferenz kritische Einordnung und Diskussion. Gleichfalls der Orientierung dient aber auch die Auseinandersetzung mit der Rolle des Architekten. Sie ist recht jung und noch im Fluss. Wo verlaufen ihre Grenzen? Wer sind ihre Mitspieler? Ich denke, mit all diesen Themen haben wir einen recht guten Querschnitt durch das weite Feld Softwarearchitektur gefunden. Da ist für jeden eine Menge dabei.
Die prio.conference bettet sie jedoch in ein großes Bild aus Architekturkonzepten ein. Es geht um Strukturierungsmöglichkeiten von Software - Stichworte Aspektorientierung, Komponentenorientierung oder Domain Driven Design. Es geht um Strukturqualität - Stichworte Metriken, Abhängigkeiten, Kopplung oder Analysewerkzeuge. Es geht um die Formulierung und Dokumentation von Architektur - Stichworte Domain Specific Languages, Design by Contract oder Softwarezellen. Es geht um die "Verschaltung" von Architekturelementen, das heißt auch wieder ein eher technisches Thema - Stichworte Event Driven Architecture, Peer-to-Peer oder Präsenzprotokoll.
Und schließlich möchte die prio etwas für die Orientierung tun. Das Hype-Thema SOA kann deshalb nicht ganz fehlen; aber statt Lobeshymnen bietet die Konferenz kritische Einordnung und Diskussion. Gleichfalls der Orientierung dient aber auch die Auseinandersetzung mit der Rolle des Architekten. Sie ist recht jung und noch im Fluss. Wo verlaufen ihre Grenzen? Wer sind ihre Mitspieler? Ich denke, mit all diesen Themen haben wir einen recht guten Querschnitt durch das weite Feld Softwarearchitektur gefunden. Da ist für jeden eine Menge dabei.
dotnetpro: Microkernel ist ja in aller Munde. Erfahren die Teilnehmer auf der Konferenz auch darüber etwas?
Ralf Westphal: Ja, auch das Microkernel-Konzept ist bei der prio.conference mit von der Partie. Allerdings gibt es keinen Vortrag, in dessen Titel es auftaucht. Die prio.conference beleuchtet vielmehr aus unterschiedlichen Richtungen das hinter dem Microkernel stehende allgemeine Thema Abhängigkeiten. Die gilt es nämlich nicht nur herzustellen - das tut ein Microkernel oder Dependency Injection Framework zur Laufzeit. Die gilt es zunächst einmal überhaupt zu planen und die wollen überwacht beziehungsweise analysiert werden. Dazu braucht es Konzepte, Prinzipien, Werkzeuge. Natürlich informiert die prio.conference zu allen dreien.
dotnetpro: Dein Vortrag, den du auf der prio.conference 2008 hältst, heißt "The Architect's Napkin". Was ist denn darunter zu verstehen? Wäscht sich der Architekt nach getaner Arbeit seine Hände in Unschuld und trocknet sich mit der Serviette ab?
Ralf Westphal: Persilscheine waren vorgestern, heute reichen Servietten. Aber Spaß beiseite: Nein, an den Servietten soll niemand sich die Finger abtrocknen. Im Gegenteil! Es geht um eine Zweckentfremdung von Servietten. Ich stelle sie im Vortrag nämlich als Mittel dar, um sich die Finger durch harte Arbeit schmutzig zu machen. Durch harte Entwurfsarbeit mit dem Filzstift. Das Credo des Vortrags ist: Vergesst mal für einen Moment all die tollen Entwurfswerkzeuge wie UML Designer oder Visual Studio Team System for Architects. Denn solche Boliden verstellen oftmals den Blick fürs Wesentliche. Nur weil es damit so einfach ist, hübsche Icons mit geraden Linien zu verbinden, kommen am Ende nämlich nicht genauso einfach auch angemessene Architekturen heraus.
Stattdessen plädiere ich für die Reduktion auf Kopf, Hand, Stift und Serviette beim (initialen) Softwareentwurf. Das, was sich lesbar auf einem Serviettenquadrat von 16x16cm darstellen lässt, ist gerade soviel, wie man beim Entwerfen ohne Mühe im Kopf behalten und beim Betrachten verstehen kann. Es geht mir um eine natürliche Reduktion der mentalen Last durch Beschränkung der Form. Allerdings werde ich im Vortrag virtuelle Servietten benutzen, da die sich besser projizieren lassen. Stift und Freihandzeichnung allerdings bleiben.
Damit fülle ich dann die Servietten schrittweise von einer Grobarchitektur bis zu einer klaren Codeorganisation, die man implementieren kann. Zur Serviettenform gehört also auch ein Inhalt, ein Architekturkonzept. Wer sich davon schon mal einen Eindruck verschaffen möchte, kann das in meinem Blog mit gleichem Namen: http://geekswithblogs.net/theArchitectsNapkin.
Stattdessen plädiere ich für die Reduktion auf Kopf, Hand, Stift und Serviette beim (initialen) Softwareentwurf. Das, was sich lesbar auf einem Serviettenquadrat von 16x16cm darstellen lässt, ist gerade soviel, wie man beim Entwerfen ohne Mühe im Kopf behalten und beim Betrachten verstehen kann. Es geht mir um eine natürliche Reduktion der mentalen Last durch Beschränkung der Form. Allerdings werde ich im Vortrag virtuelle Servietten benutzen, da die sich besser projizieren lassen. Stift und Freihandzeichnung allerdings bleiben.
Damit fülle ich dann die Servietten schrittweise von einer Grobarchitektur bis zu einer klaren Codeorganisation, die man implementieren kann. Zur Serviettenform gehört also auch ein Inhalt, ein Architekturkonzept. Wer sich davon schon mal einen Eindruck verschaffen möchte, kann das in meinem Blog mit gleichem Namen: http://geekswithblogs.net/theArchitectsNapkin.
dotnetpro: Singularity oder Midori heißen Projekte bei Microsoft, die sich mit neuen Betriebssystemen auseinandersetzen. Die Architektur des neuen Managed Operating Systems ist doch sicher auch ein Thema auf der prio.conference.
Ralf Westphal: Nein. Solche Zukunftsvisionen sind kein Thema auf der prio.conference. Nicht, dass da kein Bezug zum Thema Softwarearchitektur wäre. Aber beide Projekte sind noch so realitätsfern und damit wenig relevant, dass sie keinen Platz auf der prio bekommen haben. Auf wenn Softwareentwickler technischen "Spielkram" mögen, so sind sie doch zu Recht vor allem daran interessiert, brauchbare Informationen für ihre Arbeit hier und heute zu bekommen. Die liefert die prio.conference mit "down to earth" Vorträgen, die Anleitung und Orientierung für die nächsten Monate und Jahre bieten. Da geht es dann zwar auch um Wolken, the Cloud, aber nicht um das, was dahinter in den Sternen steht. Die Idee eines Managed Code Betriebssystems ist bestechend. Es wäre schön, wenn die dotnetpro darüber berichtete [tut sie: Siehe … Anmerkung der Redaktion]. Doch eine Welt, die sich von Windows XP nicht recht trennen will, weil sie an Vista nicht viel Gutes erkennen kann, deren höchster Wert also Kompatibilität zu sein scheint, solche eine Welt will die prio nicht mit der Möglichkeit eines maximal inkompatiblen Betriebssystems verwirren. Es gibt genügend andere, viel relevantere Themen.
dotnetpro: Multicore, Multithreading und verteilte Anwendungen sind sicher Begriffe, die momentan sehr wichtig sind und unmittelbar mit Softwarearchitektur zu tun haben. Was erfahren die Teilnehmer darüber?
Ralf Westphal: Verteilung ist das prototypische Softwarearchitekturthema. Die prio.conference betrachtet es deshalb aus mehreren Blickwinkeln: WCF und Jabber sind Technologien zur Kommunikation in verteilten Anwendungen. SOA, P2P, EDA sind Konzepte für verteilte Anwendungen. Der Parallelprogrammierung widmet sich insbesondere der Vortrag über Microsofts Concurrency Coordination Runtime (CCR), einer vielversprechenden Abstraktion von Threads und Nachrichten zu ihrer Koordination. Bisher fristet die CCR eher ein Nischendasein im Robotic Studio von Microsoft. Aus dieser Ecke möchte die prio.conference sie herausholen, denn die CCR hat das Zeug zu einer Massentechnologie, um die Skalierbarkeit und Performance von Anwendungen zu steigern. Mit ihr könnte Parallelität so einfach werden, dass sie Einzug in quasi jede Desktop-Anwendung hält. In meinem Servietten-Vortrag hat deshalb Asynchronizität einen zentralen Platz - und wird wohl für einige Diskussion sorgen.