AGILA – Agile Softwarearchitektur | Part 1/3

AGILA – Agile Softwarearchitektur | Part 1/3

AGILA – Agile Softwarearchitektur

 Was ist das eigentlich?

Im Februar 2001 trafen sich 17 Softwareentwickler:innen. Aus ihrer Sicht fehlte es den vorherrschenden Arbeiten an Flexibilität und Kundennähe. Das agile Manifest entstand und krempelte die Arbeitsweisen in der Softwarentwicklung ähnlich um wie heute ChatGPT. Das Herzstück agiler Methoden sind dabei Kundennähe, schnelle Feedbackschleifen und damit einhergehend kontinuierliche Veränderungen auf Basis des erhaltenen Feedbacks. Agile Vorgehensweisen setzen die Menschen in das Zentrum des Arbeitens. Nicht nur auf Kundenseite auch im Team.

 

Mythbusting: Im Bezug auf Dokumentation wird das agile Manifest oft missverstanden. Agiles Arbeiten verzichtet nicht auf Dokumentation, sondern setzt diese anders ein. So wird z.B. auf Lastenhefte verzichet und in kleine Arbeitspakete geschnürrt.

Wie funktioniert das?

Die agile Softwarearchitektur priorisiert funktionierende Software über umfassende Dokumentation und betont die enge Zusammenarbeit zwischen Architekten, Entwicklern und Kunden. Die Architekten arbeiten eng mit den Stakeholdern zusammen, um Anforderungen zu verstehen und kontinuierliches Feedback zu erhalten. Die Architektur wird inkrementell entwickelt und angepasst, um auf sich ändernde Anforderungen und Erkenntnisse zu reagieren.

Wozu das alles?

Dieses Vorgehen spiegelt die Werte des agilen Manifests wider, wobei Individuen und Interaktionen, funktionierende Software, Zusammenarbeit mit Kunden und die Bereitschaft zur Anpassung an Veränderung im Mittelpunkt stehen. Agile Softwarearchitektur fördert die Schaffung einer evolutionären Architektur, die auf klare Kommunikation, schnelles Feedback und ständige Anpassung setzt. Dies ermöglicht es den Entwicklungsteams, flexibel auf Herausforderungen zu reagieren und hochwertige Softwarelösungen zu liefern, die den Kundenanforderungen gerecht werden.

Wir freuen uns, Ihnen eine spannende Blogserie in drei Teilen anzubieten, die sich mit den Grundlagen und den Herausforderungen der Softwarearchitektur im agilen Umfeld beschäftigt.

Teil 1: Grundlagen der Softwarearchitektur und Agilität

Starten Sie mit uns in die Grundlagen, um die essenziellen Konzepte der Softwarearchitektur und agilen Methoden zu verstehen.

 Teil 2: Agiles Architekturvorgehen

Im zweiten Teil tauchen wir tiefer ein und zeigen Ihnen, wie Sie agile Prinzipien erfolgreich in Ihre Architekturansätze integrieren können.

 Teil 3: Architekturanforderungen in agilen Projekten

Abschließend beleuchten wir die spezifischen Anforderungen, die in agilen Projekten an die Architektur gestellt werden, und wie Sie diesen gerecht werden können.

 Seien Sie dabei und erweitern Sie Ihr Wissen über die Schnittstelle von Softwarearchitektur und Agilität.

Teil 1)

Grundlagen der Softwarearchitektur

Softwarearchitektur bezieht sich auf die organisierte Struktur und das Designen von Software-Systemen, die aus verschiedenen Komponenten, Modulen und Interaktionen bestehen. Sie legt die grundlegenden Entscheidungen und Prinzipien fest, die die gesamte Software-Entwicklung beeinflussen, um sicherzustellen, dass Systeme die gewünschten Anforderungen erfüllen, skalierbar, wartbar und erweiterbar sind.

