Architektur muss nicht kompliziert sein
Die Architektur Ihres Systems ist ein wesentlicher Erfolgsfaktor für Ihre Software. Sie bestimmt die Strukturen und Prinzipien, nach denen das System erstellt wird und hat maßgeblichen Einfluss auf Qualitätsfaktoren wie Wartbarkeit und Erweiterbarkeit.
Ich unterstütze Sie bei der Anwendungsarchitektur von neuen System genauso wie bei der Verbesserung von Bestandssystemen (Legacy Systems). Dabei ist eine Kernziel immer die Reduktion der Komplexität Ihres Systems.
Warum ist Architektur wichtig?
Flexibilität
Software entwickelt sich ständig weiter. Deshalb muss Ihr System in der Lage sein sich flexibel an geänderte Anforderungen und neue Technologien anzupassen.
Wiederverwendbarkeit
Guter Systementwurf fördert die Wiederverwendung von Komponenten und erleichtert damit die Entwicklung und Wartbarkeit von Software.
Zusammenarbeit
Eine gut definierte Architektur fördert die Zusammenarbeit im Team und trägt dazu bei, ein gemeinsames Verständnis für das System zu schaffen.
Wartbarkeit
Wartbarkeit spielt eine wichtige Rolle, um eine Langlebigkeit der Software zu gewährleisten und Änderungen im Laufe der Zeit kosteneffizient umsetzten zu können.
Skalierbarkeit
Durch eine solide Softwarearchitektur kann Ihr Systeme flexibel skalieren und auf wachsende Benutzerzahlen reagieren. Skalierung kann da bei horizontal (zusätzliche Knoten) oder vertikal (leistungssärkere Knoten) erfolgen.
Performance
Durch den richtigen Entwurf kann die Leistungsfähigkeit Ihres Systems optimiert werden und die Einhaltung von Performancekriterien wie Reaktionszeit und Ressourcenverbrauch sichergestellt werden.
Cloud Native Architecture
Bei einer Cloud Native Architecture wird von Beginn an für die Cloud entworfen. Sie nutzt Vorteile wie Kosteneffizienz, Flexibilität und Skalierbarkeit durch den Einsatz von PaaS- und IaaS-Diensten in der Cloud. Dadurch sparen Sie unter anderem Zeit und Aufwand für die Administration der Infrastruktur und können sich stattdessen auf das Kerngeschäft fokussieren.
Ich kann Ihnen helfen, diese Vorteile zu nutzen, ohne in einen Vendor-Lock-In zu kommen oder den Datenschutz zu vernachlässigen.
Jahre Erfahrung
Entwicklern geholfen
Erfolgreiche Projekte
So helfe ich Ihnen
Architekturevaluierung
Im Zuge einer Architekturevaluierung wird mit Hilfe von bewerten Standards die Ist-Architektur auf bestimmte Qualitätsmerkmale untersucht. So können Abweichungen zur Soll-Architektur, potentielle Risiken, Schwächen und Verbesserungspotenziale gefunden.
Aus diesen Erkenntnissen leiten wir konkrete Aktionen ab, um die Verbesserungen auch in der Praxis umzusetzen und die Ist- und Soll-Architektur näher heranzuführen. Dabei sprechen wir auch über langfriste Maßnahmen, um die Qualität langfristig sicherzustellen und Abweichungen zum Sollzustand transparent zu machen.
Anforderungen und Modellierung
Anforderungen sind die Grundlagen jeder Software. Dabei spielen neben den funktionalen Anforderungen vor allem die Qualitätsanforderungen eine entscheidende Rolle für die Architektur.
Zur Ermittlung der Anforderungen verwende ich Techniken wie Stakeholder-Interviews, Brainstorming oder Anforderungsworkshops. Auch kollaborative Modellierungstechniken wie Event Storming, Context Mapping oder Business Model Canvas kommen in der richtigen Situation zum Einsatz. Die so ermittelten Anforderungen können sowohl für agile als auch sequenzielle Prozesse ausgearbeitet werden.
Architekturentwicklung
Bei der Architekturentwicklung wird der konkrete Systementwurf anhand Ihrer Anforderungen erstellt. Es werden Strukturen festgelegt, das System anhand von fachlichen und technischen Zuständigkeiten zerlegt, Querschnittskonzepte definiert, Prinzipien festgelegt und Muster ausgewählt.
Dabei lege ich wert auf eine strukturierte Herleitung der Architekturentscheidungen. Dies gewährleistet Nachvollziehbarkeit, sowie Transparenz und erklärt wie eine Architektur entstanden ist. Ein methodisches Vorgehen hilft auch alle relevanten Alternativen zu berücksichtigen.
Implementierung
Jede Architektur muss auch umgesetzt werden. Deshalb begleite ich Sie auch bei der Implementierung Ihres Systems und arbeite operativ in der Entwicklung mit. Das kann von der Umsetzung kritischer Komponenten, bis hin zum Pair Programming für den Wissenstransfer gehen.
In meiner Berufslaufbahn habe ich viel Erfahrung mit C# im Kontext verschiedener .NET-Varianten sammeln können. Ebenso habe ich viele Jahre mit Sprachen wie JavaScript, Python und PHP gearbeitet. Daneben habe ich mit vielen unterschiedlichen Cloudanbietern, Datenbanksystemen und weiteren Technologien gearbeitet.
Risikoanalyse
Durch Risikoanalyse können Sie Risiken frühzeitig finden und Gegenmaßnahmen entwickeln, bevor sie zum Problem werden. Die gefunden Risiken sind ebenso Einflussfaktoren für viele Architekturentscheidungen.
Grundlage ist hierbei die Risikoidentifikation, um überhaupt zu wissen, welche Risiken relevant sind. Ich wende dabei verschiedene Methoden zur Identifikation an, um einen möglichst breiten Blick zu erhalten. Gemeinsam erarbeiten wir Maßnahmen, wie wir diese Risiken in Einklang mit Ihren Geschäftszielen beseitigen können.
Schulungen
Am besten funktioniert Architektur, wenn sie von allen Beteiligten verstanden und in weiterer Folge umgesetzt wird. Dazu ist es aber wichtig, das entsprechende Fachwissen ins Team zu bekommen.
Die Methodenschulung Certified Professional for Software Architecture (CPSA) der iSAQB® ist dazu bestens geeignet. Mit Software Quality Labs Academy kann ich Ihnen das Foundation Level so wie ausgewählte Advanced Level-Module anbieten. Weiters kann ich Ihnen auch Schulen für Softwaretesting und Requirements Engineering anbieten.
Bereit für den ersten Schritt?
Sind Sie bereit, Ihre Softwarelösungen auf die nächste Ebene zu bringen? Kommen wir ins Gespräch und legen wir gemeinsam den Weg zum Erfolg für Ihre Software fest.
Domain-Driven-Design
Domain-Driven Design ist eine praxiserprobte Vorgehensweise, um komplexe Domänen durch enge Zusammenarbeit zwischen Fachexperten und Softwareentwicklern zu modellieren. Dabei bringt Domain-Driven Design viele Werkzeuge mit, um den strategischen und taktischen Entwurf eines System zu machen.
Die praktische Umsetzung Domain-Driven Design birgt einige Herausforderungen, die ich mit Ihnen gemeinsam angehen und meistern kann. Dies beginnt bei der Festlegung der Domänen, die Ermittlung der Kollaborationen zwischen der Domänen oder Details in der Implementierung des taktischen Designs.
Ereignisgetriebene Architektur
Ereignisse sind Zustandsänderungen einer Entität, die von einer Komponente erfasst und an andere Komponenten mittels einer Nachricht weitergeleitet werden kann. Die Zustellung der Nachricht übernimmt dabei ein Event Broker. Eine Ereignisgetriebene Architektur (EDA) erlaubte ein lose gekoppeltes System zu erzeugen, dass Skalierbarkeit und Veränderung unterstützt.
Doch auch hier gibt es Herausforderungen. Wie werden Ereignisse erfasst und übermittelt? Wie kann man die Zustellung von Ereignissen sicherstellen? Wie geht man mit Fehlerzuständen im verteilten System um?
Lassen Sie mich Ihnen bei der Beantwortung dieser Fragen helfen.
Andere Domänen
Nicht nur Softwaresystem müssen entworfen werden. Manchmal ist es auch wünschenswert andere Domänen, wie die Geschäfts- (BA) oder Unternehmensarchitektur (EA) zu beschreiben. Die BA modelliert Geschäftsprozesse eines Unternehmens und beschreibt dessen Strategie und Organisation.
In der EA wird ein gesamtheitlich Blick auf die IT eines Unternehmens geworfen und das Zusammenspiel verschiedener IT-Komponenten wie Hardware, Standardsoftware und Individualsoftware geregelt. Auch Themen wie Sicherheitsstrategien und IT-Governance sind hier typischerweise abgebildet.
Ressourcen
Blogartikel
In meinem Blog finden Sie viele Artikel zur Softwarearchitektur.