Sie müssen ein neues Lösungsansatz für ein komplexes IT-System entwerfen. Was tun Sie?
Bevor Sie mit der Planung beginnen, sollten Sie alle besten Praktiken von Managern und Experten in eine verständliche (zumindest teilweise) Struktur zusammenführen.
Im folgenden Beispiel ist eine Diagramm dargestellt, das erklärt, dass immer ein einziger Faktor an erster Stelle stehen muss. Dies ist der erste Baustein, der den gesamten Arbeitsprozess bestimmt.
Bei der Softwareentwicklung schlage ich vor, als diesen Baustein GitLab oder GitHub als Server und Markdown als Dokumentationsformat zu wählen, das an einem einzigen Ort liegt und als Code behandelt wird. Ich schlage vor, dies niemals zu ändern, da Dokumentation in jedem Projekt Ihr gesamtes Vermögen ist (darauf kommen wir später nicht mehr zurück – es ist akzeptiert).
Das Problem des Veraltens von Dokumentation während der Entwicklung oder Weiterentwicklung des Produkts ist in dieser Struktur minimal. Die Hauptgründe für das Veralten von Informationen sind:
- Die Dokumentation wird von niemandem aktualisiert.
- Die Dokumentation ist verstreut und es ist unmöglich, eine vollständige aktuelle Version aus einzelnen Teilen zusammenzustellen.
Beide Faktoren werden in dieser Struktur unter Kontrolle gehalten.
In einigen Teams besteht die Möglichkeit, dass ein Community-Team entsteht, in dem jeder Mitarbeiter freiwillig und unabhängig seinen Beitrag zur Dokumentation leistet.
Drei Kräfte müssen parallel arbeiten: Architekt, Experte und Projektcurator.
Der Experte muss die von der Architektur vorgegebenen Aufgaben erfüllen. Experten unterschiedlicher Ebenen lösen diese selbstständig. Der Architekt legt den Formatrahmen für die Projektbeschreibung fest. Der Projektcurator kümmert sich um Rollen und Regeln, damit die Arbeit reibungslos, vorhersehbar und möglichst komfortabel abläuft.
Ohne klare Kommunikation der Verantwortungsbereiche sowohl seitens des Softwareentwicklers als auch seitens des Kunden wird die Arbeit ineffizient.
Dieser Beitrag ist eine Einführung in das Thema „Gemba“ – einem japanischen Ansatz zur Überwachung von Arbeitsprozessen.
Die Arbeit an einem großen Projekt sollte mit einer hochgradig abstrakten Diagramm beginnen (erinnern Sie sich, der Baustein „git+markdown“ wurde bereits zuvor verankert). Dies ermöglicht es allen Beteiligten, auf einem gemeinsamen Sprachniveau zu kommunizieren und vermeidet Missverständnisse und Erklärungen auf die Finger.
An jedem Schritt werden Mitarbeiter verschiedener Bereiche und Fachrichtungen hinzugezogen.
Ein verbreiteter Ansatz bei Auftraggebern ist die Visualisierung der Software-Architektur nach der „C4-Modell“ (C steht für Context, Containers, Components, Code) und deren Variationen.
Diagramme unterschiedlicher Detailstufen sind unterschiedlich detailliert, sodass sie sowohl technischen als auch nicht-technischen Spezialisten verständlich sind.
In meiner Arbeit verwende ich:
High Level Design – eine Diagramm mit Netzwerkgeräten und Konturen. Es beinhaltet einen Firewall und Sicherheitsmaßnahmen. Auf dem Diagramm werden Datenströme dargestellt und sensible Daten markiert. Komponenten werden durch Linien ohne Pfeile verbunden, wobei Ports und Protokolle angegeben werden.
Aus dieser Diagramm wird die Deployment-Diagramm (ohne Beispiel) erstellt, auf dem folgende Elemente hinzugefügt werden:
- Virtualisierungsplattform
- Name und Versionen der OS und Datenbanken
- Container und Orchestrierung
- Hardwareanforderungen
- Verbindung zu Hardwareanbietern
- Deployment-Umgebung
Anhand dieser Diagramm ist klar, wie die Systeme bereitgestellt und betreut werden. Wie die einzelnen Teile skaliert werden. Wie Wartungsarbeiten und Backup/Rücknahme durchgeführt werden.
Zuletzt wird die Container-Diagramm erstellt, in dem Server (als Dienste), Dienste, Microservices beschrieben werden, IaaS, Schnittstellen, Kommunikationsprotokolle, Integrationstypen, Datenbanken, Message-Broker, Busse, Gateways, Synchronisation und Art der Interaktion (XML, API, Dateien) angegeben werden.
(Die letzte Diagramm, Klassendiagramm, wird optional verwendet.)> Bei der Schritt-für-Schritt-Aufstellung der Komponenten jeder Diagramm haben Kurator und Architekt ein Verständnis dafür, welche Aufgaben entstehen und wie sie zwischen den Beteiligten verteilt werden müssen. Die Schrittdiagramm ermöglicht es jedem Beteiligten, seinen aktuellen Stand und seinen nächsten Schritt zu erkennen.
Downloaden Sie das Mermaid-Diagramm: flow_new_arch.md (2,5 KB)
flowchart TD
classDef pclass fill:#f5f5dc
classDef wclass fill:#f96
classDef pmclass fill:#4f7
classDef yclass fill:#ff9
classDef oclass fill:#ffbf00
classDef gclass fill:#c5e384
a((Start)):::gclass --1-->
b(Entscheidungskarte<br><i>im Gitlab-Projekt<br>Format Markdown</i>):::wclass -->
q{ } -.2.->
g[Prozesse] --3-->
h[Regelwerke] --4-->
i[Verantwortungsbereiche] -.->
p
g -->
s(Interaktionsdiagramm für Projektmitarbeiter mit Berücksichtigung der Aufgabentypen und deren Reihenfolge):::pclass
h -->
t(Anforderungen an die Einhaltung von Regeln: Codeformatierung, Review, Dokumentation, Kommunikation, Ordnung, Kultur, Compliance):::pclass
i -->
u(Präzision bei Zuweisung und Ausführung von Aufgaben, nahtlose Zusammenarbeit):::pclass
q --5-->
c(HLD-Diagramm):::oclass --6-->
d(Release-Diagramm):::oclass --7-->
e(Container-Diagramm):::oclass --8-->
p(Online-Dokumentation):::yclass -->
j[[Technische Lösung]]:::pmclass
c --> k(Netzwerkkonfiguration, Containerverteilung, MSZ und Schutzmechanismen, Ansprechpartner für Support):::pclass
c --> o(Kritische Datenströme, Speicherung sensibler Daten nach Typen: Personendaten, Geschäftsgeheimnisse usw.):::pclass
d --> m(Anforderungen an Hardware, Equipment, Leistung, Lieferantenbindung, Virtualisierung, Containerisierung, Orchestrierung, Bereitstellungsumgebung):::pclass
e --> n(Server als Service, Dienste, IaaS, Microservices, Schnittstellen, Protokolle und Integrationstypen, Datenbanken, Broker, externe Komponenten, Integrationen: Busse, Warteschlangen, Gateways, Typ der Verknüpfung sync/async, Kommunikationsprotokolle):::pclass
Folgen Sie immer den Blöcken der Diagramme. Finden Sie Übereinstimmungen und organisieren Sie Ihre Arbeit so, dass keine Lücken entstehen. Wenn Änderungen im Prozess erforderlich sind, führen Sie diese schrittweise ein.

