"Wir müssen uns auf Einfachheit und Eleganz zurückbesinnen"

Java Champion Martin Thompson ist seit über zwei Jahrzehnten wohlbekannt für seine Erfahrung im Aufbau von komplexen und hoch performanten Systemen. In seiner Keynote auf der anstehenden JavaLand 2017 erkundet er einen anderen Entwicklungsansatz, indem er auf den Design-Zwang hört. In diesem Interview mit DOAG Online erklärt Thompson den Druck des Designs und wie sich auf diese Weise die Software-Architektur weiterentwickeln kann.

Martin, wie sieht die Zukunft von Software-Architektur in 20 Jahren und darüber hinaus aus?
Ich denke, dass Qualitätseigenschaften mit unserer zunehmenden Verbindung mit dem Internet eine wesentlich zentralere Rolle spielen werden. Wir müssen uns viel mehr Gedanken über Sicherheit machen. Sicherheit muss ein Grundanliegen werden. Wir müssen effizienter werden. Unsere Prozessoren werden nicht mehr bedeutend schneller. Wir müssen also die vorhandenen Prozessoren wesentlich effizienter nutzen. Wir müssen lernen, effizienter zu programmieren und nicht so verschwenderisch zu sein. Es gibt noch etliche andere Anliegen in Bezug auf gute technische Bearbeitung: Wir müssen uns auf Einfachheit und Eleganz zurück besinnen. Wir müssen das Richtige tun, anstatt wie derzeit barocke Software-Monstrosität zu kreieren.

Du hältst auf der JavaLand 2017 eine Rede über Projekte, in denen sich das Team unter einem enormen Design-Zwang befindet. Was genau verbirgt sich dahinter?
Wenn die wichtigsten Anforderungen aus dem Bereich Servicequalität kommen, ergibt sich daraus ein bestimmter Zwang auf das Design. Dies kann beispielsweise Performance, Sicherheit oder Ausfallsicherheit sein. Viele Leute nennen diese Anforderungen "nichtfunktional", aber ich mag dieses Wort nicht. Wenn diese Servicequalitätsanforderungen am wichtigsten sind, dann lassen sie einen auf eine Weise arbeiten, dass man nicht mehr den Trends folgen kann.Design-Muster, beziehungsweise Design-Entscheidungen, werden angewandt, die sich von dem unterscheiden, was üblicherweise verwendet wird. Wir können dennoch voranschreiten, wenn wir die Design-Muster anwenden, die von den Anforderungen aus dem Bereich Servicequalität diktiert werde.

Worum geht es hierbei genau?
Es geht darum, sich darüber im Klaren zu sein, was wichtig ist. Wir leben in einer Welt, in der Menschen Trends folgen und dann Design-Entscheidungen für eine Architektur treffen, obwohl sie die Anforderungen gar nicht verstehen. Es ist nicht wie in anderen technischen Fachrichtungen. Andere technische Fachrichtungen werden durch die Anforderungen getrieben und nicht so sehr durch Trends. Im Bereich der Software-Technik sind wir als Industrie recht unreif und lernen das Ganze nach und nach.

Gibt es einen Nutzen für die Software-Architektur?
Ja, auf jeden Fall! Wenn man am extremen Ende der Performance arbeitet, denken die meisten Leute: Oh, ich muss viele Threads benutzen und Sachen müssen parallel laufen, damit die Performance gesteigert wird. Wenn man dann allerdings misst, merkt man oft, dass die Dinge dadurch nicht schneller laufen und in vielen Fällen sogar langsamer werden. Das liegt daran, dass man bei Zugriffskonflikten landet und dann beim universellen Gesetz der Skalierbarkeit. Die Mathematik dahinter fängt an, alles zu bestimmen. Manchmal ist es wesentlich besser mit einem einzelnen Thread zu arbeiten. Dann läuft das System viel schneller und das ist entgegen der Logik der meisten Leute.

Würdest du sagen, dass Design-Zwang eine Art Methode oder Strategie für das Projektmanagement in der Software-Architektur ist?
Es ist nicht wirklich eine Projektmanagement-Strategie. Es ist eher die Art, wie wir Design angehen. Es geht darum, das Design mit einer offenen und neugierigen Art anzugehen, sich von den Anforderungen und den Daten zu den Design-Entscheidungen leiten zu lassen und dabei die Grundlagen auszuüben. Anstatt also das neueste Produkt zu kaufen oder das neueste coole Open-Source-Projekt aufzunehmen, sollte man einfach auf die Anforderungen schauen. Werden durch diese Anforderungen Koppelungen notwendig? Oder ist eher eine Entkoppelung erforderlich? Wo wenden wir Kohäsion an? Wo wenden wir das Prinzip „Trennung von Belangen“ an? Ich schlage vor, dass wir den Zwang des Designs annehmen. Wir müssen auf diesen Zwang hören. Wir müssen das mehr tun, als wir es derzeit tun.

Was kann das Publikum von Deinem Vortrag lernen?
Ich möchte veranschaulichen, dass man bei strengen Anforderungen nicht den Trends folgen kann. Man muss sich auf die Grundlagen zurück besinnen, mit guter technischer und wissenschaftlicher Arbeit. Wenn man diesen Pfad geht, kommt oftmals ein Design heraus, das von dem abweicht, was die Leute üblicherweise erwarten. Auf diese Reise möchte ich die Leute mitnehmen, damit sie selbst sehen und verstehen, dass wir öfter zu den Grundlagen zurückkehren sollten. Du stellst keine Vermutungen an, welches Design du anwenden wirst. Du lässt deine Design-Muster von den Anforderungen treiben und lässt dich von Messungen führen.

Du bist das erste Mal auf der JavaLand. Was erwartest du von der Konferenz?
Ich hoffe, dass ich einige gute Gespräche mit den Leuten führen kann. Es ist immer gut sich mit Leuten zu unterhalten, damit man lernen und Wissen teilen kann. Hoffentlich werde ich davon genauso profitieren, wie alle anderen. Und hoffentlich wird mein Vortrag die Leute zu Diskussionen anregen.

14.02.2017 Java, Development
Von: Sebastian Höing