02.09.2008, 00:00 Uhr
Das Unvorhersehbare vorhersehen
Was macht ein guter Softwarearchitekt, wenn eine Börsensoftware plötzlich auch Geodaten anzeigen soll? Er lächelt müde. Denn selbstverständlich hat er die Anwendung so aufgebaut, dass kaum Eingriffe in die vorhandene Anwendung nötig sind. Wie der Architekt das am besten macht, verrät Jeroen van den Bos auf der prio.conference 2008. Im Interview spricht er auch darüber, was eine Architektur über den Menschen verrät, der sie aufgesetzt hat.
Jeroen van den Bos ist Softwarearchitekt am Niederländischen Forensischen Institut, das Teil des holländischen Justizministeriums ist. Er entwirft, entwickelt und wartet Anwendungen, die von der Polizei und den Strafverfolgungsbehörden verwendet werden, wo Verlässlichkeit, Stabilität und Vorhersagbarkeit von höchster Wichtigkeit sind. Er diplomierte in Informatik und ist seit über zehn Jahren in den professionellen Softwareentwicklungsprozess eingebunden.
dotnetpro Jeroen, im letzten Interview mit Ralf Westphal haben wir gelernt, dass über Architektur bei jeder neu zu bauenden Applikation nachgedacht werden muss. Bist Du der gleichen Meinung?
Jeroen van den Bos Ja. Obwohl das nicht bedeutet, dass jede neue Anwendung auch eine neue Architektur bekommen muss. Die Wiederverwendung einer guten Architektur kann sehr nützlich sein – aber erst, nachdem man entschieden hat, dass die bestehende Architektur passend ist. Es kann sogar sein, dass Anwendungen wie E-Commerce-Websites, die aus einem funktionalen Blickwinkel dasselbe sind, schließlich mit einer komplett unterschiedlichen Architektur implementiert werden. Die Architektur wird extrem davon abhängig sein, ob man viele Waren hat, oder ob man erwartet, dass viele Kunden die Site gleichzeitig besuchen.
dotnetpro Du arbeitest für das Netherlands Forensic Institute. Erzählt die Architektur einer Anwendung denn etwas über den Architekten?
Jeroen van den Bos Meistens spiegelt die Architektur etwas von der früheren Erfahrung wider. Leute verwenden gerne Dinge, die sie kennen. Wenn du mit einem Entwickler gearbeitet hast, der immer Factory-Methoden mit privaten Konstruktoren verwendet hat (statt öffentlicher Konstruktoren), wirst du Vorteile dieses Ansatzes sehen und ihn verwenden – selbst dann, wenn es keine Vorteile gibt. Wenn du von erfolgreichen Projekten weißt, die die Technik verwenden, wirst du den Erfolg mit diesen Aspekten assoziieren und sie kopieren.Aber auch das Gegenteil gilt: Wenn du bei einem Projekt mitgearbeitet hast, das schief ging, werden einige der technischen Entscheidungen in dem Projekt mit dem Misserfolg verbunden werden und man wird sie in Zukunft vermeiden.
dotnetpro Eine gute Architektur muss aus einzelnen Bausteinen von Design Pattern zusammengesetzt sein. Stimmst Du diesem Satz zu?
Jeroen van den Bos Ein bisschen. Aber obwohl Design Pattern wunderbare Werkzeuge sind, muss man bei ihrem Einsatz doch sehr vorsichtig sein. Pattern vertauschen Einfachheit mit Flexibilität. Man sollte die Flexibilität nur benutzen, wenn sie auch wirklich gebraucht wird. Wenn man zum Beispiel Sortierung implementiert, sollte man nicht automatisch das Strategy Pattern verwenden, es sei denn, mehrere Implementationen werden vom Start weg benötigt. Wenn man nur einen Algorithmus hat, wie will man wissen, was die beste Schnittstelle ist? Wahrscheinlich muss man sie später ändern.
dotnetpro In einer Deiner Sessions auf der prio.conference 2008 (http://www.prioconference.de, 10. und 11. November 2008, Kurhaus Casino Baden-Baden) wirst Du über die Dokumentation der Anwendungsarchitektur sprechen. Ist das nicht eine Aufgabe, die bei den meisten Entwicklerteams hinten runterfallen wird?
Jeroen van den Bos Unglücklicherweise stimmt das. Aber ich mache ihnen keinen Vorwurf, denn die meiste Dokumentation ist unnötig. Aber bestimmte Unterlagen werden immer wieder gebraucht.
dotnetpro Warum sind gerade diese Dokumente wichtig?
Jeroen van den Bos Einige Entwickler behaupten, dass ihr Code die Dokumentation ist. Aber wenn ich die Implementation eines Pattern sehe, sagt sie nichts darüber aus, warum es gewählt wurde. Welche anderen wurden erwogen? Warum wurden sie verworfen? Oft versuchen Entwickler, die eine Anwendung warten müssen, diese in einer Art und Weise zu verbessern, die schon probiert wurde. Nachdem sie aber keine Dokumentation über die Entscheidungen haben, versuchen sie dasselbe immer wieder.
dotnetpro Worum geht es in Deiner anderen Session?
Jeroen van den Bos Es geht um sich entwickelnde Softwarearchitekturen. Der Talk soll Architekten helfen, ihre Architekturen zu modifizieren, wenn Veränderungen eingebaut werden müssen.
dotnetpro Kann man eine Architektur aufsetzen, die mit allen unvorhersehbaren Anforderungen zurechtkommt?
Jeroen van den Bos Ja, das muss sein. Die Änderungswünsche, die ein paar Jahre nach Fertigstellung des Systems auftreten, sind in der Regel anders als die, die das ursprüngliche Team angenommen hat.
dotnetpro Was wirst Du dafür in Deiner Session vorschlagen?
Jeroen van den Bos Auf der einen Seite werde ich dafür plädieren, das System so einfach wie möglich zu bauen. Andererseits will ich den Architekten Hinweise geben, wie sie die Architektur für den schlimmsten Fall vorbereiten können, ohne ihre aktuelle Architektur zu beeinflussen. [tib]