Die Softwarearchitektur beschäftigt sich mit folgenden Themen und Fragestellungen:

  • Komponenten und Module: Wie ist die Software in Komponenten und Module unterteilt? Welche Funktionen haben diese Einheiten und wie interagieren sie miteinander?
  • Kommunikation und Schnittstellen: Wie kommunizieren die verschiedenen Komponenten miteinander? Welche Schnittstellen definieren ihre Interaktion?
  • Datenfluss und -speicherung: Wie werden Daten innerhalb des Systems verarbeitet, gespeichert und übertragen?
  • Skalierbarkeit: Wie kann die Softwarearchitektur erweitert werden, um steigenden Anforderungen gerecht zu werden?
  • Wartbarkeit: Wie einfach ist es, Fehler zu finden und zu beheben sowie neue Funktionen hinzuzufügen, ohne das gesamte System zu beeinträchtigen?
  • Sicherheit: Wie werden Sicherheitsaspekte im System berücksichtigt, um Daten und Funktionen vor unberechtigtem Zugriff zu schützen?
  • Performance: Wie wird sichergestellt, dass die Software unter den erwarteten Belastungen effizient arbeitet?
  • Technologieauswahl: Welche Technologien, Programmiersprachen, Frameworks oder Plattformen werden verwendet, um die gewünschte Architektur umzusetzen?
  • Muster und Stile: Welche bewährten Muster und Architekturstile (z.B. Schichtenarchitektur, Microservices, monolithisch, …) werden angewendet, um die Ziele des Systems zu erreichen?
  • Dokumentation: Wie wird die Architektur dokumentiert, um sicherzustellen, dass Entwickler das System verstehen und um daran arbeiten zu können?

 Die Wahl einer angemessenen Softwarearchitektur ist entscheidend für den Erfolg eines Softwareprojekts, da sie die Grundlage für die gesamte Entwicklung legt. Eine gut durchdachte Architektur ermöglicht eine effiziente Entwicklung, eine bessere Zusammenarbeit im Team und erleichtert zukünftige Anpassungen und Erweiterungen.

Grundlagen der Agilität

Agile Prinzipien sind eine Reihe von Leitlinien und Werten, die angewendet werden, um eine flexible, kundenorientierte und effiziente Arbeitsweise zu fördern. Das „Agile Manifesto“ betont die Wichtigkeit von Individuen und Interaktionen, funktionierender Software, Zusammenarbeit von Kunden und die Bereitschaft zur Anpassung an Veränderungen.

Die agilen Prinzipien sind:

  • Individuen und Interaktionen über Prozesse und Werkzeuge

Die Zusammenarbeit zwischen den Teammitgliedern und die klare Kommunikation stehen im Vordergrund. Effektive Zusammenarbeit führt zu besserem Verständnis und letztendlich zu einer erfolgreichen Umsetzung.

 

  • Funktionierende Software über umfassende Dokumentation

Die Priorität liegt darauf, funktionierende Software zu entwickeln, die den Nutzerbedürfnissen entspricht. Dokumentation ist wichtig, aber sie sollte nicht den Fokus von der tatsächlichen Entwicklung ablenken.

 

  • Zusammenarbeit mit Kunden über Vertragsverhandlung

Die enge Zusammenarbeit mit dem Nutzer ermöglicht es dem Team, ihre Anforderungen und Bedürfnisse besser zu verstehen. Feedback der Nutzer ist von großer Bedeutung, um die Software kontinuierlich zu verbessern.

 

  • Reagieren auf Veränderung über das Befolgen eines Plans

Anstatt strikt einem starren Plan zu folgen, sollten agile Teams bereit sein, auf Änderungen und neue Erkenntnisse flexibel zu reagieren. Veränderungen werden als eine Möglichkeit zur Anpassung und Verbesserung begriffen.

