Zum Inhalt springen
iSAQB-blog-article-Profession-Starke-WP-v1

Das Berufsbild „Software­architektur“

Ein Artikel von Dr. Gernot Starke

Vorsicht: Artikel enthält Meinungen. Dem Autor macht Software­architektur auch nach über 20 Jahren Berufs­er­fahrung immer noch Spaß.

Bevor wir die „Rolle“ von Softwarearchitekt:innen in IT-Projekten klären können, müssen wir den Begriff „Software­architektur“ verstehen: Das Wort „Archi­tektur“ haben wir aus dem Bauwesen entlehnt und es lohnt sich, Analogien aus diesem Gebiet zu betrachten:

  • Bestimmung der wesent­lichen Anfor­de­rungen, etwa mit den zukünf­tigen Bewohner:innen, Auftrag­gebern und Behörden
  • Grundriss: welche Räume gibt es und wie hängen sie struk­turell zusammen
  • Bauma­terial: aus welchen Materialien werden welche Elemente des Gebäudes geschaffen?
  • Entwurf der äußeren Form, Fassade, Ästhetik, städte­bau­liche Vorgaben
  • Anbindung an benach­barte Infrastruktur, Straßen, Wasser, Strom, Internet
  • Berück­sich­tigung von Anfor­de­rungen an Statik, Boden­be­schaf­fenheit, Brand­schutz o.ä.
  • Begleitung des Baus: Klärung offener Fragen im Prozess

In [1] finden Sie noch viel mehr Details zu diesen Grundlagen.

 

Figure 1 floorplan

Abbildung 1: Beispiel Grundriss

 

„Software­architektur“ – Was bedeutet das?

Wie bei Gebäuden auch, müssen wir verstehen: Was sind die genauen Anfor­de­rungen an die Funktionen des Systems, dessen Quali­täten (z.B. Durchsatz, Verfüg­barkeit, Perfor­mance, Sicherheit) und an das gewünschte Verhalten im produk­tiven Betrieb. Können und dürfen wir das System im Betrieb updaten?

Mit dem Grundriss entscheiden wir über den struk­tu­rellen Aufbau von Systemen aus Kompo­nenten, wie Packages, Namespaces, Module und Services mitsamt den jewei­ligen Schnitt­stellen. Das sind die typischen „Kästchen-und-Pfeile“-Diagramme, denen noch wichtige Infor­ma­tionen über unser „Bauma­terial“ fehlen: Program­mier­sprachen, Biblio­theken und alles, was lapidar „Tech-Stack“ genannt wird.

Die Anbindung an Nachbar­systeme – externe Schnitt­stellen genannt (Kontext­ab­grenzung) – hat ebenfalls große Bedeutung. Häufig lauern genau darin große Risiken, die erst im Produk­tiv­be­trieb zu Problemen auswachsen. [2]

Mit diesen Grund­lagen können wir nun die Rolle und das Berufsbild besser einordnen.

 

Was muss ich tun?

Berufs­bilder oder Rollen lassen sich sehr gut über die dafür notwen­digen Aufgaben oder Tätig­keiten beschreiben. Für Software­architektur finden Sie in Abbildung 2 einen verbrei­teten Vorschlag – kompa­tibel mit den Vorstel­lungen von iSAQB® [3] und arc42 [4]. Ständiges Feedback bildet eine wichtige Grundlage für diese Aufgaben. Verbessern Sie die Archi­tektur auf Basis der Rückmel­dungen relevanter Stake­holder und hinter­fragen Sie ständig, sowohl struk­tu­relle („Grundriss“) wie auch technische Entscheidungen!

 

Figure 2: Tasks in software architecture

Abbildung 2: Aufgaben in der Softwarearchitektur

 

In Abbildung 2 finden Sie die wesent­lichen Entwurfs- oder Entschei­dungs­auf­gaben. Diese basieren auf den (hoffentlich) geklärten Anfor­de­rungen (oben links). Die Entschei­dungen kommu­ni­zieren Sie den relevanten Stake­holdern (unten links), indem Sie erklären, begründen, motivieren, dokumentieren.

Die Aufgabe „Umsetzung begleiten“ führen Sie konti­nu­ierlich und gemeinsam mit dem Entwick­lungsteam durch: Beide sollten sicher­stellen, dass die Imple­men­tierung auch der gewünschten Archi­tektur entspricht. Mehr zu diesen Aufgaben finden Sie in [7].

