Softwarearchitektur

Softwarearchitektur bezeichnet die Planung und die Festlegung der grundlegenden technischen Eigenschaften, Komponenten und Strukturen eines Softwaresystems sowie deren Zusammenspiel.

Die Architektur eines Softwaresystems legt technische Strukturen und Anforderungen fest, die bei der Programmierung berücksichtigt werden müssen. Es geht also darum, grundlegende strukturelle technologische Entscheidungen zu treffen. Die Softwarearchitektur beeinflusst nicht-funktionale Anforderungen wie Skalierbarkeit, Sicherheit und Wartbarkeit.

Beim Entwurf einer Softwarearchitektur greift man auf dokumentierte Architekturmuster zurück, die klassisch oder modern sein können, beispielsweise Client-Server, Serviceorientierte Architektur oder Microservices. Diese bieten Vorlagen für die grundlegende Organisation und Interaktion von Softwarekomponenten. Es gibt sehr viele Architekturmuster auf unterschiedlichen Abstraktionsebenen.

In der Rolle des Softwarearchitekten legt man also die Basis und sorgt für Konsistenz und Effizienz im Gesamtsystem, während man sich in der Rolle des Programmierers auf die Details der Implementierung konzentriert. Ein starker Austausch zwischen beiden Rollen ist entscheidend, um sicherzustellen, dass das System nicht nur technisch stabil, sondern auch praktisch umsetzbar ist.

Wann soll man eine Softwarearchitektur endgültig festlegen? Legt man alle Details einer Softwarearchitektur in einer sehr frühen Entwicklungsphase fest, dann geht man häufig davon aus, dass eine Änderung der grundlegenden Entscheidungen nach einer begonnenen Implementierung zu kostspielig sein könnte, um sie später durchführen zu können. Jedoch können sich initiale Annahmen als unvollständig oder falsch herausstellen, es können Fehlentscheidungen getroffen worden sein, es kann ein Lernprozess bei den Projektbeteiligten stattgefunden haben oder es können Anforderungen geändert worden sein. Das alles kann zur Folge haben kann, dass sich eine initial definierte Softwarearchitektur als unzureichend herausstellt und deshalb verbessert werden muss. In agilen Projekten bevorzugt man deshalb eine evolutionäre Softwarearchitektur. Sie soll sicherstellen, dass technisches Design und Architektur der Software im Laufe der Entwicklung an die Anforderungen angepasst werden kann.

Nachfolgend nenne ich einige Muster, Herangehensweisen und Werkzeuge im Bereich der Softwarearchitektur, die ich erfolgreich in Projekten angewendet bzw. verwendet habe:

Client-Server · Domain-driven Design · Microservices · Serviceorientierte Architektur · UML

Wenn Sie Fragen zum Schwerpunkt Softwarearchitektur haben, berate ich Sie dazu gerne. Weitere Informationen finden Sie auf der Seite zu meinen Dienstleistungen rund um Softwareentwicklung.

Softwareprojekte mit Softwarearchitektur

Seminar-Buchungssystem mit digitalen Tickets

Entwicklung des Backends einer mehrsprachigen Anwendung für Verkauf, Erzeugung, Prüfung und Stornierung von Eintrittskarten für Seminare inklusive Bestell- und Zahlungsabwicklung sowie Benachrichtigung von Kunden und Mitarbeitern. Mehr

Erfassung, Prüfung und Versteuerung von Incentives

Entwicklung des Backends sowie der CI/CD-Pipelines einer Anwendung zur dezentralen Erfassung, Prüfung und Freigabe von steuerlich relevanten Daten über Incentives durch die Mitarbeiter eines Versicherungskonzerns auf Basis unternehmerisch definierter Workflows. Mehr

OpenID Connect und SAML für Versicherung

Beratung und Coaching zur Umstellungen einer großen Zahl von Anwendungen eines Versicherungskonzerns auf token-basierende Authentifizierung und Single Sign-On mit OpenID Connect und SAML. Mehr

Software zur Planung von TV-Sendungen und Beiträgen

Entwicklung einer Software für die Redaktionen der Fernsehsender eines Medienkonzerns zur Planung von TV-Nachrichten-Sendungen und Beiträgen inklusive Disposition und Koordination von Mitarbeitern, Ressourcen und Dienstleistern. Mehr

Katalog mit Buchungssystem für touristische Reisen

Im Rahmen eines Projekts für einen international agierenden Touristikkonzern wurde eine maßgeschneiderte Softwarelösung entwickelt, die sowohl einen umfassenden Produktkatalog als auch eine Internet Booking Engine (IBE) integriert. Mehr

Anwaltliche Informationsplattform für Fachverlag

Im Rahmen einer mehrjährigen Zusammenarbeit mit dem anwaltlichen Informationsdienst eines juristischen Verlags war ich für die Konzeption, Entwicklung und den Betrieb einer umfassenden Online-Plattform verantwortlich. Mehr

Dienstleisterverzeichnis und Portal für juristischen Verein

Für einen juristischen Verein wurde ein umfassendes Dienstleisterverzeichnis und ein geschütztes Mitgliederportal entwickelt. Die Web-Anwendung bietet eine vielseitige Such- und Filterfunktion für das Mitgliederverzeichnis sowie ein Diskussionsforum, in dem Vereinsmitglieder sich austauschen können. Mehr

Corporate Website der Hardin Software GmbH

Die Website der Hardin Software GmbH basiert derzeit auf Hugo, Go, Docker, Kubernetes und Cloudflare. In diesem Beitrag erläutere ich einige interessante Aspekte zur Entwicklung und zum Betrieb dieser Website. Mehr