Aufbauend auf den 4 Werten leitet das agile Manifest zwölf Prinzipien für die Zusammenarbeit zwischen Entwicklungsteam und Kunden ab:

  1. Höchste Priorität ist frühe und kontinuierliche Auslieferung zu gewährleisten. Dieses Vorgehen soll sicherstellen nicht an Bedürfnissen der Nutzer vorbei zu entwickeln.
  2. Änderungen sind erwünscht. Durch kontinuierliches Feedback kann dieses Vorgehen zum Wettbewerbsvorteil werden.
  3. Funktionsfähige Software, die in kurzen Zeitspannen ausgeliefert werden können.
  4. Arbeite eng mit Kunden und Nutzern zusammen, um Anforderungen zu definieren und laufend Feedback zu erhalten.
  5. Bilde motivierte Individuen aus und gebe ihnen die Umgebung und Unterstützung, die sie benötigen. Vertraue darauf, dass sie die Arbeit erledigen.
  6. Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist das Gespräch von Angesicht zu Angesicht.
  7. Funktionierende Software ist das primäre Maß für Fortschritt.
  8. Agile Prozesse fördern nachhaltige Entwicklung. Die Entwickler, Sponsoren und Anwender sollten ein konstantes Tempo auf unbestimmte Zeit aufrechterhalten können.
  9. Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design verbessert die Agilität.
  10. Einfachheit – die Kunst die Menge nicht erledigter Arbeit zu maximieren – ist essenziell.
  11. Die besten Architekturen, Anforderungen und Entwürfe entstehen in selbstorganisierten Teams.
  12. In regelmäßigen Abständen reflektieren das Team und seine Mitglieder darüber, wie sie effektiver werden können, und passen ihr Verhalten entsprechend an.

 Diese agilen Prinzipien dienen als Grundlage für agile Entwicklungsmethoden wie Scrum, Kanban, Extreme Programming und andere, um Teams bei der Entwicklung hochwertiger Software mit hoher Flexibilität und Nutzerzufriedenheit zu unterstützen.

In agilen Softwareentwicklungsprojekten wird zunehmend auf evolutionäre Softwarearchitektur und emergentes Design im Gegensatz zu vorher festgelegter Architektur (engl.: „Big Design Up Front“) gesetzt. Dabei soll durch Techniken wie Behavior Driven Development, testgetriebene Entwicklung und vor allem Refactoring sichergestellt werden, dass das technische Design und die Architektur im Laufe eines Softwareentwicklungsprojektes ständig an die Anforderungen angepasst werden.

 Wie sich agiles Arbeiten in der Gestaltung von Softwarearchitektur umsetzen lässt, werden wir im zweiten Teil unserer Blogserie „Agile Softwarearchitektur“ mit dem Thema „Agiles Architekturvorgehen“ betrachten.

Lesempfehlung: Infrastructure as Code

Lesempfehlung: Infrastructure as Code

Wir haben für Sie gelesen!

Lesetipps für Alle, die an Softwarearchitektur, Softwareentwicklung und IT-Projektmanagement interessiert sind.

Infrastructure as Code

Prinzipien, Praktiken und Patterns für eine cloudbasierte IT-Infrastruktur

2. Auflage

Kief Morris

Infrastructure as Code, Kief Morris

Server in der Cloud verwalten

Noch vor ein paar Jahren hielten viele Unternehmen und Banken die Nutzung von Private und Public Cloud Technologien und Infrastructure Automation Tools für ausgeschlossen – die eigenen Anforderungen seien zu komplex und das Unternehmen zu groß. Für Start-ups könnte es funktionieren – eventuell. Jetzt, 6 Jahre nach der 1. Auflage von Infrastructure as Code, sind wir inmitten des Zeitalters der Cloud angekommen. Große sowie eher konservative Unternehmen setzen immer mehr auf die „Cloud-first“ Strategie. Alternativ weichen Unternehmen auf dynamisch bereitgestellte Infrastrukturplattformen in ihren Rechenzentren aus. Wer die Möglichkeiten dieser Plattformen ignoriert, der verliert! Oder riskiert zumindest, dass der Zahn der Zeit immer weiter an der physischen Infrastruktur nagt und Fehler nur langsam und kostspielig behoben werden können.

