Interview mit Simon Brown 05.04.2017, 08:07 Uhr

Software-Architekten

Der Autor von »Software Architecture for Developers« plädiert für die Etablierung von Software-Architekten.
web & mobild DEVELOPER: Sie plädieren für die Etablierung von Software-Architekten. Wie kann die Arbeit zwischen Software-Architekt und Software-Entwickler aufgeteilt werden? 
Simon Brown: Software-Architektur ist für mich so etwas wie eine Rolle innerhalb eines Softwareentwickler-Teams. Diese Rolle kann von einem oder von vielen Menschen gespielt werden. Reife und Erfahrung des Teams bestimmen dabei, wie der Bereich Software-Architektur im Team implementiert wird. In einem unerfahrenen Team zum Beispiel funktioniert es oft am besten, wenn eine einzelne Person die Rolle des Software-Architekten übernimmt. Bei erfahrenen Teams können sich auch mehrere Personen diese Rolle teilen. Im Wesentlichen geht es bei der Software-Architektur um eine kontinuierliche technische Führung in verschiedenen Bereichen. Und natürlich können Software-Architekten Code schreiben.
web & mobild DEVELOPER: Warum ist die Visualisierung von Software-Architektur so wichtig? Warum reicht es nicht aus, Software auf der Grundlage einer genauen Beschreibung zu planen und zu implementieren? 
Simon Brown: Die Software-Entwicklungsbranche hat eine Reihe von Ansätzen für die detaillierte Planung und Modellierung vor dem Schreiben von Code versucht, was zu Wasserfall-Liefermethoden führte, wo jedes einzelne Detail gleich zu Beginn entschieden wurde. Wie wir gelernt haben, erlaubt dieser große Design-up-Front-Ansatz keine Rückkopplungsschleifen und ist resistent gegen Veränderung. Leider sind deswegen jetzt viele Teams auf das genau entgegengesetzte Extrem umgesprungen und machen nur noch sehr wenig Up-Front-Design. Meiner Ansicht nach ist aber ein Mindestmaß an Up-Front-Design wichtig, um die wesentlichen architektonischen Entscheidungen verstehen und treffen zu können. Nur so kann die Struktur der zu bauenden Software erstellt und erkannt werden, was die großen Bausteine sind wie sie miteinander in Beziehung stehen. Wer in der Lage ist, eine  Software-Architektur effektiv und effizient zu visualisieren, kann diese Informationen mit dem Rest des Entwicklungsteams teilen und sicherstellen, dass jeder eine gemeinsame, konsistente Vision von dem, was gebaut werden muss, verfolgt.
web & mobild DEVELOPER: Welche Methoden zur Visualisierung von Software-Architektur empfehlen Sie? 
Simon Brown: Es gibt eine Reihe von Notationen und Methoden zur Visualisierung von Software-Architektur, zum Beispiel UML, SysML, ArchiMate, das 4+1-View-Modell, IEEE 1471 und andere. Basierend auf meiner Erfahrung mit Tausenden von Software-Entwicklern auf der ganzen Welt, scheinen nur sehr wenige dieser Ansätze verwendet zu werden. Meist liegt es daran, dass die Notationen als zu komplex angesehen werden oder weil die daraus resultierenden Diagramme nicht notwendigerweise ein genaues Abbild des Codes darstellen. Stattdessen sehe ich Teams, die Sammlungen von Ad-hoc-Diagrammen erstellen, die ohne Erklärung niemand versteht. Auch solche Diagramme spiegeln typischerweise nicht den Code wider.
Simon Brown auf der Developer Week 2017
Simon Brown ist unabhängiger Consultant, der sich auf Softwarearchitektur spezialisiert hat. Er ist der Autor von Software Architecture for Developers. Außerdem ist er der Erfinder des C4-Softwarearchitektur-Modells und der Gründer von Structurizr, das eine Sammlung von kommerziellen- und Open-Source-Tools ist, die Softwareteams dabei helfen, Softwarearchitektur zu visualisieren, zu dokumentieren und erfahrbar zu machen. Simon hält eine der drei Keynotes auf der Developer Week 2017 (developer-week.de), die vom 26. bis 29. Juni 2017 in Nürnberg stattfindet.
Ich visualisiere Software-Architektur mit meinem sogenannten C4-Modell. Es ermöglicht mir die statische Struktur eines Software-Systems über eine Reihe von abstrakten Ebenen hinweg zu verstehen. Es geht darum, eine gemeinsame Sprache zu erschaffen, die jeder im Team nutzen kann, um Software-Architektur zu beschreiben und über sie nachzudenken – eine Art OO-Programmiersprache also. Ein Software-System besteht aus einem oder mehreren Containern (Web-Applikationen, mobile Apps, Standalone-Applikationen, Datenbanken, Dateisysteme etc.), der jeweils wieder eine oder mehrere Komponenten enthält, die wiederum von einer oder mehreren Klassen implementiert werden. Diese Hierarchie von strukturellen Bausteinen kann verwendet werden, um ein Softwaresystem zu beschreiben, wobei Diagramme auf jeder Ebene verwendet werden um diese Beschreibung zu visualisieren. Es ist eine statische Struktur und ein abstraktionsorientierter Ansatz, mit der Idee, dass Teams eigene selbsterklärende Diagramme erstellen.
web & mobild DEVELOPER: Können Sie in ein paar Worten die Vorteile des von Ihnen entwickelten Visualisierungstools Structurizr erklären? 
Simon Brown: Nach meiner Erfahrung erstellen die meisten Teams Software-Architektur-Diagramme mit Tools wie Microsoft Visio oder Gliffy. Dieser Ansatz kann sicherlich funktionieren, aber der Output ist eine Sammlung von statischen, getrennten Diagrammen. Wenn man zum Beispiel ein Element in einem Diagramm umbenennt, muss das gleiche Element in allen anderen Diagrammen manuell auch umbenannt werden – wenn das Diagramme konsistent bleiben soll. Es gibt eine Reihe von Modellierungstools, die helfen, dieses Problem zu lösen, beispielsweise Sparx Enterprise Architect und IBM Rational Software Architect. Die Voraussetzung ist überall, dass man ein Modell des Software-Systems und mehrere Ansichten (Diagramme) davon erstellt. Diese Tools scheinen aber immer seltener genutzt zu werden.




Das könnte Sie auch interessieren