Auf die schwierige Frage, ob und wie wir diese Aufgaben im Team verteilen, oder ob eine einzelne Person dafür zuständig sein soll, möchte ich an dieser Stelle nicht eingehen. Als Trost­pflaster schauen Sie bitte in Abbildung 3 finden Sie ein Spektrum von Möglich­keiten (ursprünglich mal von Gregor Hohpe in [6] beschrieben).

 

Figure 3: Who takes on the tasks?

Abbildung 3: Wer übernimmt die Aufgaben?

 

Wie geht das?

Beginnen Sie damit, die wesent­lichen Aspekte und Entschei­dungen Ihrer eigenen Archi­tektur als One-Pager zu dokumen­tieren (siehe [5] und Abbildung 2). Damit haben Sie einen ordent­lichen Teil der relevanten Grund­lagen und Entschei­dungen explizit gemacht, und können Feedback Ihrer Stake­holder einholen.

 

Figure 4: Architecture Communication Canvas

Abbildung 4: Architecture Commu­ni­cation Canvas

 

Auf welche Weise Sie einen für die jewei­ligen Anfor­de­rungen angemes­senen „Grundriss“ sowie Imple­men­tie­rungs- und Betriebs­tech­no­logien auswählen oder entscheiden, würde den Umfang dieses Artikels sprengen. Zum Grundriss finden Sie einige Hinweise im Artikel zum Modul Domain-Driven Design (DDD). Daneben existieren viele grund­le­gende Prinzipien (etwa: lose Kopplung, hohe Kohäsion, Information-Hiding, Modula­rität etc.) und jede Menge Patterns als Hilfs­mittel. Letztlich treffen Sie Archi­tek­tur­ent­schei­dungen situativ also an der jewei­ligen Ausgangslage orien­tiert. Das klingt schwierig, und meiner Erfahrung nach IST es das auch. Genau das führt uns zur letzten Frage: Wie können Sie das lernen und

 

Wie komme ich dahin?

Meiner Erfahrung nach sollten Sie einige Jahre lang program­mieren und damit aktiv in der Entwicklung von Software arbeiten. Das gibt Ihnen den notwen­digen „Riecher“ um Unwäg­bar­keiten und Risiken in den Bereichen Entwurf und Archi­tektur zu erkennen und zu umschiffen. Daneben braucht es ein großes Maß an Kommu­ni­ka­ti­ons­fä­higkeit, und zwar mit vielen verschie­denen Stake­holdern: Je besser Sie in der Lage sind, auf die Sprachen und Ziele dieser Menschen einzu­gehen, desto besser werden Ihre Archi­tek­tur­ent­schei­dungen. Also: üben, üben, üben – und immer schön Feedback einholen.

 

Fazit

Die Rolle Softwarearchitekt:in trägt meiner Ansicht nach die Verant­wortung für die erfolg­reiche Umsetzung von Anfor­de­rungen. Dabei treffen Sie eine Reihe grund­le­gender Entschei­dungen, entweder allein oder mit Ihrem Team.

Eigene Erfah­rungen können Sie dabei kreativ einbringen und damit positiv auf IT-Projekte und ‑Produkte einwirken. Sie müssen kommu­ni­zieren und Entschei­dungen manchmal auch gegen Wider­stände argumen­tieren. Für motivierte Entwickler:innen bedeutet Software­architektur in vielen Fällen mehr Verant­wortung und größere Einflussmöglichkeiten.

Möge die Macht guter Entschei­dungen und wohl formu­lierter Begrün­dungen mit Ihnen sein!

 

Links und Referenzen

 

Über den Autor:

Dr. Gernot Starke, INNOQ-Fellow, Mitgründer von arc42, aim42 und iSAQB®, Speaker, Coach und Consultant. Mehr als 20 Jahre praktische Erfahrung in Software­architektur in unter­schied­lichen Domänen (u.a. Logistik, Telko, Finance, Engineering, Automotive, Handel).

Teilen Sie diesen Artikel:

Zum Thema passende Artikel

Bleiben Sie informiert mit dem iSAQB®-Newsletter!

Nach oben scrollen