Das Infrastructure-as-Code-Konzept ermöglicht dagegen die Automatisierung der Infrastruktur mithilfe von Ansätzen aus der Softwareentwicklung. Der Fokus liegt darauf, konsistente und wiederholbare Routinen für die Bereitstellung und Änderung von Systemen und deren Konfiguration zu erzeugen. Änderungen, die am Code vorgenommen werden, werden von der Automatisierung genutzt, um sie zu testen und auf Systeme anzuwenden. Somit ermöglicht das Infrastructure-as-Code-Konzept eine schnelle Bereitstellung von Infrastruktur bei Veränderung des Bedarfs von Rechenleistung.

Über den Autor

Der Autor, Kief Morris, ist Principal Cloud Technologist bei dem Technologie-Beratungsunternehmen thoughtworks. Er betreut und berät Unternehmen und Teams in diesem Cloud-Zeitalter hinsichtlich der passenden Technologien und Methoden. Themen wie Cloud, digitale Plattformen, Infrastructure Automation, DevOps und Continuous Delivery gehören also zu seinem täglichen Geschäft.

Über Infrastructure as Code

Mit dieser 2. Auflage von Infrastructure as Code verspricht Kief Morris ein praktisches Handbuch zu liefern, das Ihnen erklärt, wie Sie eine IT-Infrastruktur im Zeitalter der Cloud aufsetzen und managen. Genauer gesagt zeigt er, wie Sie mit Prinzipien, Praktiken und Patterns aus der Softwareentwicklung eine IT-Infrastruktur mithilfe von Technologien wie Cloud, Virtualisierung und Konfigurationsmanagement verwalten können. Die Magie besteht darin, mittels der Technologien die Infrastruktur von der Hardware zu entkoppeln, um sie dann in Code und Daten umzuwandeln.

Das erwartet Sie

  • Die Grundlagen: wie Infrastructure as Code mittels Tools und Technologien eingesetzt werden kann, um Cloud-basierte Plattformen aufzubauen
  • Die Arbeit mit Infrastructure Stacks: wie Sie kontinuierlich Änderungen an Infrastrukturressourcen definieren, bereitstellen und testen
  • Die Arbeit mit Servern und anderen Plattformen: Verwendung von Mustern für die Bereitstellung und Konfiguration von Servern und Clustern
  • Die Arbeit mit großen Systemen und Teams: aneignen von Workflows, Governance und Architekturmustern zur Erstellung und Verwaltung von Infrastrukturelementen

Dieses Buch darf in Ihren Bücherregalen nicht fehlen…

…wenn Sie in einem Bereich arbeiten, der daran beteiligt ist IT-Infrastrukturen aufzusetzen und zu betreiben:

^

Systemadministration

^

Softwareentwicklung

^

Softwarearchitektur

^

IT-Infrastrukturadministration

^

Technische Projektleitung

Infrastruktur, Container und Cloud Native (CLOUDINFRA)

Erleben Sie in Ihrem Umfeld derzeit den Übergang von einer zentralisierten hin zu einer verteilen IT? Dann wissen Sie sicherlich genauso wie wir, dass dabei eine Vielzahl von Prozessen entsteht und mit ihnen die Herausforderung, diese Fülle von kleinen Systemkomponenten für den Betrieb bereitzustellen. Um diese Herausforderung zu meistern, empfehlen wir Ihnen das 3-tägige Training „Infrastruktur, Container und Cloud Native (CLOUDINFRA)“. Die Teilnehmer erhalten umfassendes Wissen zu den Themen Cloud Native Architekturen, Container Application Design, Logging/Monitoring/Alerting, Container Native Storage und Möglichkeiten zur UI Integration.

Ebenso werden typische Konzepte aktueller Container Manager aufgezeigt und vermittelt, wie sich damit für größere Webanwendungen gängige Qualitätsanforderungen realisieren lassen. Auch Infrastructure as Code wird bei diesem Training im Rahmen der Grundlagen modernder Infrastrukturen und der Automatisierung als Konzept vorgestellt.

