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
Migration von Anwendungen einer Versicherung zu AWS
Im Rahmen eines umfassenden Projekts unterstützte ich die Migration von selbst entwickelten, geschäftskritischen Anwendungen einer Versicherung aus dem firmeneigenen Rechenzentrum in die Amazon Web Services (AWS). Mehr
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
Integration von Händlern in E-Commerce-Marktplatz
Im Rahmen eines Projekts für ein großes Logistikunternehmen habe ich eine Software zur Automatisierung des Datenaustauschs zwischen einem E-Commerce-Marktplatz und Händlern entwickelt. Mehr
Juristische Datenbanken und Veranstaltungskalender
Entwicklung einer Web-Anwendung zur Erfassung, Pflege und Publikation von Gerichtsentscheidungen, Veranstaltungen und Referenzen zum Arbeits- und Sozialrecht. Mehr
Content Management & Buchungssystem für Fluggesellschaft
Für eine Fluggesellschaft entwickelte ich als Teil eines agilen Entwicklungsteams eine maßgeschneiderte Lösung zur Integration von Website und Content Management System mit Produktdaten, Wetterinformationen und der Internet Booking Engine. Mehr
Portal zum Backen für Hersteller von Mühlenprodukten
Konzeption, Entwicklung und Implementierung eines umfangreichen interaktiven Online-Portals rund um das Thema Backen für einen führenden Hersteller von Mühlenprodukten. Mehr
Online-Shop mit Newsletter für individualisierbare Artikel
Für einen Kunden im Bereich E-Commerce wurde ein Online-Shop zur Vermarktung und dem Verkauf von individualisierbarem Schmuck und Accessoires entwickelt. Mehr
Portal Software für einen Bundesverband von Krankenkassen
Für einen Bundesverband von gesetzlichen Krankenkassen wurde eine maßgeschneiderte Portal-Software entwickelt, die eine zentrale Anlaufstelle für die (Selbst-) Registrierung und Anmeldung von Benutzern bietet. 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
Investor Relations Website einer deutschen Investmentbank
Anforderungsanalyse, Beratung und Softwarearchitektur für Entwicklung und Betrieb der Corporate Website einer deutschen Investmentbank. Mehr
REST API Backend für einen Online-Shop
Entwicklung eines REST API Backends für einen Online-Shop einschließlich Authentifizierung mit OpenID Connect und Keycloak sowie CI/CD auf Basis von GitHub Actions und Linux. Mehr
Backend Software für mobile Apps
Konzeption, Entwicklung und Dokumentation einer Backend Software mit verschiedenen Diensten und einer Datenverwaltung für mobile Apps. 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