Dieses Training ist Teil des weltweit anerkannten Weiterbildungsprogramm „Certified Professional for Software Architecture (CPSA)“ des iSAQB. Für die Zertifizierung zum „Certified Professional for Software Architecture – Advanced Level (CPSA-A)“ sammeln Sie mit diesem Training die entsprechenden Credit Points: 20 CP Kompetenz in Technologie und 10 CP Kompetenz in Methodik. Das 3-tägige Training wird in der ITech Academy auf Deutsch (Online und Präsenz) und Englisch (Online) angeboten.

Besuchen Sie das 3-tägige „Infrastruktur, Container und Cloud Native (CLOUDINFRA)“ Training und sammeln Sie Credit Points für Ihre Zertifizierung zum „Certified Professional for Software Architecture – Advanced Level (CPSA-A)“!

 

CLOUDINFRA-ISAQB

Fazit zu Infrastructure as Code

Kief Morris lässt in sein Buch Erfahrungen aus seiner Arbeit mit Teams, die mit großen und komplexen Infrastrukturen zu kämpfen hatten und denen die Organisation und Arbeit mit Infrastrukturcode zu Beginn schwerfiel, einfließen. Infrastructure as Code ist kein Einsteigerwerk, aber ein gut geschriebenes Buch für Leute, die 1. Nicht vor Theorie zurückschrecken, denen 2. die behandelten Technologien nicht ganz neu sind und die 3. vertraut sind mit Softwareentwicklung und Konzepten wie Agile und Lean. Fans von Patterns und konzeptionellen Ansätzen für die Softwareentwicklung werden mit Infrastructure as Code auf ihre Kosten kommen.

Informiert bleiben über neue Lesetipps und Buchverlosungen

Lesempfehlung für Sie: Basiswissen für Softwarearchitekten

Lesempfehlung für Sie: Basiswissen für Softwarearchitekten

Wir haben für Sie gelesen!

Lesetipps für Alle, die an Softwarearchitektur, Softwareentwicklung und IT-Projektmanagement interessiert sind.

Basiswissen für Softwarearchitekten

Aus- und Weiterbildung nach iSAQB-Standard zum Certified Professional for Software Architecture – Foundation Level

Mahbouba Gharbi / Arne Koschel / Andreas Rausch / Gernot Starke

Basiswissen für Softwarearchitekten

Basiswissen für Softwarearchitekten - die Bibel der Softwarearchitektur?

Auf der OOP-Softwarekonferenz 2019 in München habe ich ein Gespräch mitbekommen, in dem der Satz fiel: „Basiswissen für Softwarearchitekten ist die Bibel der Softwarearchitektur.“ Eine vielversprechende Aussage, oder? Schauen wir mal, ob wir ihr unseren Segen geben können.

Basiswissen für Softwarearchitekten verspricht eine kompakte Einführung in die Welt der Softwarearchitektur und die Aufgaben der Softwarearchitekt:innen zu sein. Praxisnah und einsteigerfreundlich geschrieben, vermitteln Mahbouba Gharbi, Arne Koschel, Andreas Rausch und Gernot Starke auf 238 Seiten wichtige Begriffe und Konzepte sowie das technische und methodische Handwerkszeug, um Softwarearchitekturen zu entwerfen.

Softwarearchitektur ist die „Königsdisziplin des Software Engineering“, so Ernst Denert. Mit einer Softwarearchitektur, die 1. nicht die Anforderungen der Nutzer:innen und Kundinnen erfüllt, die 2. nicht stabil und anpassungsfähig konstruiert wurde und 3. unstrukturiert ist, ist ihr Softwareprojekt von Beginn an zum Scheitern verurteilt. Damit Ihnen genau das NICHT passiert haben die Autor:innen einen Leitfaden geschaffen, der Sie an die Hand nimmt und sicher ans Ziel führt: Mithilfe von Sichten, Architekturmustern und technischen Konzepten Softwarearchitekturen dokumentieren und kommunizieren sowie die Grundlagen des Architekturentwurfs verstehen, um selbst eine Softwarearchitektur für kleine und mittlere Systeme zu entwerfen. 

Mit dem vielfältigen Mix aus Theorie, praxisnahen Beispielen, Lernkontrollen, Exkursen, Prüfungsaufgaben und einem Glossar sind Sie nach dem Durcharbeiten des Buches bestens gewappnet.

Leitfaden zum CPSA Foundation Level (CPSA-F)

Wir empfehlen Ihnen Basiswissen für Softwarearchitekten insbesondere dann, wenn Sie die Zertifizierung zum »Certified Professional for Software Architecture – Foundation Level« (CPSA-F) des International Software Architecture Qualification Board (iSAQB®) anstreben.

Durch die vielen anschaulichen Beispiele, Lernkontrollen nach jedem Kapitel und Prüfungsbeispielfragen ist dieses Buch in unseren Augen der ideale Begleiter während der Prüfungsvorbereitung. Die 4. Auflage des Buches ist 2020 passend zum aktualisierten CPSA-F-Lehrplan (Version 5.1) auf dem Markt erschienen – also alles auf dem neuesten Stand! In manchen Punkten steigt es noch tiefer in der Materie ein, als es in dem 4-tägigen CPSA Foundation Level Training möglich ist. Aber aufgepasst: Auf das 4-tägige Training sollten Sie trotzdem nicht verzichten! Die Wissensvermittlung durch akkreditierte und erfahrene Trainer:innen, die praktischen Übungen in der Gruppe und der persönliche Austausch ermöglichen Ihnen ein noch besseres Verständnis für Softwarearchitektur und Ihre Rolle als Softwarearchitekt:in.

Unser Tipp lautet deshalb: besuchen Sie das Foundation Level Training mit Autorin Mahbouba Gharbi als Trainerin und nutzen Sie Basiswissen für Softwarearchitekten für die Prüfungsvorbereitung. Dann haben Sie sehr gute Chancen, die CPSA-F-Prüfung zu bestehen!

In Ihren Bücherregalen darf dieses Buch nicht fehlen:

^

Softwarearchitekt:innen

^

Softwareentwickler:innen

^

Softwaredesigner:innen

^

Systemanalytiker:innen

^

Technische Projektleiter:innen

Auch wenn der Titel Basiswissen für Softwarearchitekten zunächst anderes vermuten lässt, eignet sich dieses Handbuch auf keinen Fall nur für Softwarearchitekt:innen. Aus unserer eigenen Projekterfahrung  heraus wissen wir wie wichtig es für den Projekterfolg ist, dass das Team auf eine gemeinsame Softwarearchitektur eingeschwört ist und eine gemeinsame Fachsprache spricht.

Aus diesen Gründen empfehlen wir grundsätzlich allen, die an IT-Projekten auf der mittleren Softwareentwicklungsebene beteiligt sind sich einen Überblick zum Thema Softwarearchitektur zu verschaffen und die Fachtermini zu erlernen. Das Buch ist auch für Projektmanager:innen, Softwaredesigner:innen, Systemanalytiker:innen uvm. verständlich geschrieben und deckt für den Einstieg alles ab.

Besuchen Sie das CPSA Foundation Level Training mit Autorin Mahbouba Gharbi als Trainerin und Sie erhalten Basiswissen für Softwarearchitekten gratis zur Prüfungsvorbereitung!

Mahbouba Gharbi

Fazit zu Basiswissen für Softwarearchitekten

Kommen wir zurück auf die eingangs gestellte Frage, auf die Sie sicherlich noch eine Antwort hören möchten. „Die Bibel der Softwarearchitektur“ – das klingt zugegebenermaßen etwas hochgestochen. Aber gerade im Hinblick auf die konsequente und einzigartige Ausrichtung nach dem CPSA Foundation Level (CPSA-F), dem international anerkannten Ausbildungsstandard in der Softwarearchitektur, bietet Basiswissen für Softwarearchitekten Ihnen derzeit in Form eines Buches die beste Einführung in die Softwarearchitektur.

Informiert bleiben über neue Lesetipps und Buchverlosungen