AGILA – Agile Softwarearchitektur | Part 2/3

AGILA – Agile Softwarearchitektur | Part 2/3

AGILA – Agile Softwarearchitektur

Teil 2

Willkommen zum nächsten Teil der Blogserie

Nachdem wir uns im letzten Beitrag mit den Grundlagen der Softwarearchitektur und agiler Entwicklung im Allgemeinen beschäftigt haben, betrachten wir in diesem Beitrag, wie sich beides zusammenführen lässt.

Agiles Architekturvorgehen

Dieser Ansatz verfolgt die Integration agiler Prinzipien und Methoden in den Prozess der Gestaltung und Entwicklung von Softwarearchitekturen. Er zielt darauf ab, die traditionell starren und vorausplanenden Ansätze zur Architekturdefinition zu überwinden und stattdessen eine flexible, anpassungsfähige und inkrementelle Herangehensweise zu fördern.
Im Rahmen des agilen Architekturvorgehens werden Architekten und Entwickler ermutigt, zusammenzuarbeiten, kontinuierlich zu lernen und sich ändernden Anforderungen anzupassen.

Einige Merkmale des agilen Architekturvorgehens sind:

Kontinuierliche Anpassung: Anstatt eine vollständige Architektur im Voraus zu entwerfen, entwickeln agile Teams eine initiale Architekturrichtung und passen sie im Laufe der Zeit an, während sie mehr über das Projekt und die Anforderungen erfahren.

Inkrementelle Entwicklung: Die Architektur wird schrittweise entwickelt, wobei es sich mit jeder Iteration weiterentwickelt und den sich ändernden Bedürfnissen des Projekts angepasst wird.

Enge Zusammenarbeit: Architekten arbeiten eng mit dem Entwicklungsteam zusammen, um sicherzustellen, dass die Architekturprinzipien in den laufenden Entwicklungsprozess integriert werden. Architektur wird in vielen agilen Ansätzen von Anfang mitgedacht. So kann der Architekt einem Team zugeordnet sein und seine Tätigkeiten innerhalb des Teams
ausüben. So wird sichergestellt, dass Architekturprinzipien in den Entwicklungsprozess von Stunde null mitgedacht werden.

Einfache Kommunikation: Anstatt umfangreicher Dokumentation bevorzugt das agile Architekturvorgehen eine klare und verständliche Kommunikation, um die Architekturentscheidungen im Team zu teilen.

Schnelles Feedback: Durch häufige Auslieferungen von funktionierender Software und Prototypen erhalten Architekten kontinuierliches Feedback durch die Stakeholder, Nutzer und ggf. Kunden im Review. Während des Sprints können je nach Wunsch Personen eingeladen werden. Der PO achtet darauf, dass er oder sie Feedback gibt.

Evolutionäre Architektur: Die Architektur entwickelt sich ständig weiter, um den sich ändernden Anforderungen gerecht zu werden. Dies ermöglicht einen Fokus auf das Wesentliche und trägt dazu bei, unnötige Komplexität zu vermeiden.

Risikoreduktion: Durch das frühe Erkennen von potenziellen Architekturproblemen und die Möglichkeit, Gegenmaßnahmen zu ergreifen, werden Risiken minimiert.

Architekturarbeit iterativ und agil gestalten – Risikogetriebene Architekturarbeit

Risikogetriebene Architekturarbeit bezieht sich auf den Ansatz, bei dem die Identifikation, Bewertung und Behandlung von Risiken eine zentrale Rolle bei der Entwicklung und Gestaltung der Softwarearchitektur spielt. Anstatt sich ausschließlich auf technische oder funktionale Aspekte zu konzentrieren, legt dieser Ansatz den Schwerpunkt auf die Einschätzung und Minderung von Risiken, die sich auf den Erfolg des Projekts auswirken könnten.

Die Grundidee hinter der risikogesteuerten Architekturarbeit besteht darin, die kritischen Risiken zuerst anzugehen, um frühzeitig sicherzustellen, dass das Projekt auf einem stabilen Fundament aufgebaut wird. Dies beinhaltet:

–  Identifikation von Risiken: Die Architekten analysieren und identifizieren potenzielle Risiken in Zusammenhang mit den Anforderungen, der Technologie, der Skalierbarkeit, der Performance, der Sicherheit und anderen relevanten Faktoren.

Bewertung von Risiken: Die identifizierten Risiken werden bewertet, um festzustellen, welche davon die größte Bedrohung für den Erfolg des Projekts darstellen.

Priorisierung von Risiken: Basierend auf der Bewertung werden die Risiken nach ihrer Dringlichkeit und Auswirkung priorisiert. Diejenigen mit höherer Priorität werden zuerst angegangen.

Entwicklung von Risikominderungsstrategien: Für die identifizierten und priorisierten Risiken werden Strategien entwickelt, um sie zu mindern oder zu verhindern. Dies kann durch technische Lösungen, Architekturanpassungen oder alternative Herangehensweisen erfolgen.

Prototyping und Validierung: In einigen Fällen kann es erforderlich sein, Prototypen oder Proof of Concepts zu erstellen, um die Wirksamkeit der gewählten Risikominderungsstrategien zu überprüfen.

Iterative Anpassung: Während des Entwicklungsprozesses wird die Risikobewertung laufend überprüft und aktualisiert, um sicherzustellen, dass neue Risiken erkannt und behoben werden.

Indem die Architekten die Risiken von Anfang an berücksichtigen und angehen, können potenzielle Probleme frühzeitig erkannt und gemindert werden. Die Wahrscheinlichkeit von Fehlern und Verzögerungen wird dadurch verringert. Dieses Vorgehen trägt dazu bei, dass die Softwarearchitektur solide, stabil und den Anforderungen des Projekts gerecht wird.

 

 

Rollenmodelle für Architekten in agilen Projekten

In agilen Projekten können verschiedene Rollenmodelle für Architekten existieren, je nach Größe des Teams, der Art des Projekts und den spezifischen Anforderungen.

Hier sind einige gängige Rollenmodelle für Architekten in agilen Projekten:

Agiler Architekt: Diese Rolle ist für die Gestaltung der Softwarearchitektur verantwortlich, wobei der Schwerpunkt auf Flexibilität, Zusammenarbeit und Anpassungsfähigkeit liegt. Der agile Architekt arbeitet eng mit den Entwicklungsteams und den Produktverantwortlichen zusammen, um sicherzustellen, dass die Architektur die agilen Werte und Prinzipien widerspiegelt.

Architekt als Teil des Entwicklungsteams: In kleinen agilen Teams kann der Architekt Teil des Entwicklungsteams sein und aktiv am Coden und an der Umsetzung von Features teilnehmen.
Dies ermöglicht eine enge Zusammenarbeit und eine kontinuierliche Ausrichtung der Architektur auf die Entwicklungsarbeiten.

Technologieberater: Ein Architekt kann als Technologieberater dienen, der das Team bei der Auswahl geeigneter Technologien, Frameworks und Tools unterstützt. Sie helfen dabei, sicherzustellen, dass die gewählten Technologien die Anforderungen des Projekts erfüllen und gut in die Architektur passen.

Architekturcoach: Diese Rolle befasst sich damit, das Team in Bezug auf bewährte Methoden, Architekturmuster und Prinzipien zu schulen. Der Architekturcoach fördert das Verständnis für Architekturpraktiken und hilft dem Team, bessere technische Entscheidungen zu treffen.

Evangelist für Qualität und Wartbarkeit: Architekten können die Verantwortung übernehmen, sicherzustellen, dass die entwickelte Software qualitativ hochwertig, wartbar und skalierbar ist. Sie setzen Standards für Codequalität und arbeiten mit dem Team zusammen, um sicherzustellen, dass diese Standards eingehalten werden.

Architekturstratege: Diese Rolle übernimmt die langfristige Sicht auf die Architektur und hilft, eine Vision für die technische Entwicklung des Produkts zu definieren. Sie berücksichtigen technologische Trends, organisatorische Ziele und zukünftige Anforderungen, um sicherzustellen, dass die Architektur langfristig erfolgreich bleibt.

Es ist wichtig zu beachten, dass die Rollenmodelle für Architekten in agilen Projekten variieren können. In jedem Fall ist die Zusammenarbeit zwischen den Architekten, dem Entwicklungsteam, den Produktverantwortlichen und anderen relevanten Stakeholdern entscheidend. So kann sichergestellt werden, dass die Architektur den Bedürfnissen der Kunden, Nutzer und Stakeholder gerecht wird und agil umgesetzt wird.

 

Möglichkeiten, Stakeholder in die agile Architekturarbeit zu involvieren

Die Einbeziehung von Stakeholdern in die agile Architekturarbeit ist entscheidend, um sicherzustellen, dass die entwickelte Software den Anforderungen und Erwartungen aller relevanten Parteien entspricht. Wir möchten drei Möglichkeiten betrachten, wie Stakeholder in die agile Architekturarbeit eingebunden werden können:

Regelmäßiges Feedback und Reviews: Durch das Abhalten regelmäßiger Meetings oder Reviews, erhalten Stakeholder die Gelegenheit, die Ergebnisse des Sprints zu betrachten und Feedback zu geben. Dies geschieht in Form von Demos, Präsentationen oder Diskussionen. Das Team kann gemeinsam mit den Stakeholdern experimentieren, wie das Review gestaltet werden soll. Stakeholder können ihre Anforderungen, Erwartungen und Bedenken kommunizieren, was zu einer kontinuierlichen Anpassung und Verbesserung der Architektur führt.

Involvieren in Planung und Priorisierung: Durch die Einladung von Stakeholdern zur Teilnahme an Planungssitzungen, in denen kommende Aufgaben und Prioritäten besprochen werden, erhalten diese die Möglichkeit, ihre Perspektiven mit einzubringen und sicherzustellen, dass die Architekturarbeit die für sie wichtigen Aspekte berücksichtigt. In aller Regel sollte bei einem Scrum Vorgehen nicht die gesamte Stakeholderschaft im Planning
vertreten sein. Der PO ist die Stimme des Kunden und des Nutzers, er oder sie muss priorisieren welche Backlog Stories eingeplant werden gemeinsam mit den Devs.

User Stories und Anforderungen: Arbeiten Sie mit den Stakeholdern zusammen, um User Stories und Anforderungen zu erstellen oder zu überarbeiten, die in die Entwicklung der Architektur einfließen. Diese User Stories können als Grundlage für die Architekturarbeit dienen und sicherstellen, dass die entwickelte Architektur die gewünschten Funktionen und Eigenschaften erfüllt.

Die Schlüsselkomponente in allen diesen Ansätzen ist die offene Kommunikation und enge Zusammenarbeit mit den Stakeholdern. Dies ermöglicht es, Missverständnisse zu vermeiden, frühzeitig auf Feedback zu reagieren und sicherzustellen, dass die Architektur die Bedürfnisse und Erwartungen aller Beteiligten erfüllt.

AGILA – Agile Softwarearchitektur | Part 1/3

AGILA – Agile Softwarearchitektur | Part 1/3

AGILA – Agile Softwarearchitektur

Teil 1

 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.

Requirements for Software Architects

Requirements for Software Architects

Requirements for Software Architects

Moderne Techniken des Requirement Engineerings

 

Herzlich Willkommen zum letzten Teil unserer Blog-Serie, in der wir moderne Techniken des Requirement Engineerings vorstellen.

Techniken

Wir haben nun erklärt, worum es sich bei Anforderungen handelt und wie die Reise einer Anforderung von Erhebung bis zur Architektur aussieht und wer daran beteiligt ist. Wir haben auch gesehen, welche Risiken damit einhergehen, wenn Anforderungen nicht genügend Aufmerksamkeit entgegengebracht wird.
Im Folgenden möchten wir nun einige Techniken aufzeigen, welche die Arbeit mit Anforderungen vereinfachen oder verbessern können.

Agile Techniken zum Erstellen, Pflegen und Priorisieren von Funktionalen Anforderungen
Produktvision

Die Produktvision ist das langfristige Ziel, das ein Unternehmen anstrebt. Ziel ist es, ein Produkt zu schaffen, das einen Zweck erfüllt. Produktvision beschreibt, was herauskommen soll also das „Was“.

Eine von den besten und klar ausformuliertesten Visionen stammt von J.F. Kennedy – die erste Mondlandung.

 President Kennedy speak to Congress on May 25th, 1961

Commander Neil Armstrong working at an equipment storage area on the lunar module, Credits: NASA

Ein Team mit einer guten, klaren, greifbaren Produktvision kann ein besseres Produkt entwickeln als ein Team ohne Vision oder nur mit einer vagen Vorstellung davon, wohin die Reise gehen soll.

Stakeholder Analyse

Es ist einer der wichtigsten Aufgaben eines Product Owners (BA, RE), als auch des Softwarearchitekten, diejenigen zu identifizieren, die in einem Projekt involviert sind. Es gibt viele verschiedene Methoden für die strukturierte Stakeholder Analyse. Zur gezielten Stakeholder-Identifikation kann die Stakeholder Matrix ungemein helfen:

Stakeholder Gewichtung – Wie behandle ich meine Stakeholder?

Überwachung (geringes Interesse, geringe Einfluss und somit Auswirkung):

Diese Stakeholder sollten gezielt informiert werden, ohne mit ihnen unrelevante Informationen zu teilen. Eine sorgfältige Abstimmung der Kommunikation mit diesen Partnern ist notwendig, um Relevanz sicherzustellen.

Zufriedenstellen (viel Einfluss, geringes Interesse):

  • Es ist wichtig, ausreichend Zeit in diese Anspruchsgruppen zu investieren, um ihre Zufriedenheit zu gewährleisten, ohne jedoch ein Gefühl der Überlastung zu erzeugen.

Informieren (geringe Wirkung, hohes Interesse):

  • Informieren Sie diese Stakeholder entsprechend. Und sammeln Sie relevante Daten, um größere Probleme zu vermeiden. Stakeholder dieser Kategorie stehen Projektdetails oft kritisch gegenüber.

In engem Kontakt bleiben (hohe Wirkung, hohes Interesse):

  • Diese Stakeholder sind Hauptakteure. Sie sollten vollständig in das Projekt eingebunden werden. Nehmen Sie sich genug Zeit, um sie zufrieden zu stellen.
Persona

Mithilfe von Personas versucht man einen bestimmten Anwendertyp zu beschreiben. Dabei versetzt man sich in die Person hinein, um seine Situation zu verstehen und daraus seine Bedürfnisse zu definieren. Eine Persona ist ein gutes Mittel, um Anforderungen zu erheben. Ihre Nutzung ist oft sinnvoll, wenn Kundenbefragungen (ein Werkzeug für die Anforderungserhebung) unmöglich sind. Zudem wird Persona bei großen Produkten/Systemen genutzt, die von einer breiten Gruppe Endnutzern bedient werden.

Beispiel:

Herr Mathias ist 45, verheiratet und hat zwei Kinder. Er arbeitet als Qualitätsbeauftragter für die Bundesagentur für Arbeit. Er fährt jeden Morgen Zug von Mannheim nach Frankfurt und ist stolz darauf, seit 15 Jahren einen bedeutenden Beitrag zur Effizienz und Wirksamkeit der Agentur geleistet zu haben. In seiner Freizeit verbringt er Zeit mit seinen Freunden in einer Gaststätte in der Altstadt, wo sie lebendige Gespräche führen und gemeinsame Interessen teilen.

In diesem Beispiel ist die Beschreibung der Persona kürzer gehalten. In der Praxis kann diese eine komplette Seite befüllen. Wichtig bei der Verfassung von Personas ist die Empathie, also die Berücksichtigung von besonderen Details und Emotionen. Nur so kann man einen Kunden oder Endnutzer richtig verstehen.

Agile Techniken zum Dokumentieren von Anforderungen
Anwendungsfälle (Use Cases)

Use Cases beschreiben eine Anforderung oder Features eines Produktes aus Kundensicht.

Ziel ist, eine (erste) Beschreibung der Funktionalität des zu entwickelnden Produkts in der Sprache des Kunden zu bekommen.

Das hat einige Vorteile:

  • Kundenbedürfnisse können besser und richtig verstanden werden, da sie in seinen eigenen Worten ausgedrückt werden
  • Es ist eine gute Entscheidungsbasis für die Priorisierung von Anforderungen
  • Missverständnisse verringern sich, sodass keine unerwünschten Anforderungen in das Produkt aufgenommen werden.
  • Scope: Nur das aufzunehmen, was auch zum System gehören sollte

Nach der Festlegung der verschiedenen Anwendungsfälle, die vom Kunden oder mit ihm zusammen formuliert wurden, können diese Anwendungsfälle weiter detailliert und verfeinert werden.

An dieser Stelle kommen Use Case Dokumente (Name des Anwendungsfalls, Vorbedingungen, Normalablauf, Alternativablauf, Nachbedingungen) und UML (z.B. Anwendungsfall Diagramm, Aktivitätsdiagram) ins Spiel, um die Anforderungen an das System zu verdeutlichen und zu visualisieren. In den weiteren Schritten (Softwarearchitekten Rolle) kommen auch weitere Diagramme zur Darstellung und Definition von internen Strukturen und Abläufen, um die Softwarearchitektur zu visualisieren.

User Stories

User Stories (Nutzergeschichten) sind prägnante Beschreibungen eines Features aus Anwendersicht. Wichtig dabei ist, dass sie in ein bis zwei Sätzen formuliert werden.

Die Story soll erzählen, warum der Anwender eine bestimmte Funktionalität benötigt und welche Ziele oder Nutzen er damit erzielen kann. Im Gegensatz zu den klassischen Techniken im Requirements Engineering gibt die User Story nicht die Lösung vor, wie das Feature umgesetzt wird, sondern nur das, was umgesetzt (benötigt) wird. In einer User Story wird kein „Wie“, sondern nur das „Was“ beschrieben. Dokumentiert werden sollte von der User Story der Hintergrund, Begründung, Ziele oder Nutzen, warum dieses bestimmte Feature implementiert werden soll.

Im agilen Umfeld hat sich ein Satz-Musteretabliert, dass es immer drei Hauptelemente sind, die den Wert einer Funktionalität in ihrer Nutzung abbilden: Rolle, Feature und Begründung (Wert/Nutzen usw.).

Die Formulierung kann wie folgt aussehen:

Als <Rolle> möchte ich <Feature>, weil <Begründung>

Als <Rolle> möchte ich <Feature>, um <Nutzen / Wert> zu bekommen.

 

Beispiele:

  1. Als pendelnder Passagier möchte ich häufig gebuchte Zugsstrecken möglichst schnell wieder buchen können, um Zeit beim Buchen zu sparen.
  2. Als Personalleiter möchte ich die beantragten Urlaubsanträge direkt im System unterschreiben können, um den Urlaub genehmigen zu können, ohne die Urlaubsanträge herunterladen zu müssen.
Agile Techniken zur Spezifikation von User Stories
Story Mapping

Priorisierung von Anforderungen und die Pflege von Product Backlog Einträgen (=PBI Product Backlog Items) gehören zu den alltäglichen Aufgaben eines Product Owners. Story Mapping ist ein sehr gutes Werkzeug, um diese Herausforderung zu meistern.

Die Methode kann man sowohl zu Beginn, um überhaupt User Stories ableiten zu können, als auch während des Entwicklungsprozesses verwenden. Da es im agilen Umfeld in jedem Falle iterativ und schrittweise entwickelt wird, werden nach jedem Kundenfeedback oder erforderlichen Anpassung neue User Stories entstehen.

Eine Story Map besteht aus zwei Dimensionen (horizontale und vertikale). In der ersten horizontalen Dimension stehen die groben Anforderungen. In der zweiten vertikalen Dimension werden diese Anforderungen verfeinert. Je tiefer man geht, desto mehr nimmt der Detaillierungsgrad zu. Ziel ist es, eine Anforderung aus Sicht des Kunden in verfeinerten und kleinen Tasks zu zerlegen, um diese dann umsetzen zu können. Das Story Mapping kann daher auch als Verwaltungstechnik verstanden werden.

 

Agile Techniken zur Verwaltung von Anforderungen
Epics

Die erstellten User Stories kann man jetzt (oder alternativ in einem Schritt vorher) in Epics zusammenfassen. Diese Epics gruppieren zusammenhängende User Stories. Dabei erfolgt die Zusammenfassung zum Beispiel basierend auf übergeordneten Geschäftszielen oder der Möglichkeit, sie als eigenständige, bepreiste Dienstleistungen anzubieten. Zum Beispiel könnten User Stories wie „Antragstellung für Kindergeld“, „Antragsprüfung durch Sachbearbeiter“ und „Kindergeldauszahlung“ unter dem Epic „Kindergeldverwaltung“ gebündelt werden.

Vorteile:

  • Divide et impera“: Das gesamte zu entwickelnde System kann zu Beginn des Projektes in Teilbereiche erfasst werden.
  • Projektstrukturierung, das heißt, es können Teile des Systems zu Projektbeginn abstrakt beschrieben werden, ohne früher ins Detail gehen zu müssen.
  • Ein wichtiger Vorteil bei der Verwendung von Epics ist die Kontrolle über das Fachkonzept oder Product Backlog (User Stories Liste). Ansonsten kann man bei größeren Projekten, verbunden mit einem Product Backlog mit hunderten User Stories, schnell den Überblick verlieren.
Techniken zur Identifikation von architekturrelevanten Anforderungen

Einige der effektivsten Methoden, um ASRs zu ermitteln, sind:

  • Fragebogen / Checkliste
  • Stakeholder-Befragungen
  • Qualitätsattribut-Workshops (QAW)*
Strukturiertes Interview

Ein strukturiertes Interview kann helfen blinde Flecken bei der Erhebung von insbesondere nichtfunktionalen Anforderungen zu identifizieren und wird mit Stakeholdern individuell durchgeführt. Dennoch müssen gefundene Anforderungen nach einem Interview noch hinsichtlich ihrer Relevanz für die Architektur eingeschätzt werden. Auch helfen Anforderungen noch nicht zwingend ein messbares und entscheidbares Merkmal (z.B. in Form eines Qualitätsszenarios) abzuleiten. Dies kann bei Bedarf allerdings auch als Teil des Interviews mit den Stakeholdern durchgeführt werden.

Diese Technik macht sich zunutze, dass es viele Aufstellungen und Kategorisierungen möglicher Qualitätsanforderungen gibt. Die Befragung anhand von bestehenden Aufstellungen zu gestalten, hilft Stakeholdern oft Bereiche von Anforderungen zu identifizieren, welche sie zuvor nicht in Betracht gezogen haben.

 Einige Modelle für die Strukturierung von qualitativen Merkmalen sind zum Beispiel

Ein beispielhafter Ablauf für ein Interview kann wie folgt aussehen:

Für das Interview wird für jede Kategorie eine beispielhafte Anforderung an das System vorbereitet.

Danach wird dem Stakeholder das Ziel des Interviews und die Methode vorgestellt.

Im Anschluss wird zusammen mit dem entsprechenden Stakeholder das Modell Kategorie für Kategorie durchgegangen. Sind von diesem Stakeholder in dieser Kategorie bereits Anforderungen bekannt, so wird eine Kategorie ggf. ausgelassen.

Dabei werden alle entstehenden Anforderungen aufgenommen. Bei der Aufnahme von Anforderungen wird zusätzliche gefragt, wie die Anforderung dem Stakeholder hilft, sein Ziel zu erreichen. So wird die Relevanz der Anforderung verifiziert, da diese Art von Interview die Gefahr birgt eine übergroße Menge an Anforderungen zu erzeugen. Zudem wird es möglich einen Überblick über die unterliegenden Interessen des Stakeholders zu erlangen. Zuletzt wird sich beim Stakeholder für seine Zeit bedankt.

Im Anschluss an das Interview werden die aufgenommenen Anforderungen mit bestehenden Dokumentationen abgeglichen und neue Anforderungen aufgenommen. Sollten Anforderungen im Widerspruch zu bisher erfassten Anforderungen stehen, so wird Rücksprache mit dem Stakeholder und ggf. PO, BA und RE gehalten. Zuletzt werden die Anforderungen hinsichtlich architektureller Signifikanz bewertet.

Techniken zur Abnahme von Anforderungen

BDD

 

Die verhaltensgesteuerte Entwicklung, auch als anforderungsgetriebene Softwareentwicklung bezeichnet, wurde erstmals 2003 von „Dan North“ beschrieben und ist seitdem weitergewachsen. Dan North entwickelte auch das erste Framework zur Implementierung von BDD in JBehave.

BDD ist eine weitere agile Softwareentwicklungstechnik, die die Zusammenarbeit zwischen verschiedenen Beteiligten, insbesondere beim Gespann Softwarearchitekt / Product Owner / Business Analyst, in Softwareentwicklungsprojekten verbessert. Bei der verhaltensorientierten (verhaltensgetriebenen) Entwicklung werden bei der Anforderungsanalyse Softwareaufgaben, Ziele und Ergebnisse in einer definierten textuellen Form erfasst, die später als automatisierte Tests durchgeführt werden können.

Auf diese Weise kann überprüft werden, ob die Software korrekt implementiert wurde oder weitere Anpassungen benötigt werden.

Die Softwareanforderungen werden in Szenarien formuliert, typischerweise als „Wenn-Dann“-Klauseln“. Dieser Ansatz basiert auf der Sprache des domänengesteuerten Designs (DDD-Domain-Driven Design).

Ziel ist es, ein gemeinsames Verständnis zu entwickeln und einen Übergang von den technischen Anforderungen zur Implementierung zu erleichtern.

Gemäß BDD verwendet man für die Verhaltens-Spezifizierung ein Format, das von User-Story-Spezifikationen (Als Rolle…)  abgeleitet wird.

Jede User Story sollte in gewisser Weise der folgenden Struktur folgen:

Titel

Ein expliziter Titel

Narrativ / Erzählung

Eine kurze Einführung mit folgendem Aufbau:

Als: die Person oder Rolle, die aus der Funktion einen Nutzen zieht;

möchte Ich: die Funktion / Feature;

damit: der Nutzen oder Wert der Funktion.

Akzeptanzkriterium

Eine Beschreibung jedes spezifischen Szenarios der Erzählung mit der folgenden Struktur:

Gegeben: der Anfangskontext zu Beginn des Szenarios in einem oder mehreren Abschnitten;

Wenn: das Ereignis, das das Szenario auslöst;

Dann: das erwartete Ergebnis in einer oder mehreren Klauseln.

Beispiel

Szenario 1: Rückgegebene Ware kommt wieder ins Lager

  • Gegeben ist, dass ein Kunde eine schwarze Hose gekauft hat
  • Und wir daraufhin 3 schwarze Hosen im Lager hatten,
  • Wenn er die Hose zurückgibt und dafür einen Gutschein erhält,
  • Dann werden wir 4 schwarze Hosen im Lager haben.

Es ist ratsam, dass Softwarearchitekt, Business Analyst und Entwickler zusammenarbeiten, um die Szenarien zu entwerfen und die daraus resultierenden Ergebnisse in einem separaten Dokument festgehalten werden.

Fazit

Anforderungen sind ein, wenn nicht der, treibende Faktor der Softwareentwicklung. Deswegen ist die Erhebung, Dokumentation, Spezifikation und Verwaltung der Anforderungen eine der wichtigsten Tätigkeiten in der Softwareentwicklung.

Trotzdem sind auch gute Anforderungen noch kein Garant für Erfolg, wie wir an der Dynamik zwischen Anforderungserhebung und Deklaration als architekturrelevanter Anforderung erkennen können. Offene Kommunikation und ein gemeinsames Verständnis über die Anforderungen und dem was daraus gemacht wird, inklusive entsprechender Abnahmen sind also ebenso essenziell.

Dies zeigt die Notwendigkeit für Requirements Engineer, Product Owner, Business Analyst und Softwarearchitekten zusammenzuarbeiten und eine gemeinsame Sprache und Basis zu finden, um den Anforderungen im Interesse des Projekterfolges Konsistenz zu verleihen, nicht nur einmalig, sondern iterativ und fortwährend.

Damit schließt unsere Blog-Serie zu Requirements for Software Architects auch ab. Vielen Dank fürs Lesen!

 

Quellen
  • Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978-0-13-703515-1.
  • Andreas Wintersteiger, Scrum Schnelleinstieg
  • McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
  • https://t2informatik.de/
  • North, Introducing Behaviour Driven Development
  • Dan North et al.: Question about Chapter 11: Writing software that matters. (Nicht mehr online verfügbar.) Archiviert vom Original am 7. November 2009; abgerufen am 9. November 2011 (englisch): „The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003-2004 – this was a valid description. Now it only covers a small part of the BDD proposition“
  • Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
  • „Lessons learned: Using Scrum in non-technical teams“. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
  • Ken Schwaber; Jeff Sutherland. „The Scrum Guide“. Scrum.org. Retrieved October 27, 2017.
  • https://www.scrum.org/
  • http://agilemanifesto.org/
  • https://www.isaqb.org/
  • https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/
Abbildungen

Abbildung 1: https://www.nasa.gov/topics/history/features/kennedy_moon_speech.html

Abbildung 2: https://astrobiology.nasa.gov/missions/apollo-11/

Abbildung 3: Stakeholder Gewichtung — Wie behandle ich meine Stakeholder? | FelixKlauke (medium.com)

Requirements for Software Architects

Requirements for Software Architects

Requirements for Software Architects

Agile Requirements Engineering und seine Rollen
 

 

Willkommen zurück zum zweiten Artikel in unserer Blog-Serie „Requirements for Software Architects“. Wir widmen uns in diesem Beitrag dem agilen Requirements Engineering und seinen Rollen.

Grundbegriffe von Softwarearchitektur

Definition

Es befinden sich zahlreichen Definitionen von Softwarearchitektur. Wir beschränken uns deshalb nur auf zwei davon:

  1. Die grundlegenden Konzepte oder Eigenschaften eines Systems in seiner Umgebung, verkörpert in seinen Elementen, Beziehungen und in den Prinzipien seines Designs und seiner Entwicklung. (ISO/IEC/IEEE 42010)
  2. Die Softwarearchitektur einer Software oder Computersystems ist die eine oder mehrere Strukturen des Systems, welche die Softwareelemente, die extern sichtbaren Eigenschaften dieser Elemente und die Beziehungen zwischen ihnen, umfassen. (Bass, Clements, Kazman Software Architecture in Practice, Addison Wesley, 2003.) 
Aufgaben von Softwarearchitekten

Softwarearchitekten haben die Aufgabe die Softwarearchitektur aktiv zu gestalten und ihre Umsetzung und Wirksamkeit sicherzustellen. Dabei sollen sie im Wesentlichen die folgenden Ziele in einem Projekt erreichen:

  • Unterstützung von Entwurf, Implementierung, Pflege und Betrieb des Systems
  • Erfüllbarkeit der funktionalen Anforderungen sicherstellen
  • Qualitätsanforderungen in gewünschtem Maße erreichen
  • Komplexität systematisch reduzieren
  • Architekturrelevante Richtlinien für Implementierung und Betrieb spezifizieren

Die Arbeit eines Architekten kann dabei in sechs Tätigkeiten gegliedert werden:

  • Anforderungen klären
  • Strukturen entwerfen
  • Querschnittskonzepte erstellen
  • Architekturen bewerten
  • die Umsetzung begleiten
  • Architekturen kommunizieren

Der erste Schritt „Anforderungen klären“ stellt dabei die Schnittstelle unter anderem zum Requirements Engineering dar. Hierbei probiert der Architekt herauszufinden, welche Anforderungen architektonisch relevant sind.

ASR: Architektonisch bedeutende Anforderungen

Architecturally Significant Requirements (ASRs) umfassen die wichtigsten architektonischen Anforderungen. Dabei ist es egal, ob es sich um Funktionale oder nicht Funktionale Anforderungen handelt. Somit sind ASRs Anforderungen, die sich direkt auf das Architekturdesign auswirken.

Ein Architekt sollte alle NFRs mit den Stakeholdern abgestimmt und dokumentiert haben. Es ist üblich, dass eine funktionale oder nichtfunktionale Anforderung in unterschiedlichen Phasen des Software-Lebenszyklus den Status einer ASR erlangen oder verlieren kann.

Sein Entwurf und insbesondere seine Entwurfsentscheidungen sollten daher transparent machen auf Basis welcher ASRs eine Entscheidung oder ein Entwurf beruht, um Nachvollziehbarkeit zu erlangen und eine wirksame Architektur sicherzustellen.

Abbildung 9: Architecture in Technical Perspective View

Um diese zu erreichen, sollen Softwarearchitekten diese Anforderungen stets überprüfen und die Unterschiede und Besonderheiten erklären. Insbesondere der PO, RE und BA, aber auch andere Akteure, sollten für ein besseres Verständnis und eine bessere Kommunikation sensibilisiert werden .

Einige gängige Quellen für ASRs sind,

  • Anforderungsdokumentation (z.B. Product Backlog)
  • Vereinbarung zum Servicelevel (SLA)
  • Fachwissen
  • Anwendbare Standards, Richtlinien oder Richtlinien

 Solange ASRs in der Dokumentation vorhanden sind, können sie von Softwarearchitekten analysiert und verbessert werden. Sind sie jedoch nicht oder unvollständig dokumentiert, so besteht das Risiko einer unwirksamen Architektur. Eine unwirksame Architektur ist nicht in der Lage die funktionalen und nichtfunktionalen Anforderungen zu erfüllen und stellt nicht nur ein signifikantes Projektrisiko dar, sondern ist mit fortschreitender Projektlaufzeit zudem teuer zu ändern.

Architecturally Significant Requirements (ASRs) müssen deshalb Vorrang bei der Identifizierung und Dokumentation haben, um das Architekturdesign in die richtige Richtung zu leiten.

Agile Requirements Engineering

Wie bereits zuvor etabliert sollen Anforderungen nicht nur korrekt erhoben werden, sondern auch verständlich kommuniziert und ihre Erreichung geprüft werden. Dabei sind Anforderungen stetig um Wandel und bedürfen Pflege.

Agile Requirements Engineering ist ein kooperativer, iterativer und inkrementeller Ansatz, der dies erreichen soll. Er gliedert sich groß in zwei Phasen: Die Definitionsphase (Anforderungserstellung) und die eigentliche Umsetzungsphase (Entwicklung). Im Gegensatz zu den herkömmlichen Vorgehensweisen laufen die beiden Phasen, Definition und Implementierung, parallel ab.

Daraus ergeben sich viele Vorteile. Zu diesen Vorteilen gehört die schnelle und flexible Reaktion auf veränderte oder neue Gegebenheiten.

Dies wird dadurch gewährleistet, dass die Anforderungsbeschreibung nie abgeschlossen und während der gesamten Entwicklungsdauer ständig neu erfasst und angepasst wird. Das heißt, wenn einzelne Aspekte eines Prozesses von den akzeptablen Grenzen abweichen oder das resultierende Produkt nicht akzeptabel ist, muss der Prozess oder die erzielten Ergebnisse angepasst werden. Eine Anpassung sollte so schnell wie möglich erfolgen, um weitere Abweichungen zu reduzieren. Dieser Ansatz folgt vier Zielen:

  1. Kenntnis der relevanten Anforderungen auf einem angemessenen Detaillierungsgrad (zu jedem Zeitpunkt während des Systementwicklungsprozesses).
  2. Ausreichende Übereinstimmung über Anforderungen unter den Stakeholdern erreichen.
  3. Erfassen und Dokumentieren der Anforderungen gemäß der Einschränkungen und Vorgaben der Organisation.
  4. Durchführung aller anforderungsbezogenen Aktivitäten gemäß den Prinzipien des agilen Manifests.

Requirements Engineering Aktivitäten sind sehr weit gefächert und von der Art des zu entwickelnden Systems und der Organisationsspezifikation abhängig. Nichtsdestotrotz gehören auch im agile Requirements Engineering folgende vier zentrale Tätigkeiten, die von IREB etabliert wurden, dazu:

 

  • Anforderungserhebung: Die Anforderungen werden anhand unterschiedlicher Methoden möglichst effizient, vollständig und fehlerfrei ermittelt. Auch Detaillierung und Verfeinerung gehören dazu.
  • Anforderungsdokumentation: Die Anforderungen müssen adäquat und qualitativ hochwertig beschrieben werden, um die Anforderungsspezifikation mit allen relevanten Anforderungen entstehen zu lassen.
  • Anforderungsprüfung und -abstimmung: Die Anforderungsspezifikation wird auf ihre Gesamtqualität geprüft. Dazu gehört auch die inhaltliche Abstimmung mit den Stakeholdern.
  • Anforderungsverwaltung: Auch Anforderungsmanagement genannt, geht es bei der Verwaltung der Anforderungen darum, sie zur Nutzung bereitzustellen, die Versionsstände zu pflegen, eine Priorisierung zu erstellen, etc.
Der Unterschied zwischen Requirements Engineering und Requirements Management

 Die Begriffe Requirements Engineering und Requirements Management werden oft fälschlicherweise als Synonym verwendet. Wenn man von einem ganzheitlichen Requirements-Engineering-Ansatz spricht, muss man das streng genommen immer im Sinne des Anforderungsmanagements tun. Rückblickend auf die bereits genannten vier zentralen Aktivitäten bezieht sich Requirements Engineering hauptsächlich auf die ersten drei Punkte. Requirement Engineering, was ins Deutsche übersetzt wird, bedeutet Anforderungsmanagement und umfasst damit die vierte zentrale Aktivität.

Die beiden Fachtermini sind jedoch untrennbar miteinander verbunden und gehen Hand in Hand mit Requirements Management: Ohne Ermittlung gibt es keine Verwaltung und ohne effiziente Verwaltung und Aufbereitung hat die Ermittlung von Anforderungen keinen Nutzen.

Die Product Owner (PO), Business Analyst (BA) und Requirements Engineer (RE) Rollen

 Agiles Requirements Engineering geschieht nicht ad-hoc, sondern über unterschiedlichen Rollen. In der Praxis kommt es oft vor, dass es nur eine Rolle gibt (wie PO, BA, RE oder alle zusammen). Unabhängig davon wie viele Rollen in der Praxis vorhanden sind, kann die Unterteilung genutzt werden, um die unterschiedlichen Tätigkeiten und Verantwortlichkeiten des Requirements Engineering und Management gewinnbringend zu gliedern und die eigene Arbeit zu strukturieren.

Der Product Owner ist für die Wertsteigerung, genauer gesagt die Rentabilität (= ROI, Return of Investment) verantwortlich, nicht nur was das Produkt angeht, sondern auch in Bezug auf das Projektteam. Es handelt sich also um eine anspruchsvolle Aufgabe. Hierbei sind ihm drei zentrale Aufgaben zugeordnet:

  1. Vertretung der Kundeninteressen
  2. Zusammenarbeit mit dem Entwicklungsteam und Scrum Master
  3. Verwaltung des Product Backlogs

Dabei sollte er die richtige Funktionalität in der richtigen Priorität ins Projekt bringen. Daraus abgeleitet sollte er die folgenden Skills und Aufgaben meistern können:

  • Stakeholder Analyse
  • Erhebungstechniken
  • Konfliktmanagement
  • Priorisierung (z.B. Priority Poker)

Ähnlich zur PO-Rolle sollte der Business Analyst (BA) über Kreativitäts- und Erhebungstechniken verfügen. Zudem unterstützt er den Product Owner bei der Erhebung fachlicher Anforderungen, deren Akzeptanzkriterien und der Prüfung, ob und wie die Anforderungen zu den Geschäftsprozessen passen.

Zu guter Letzt kümmert sich der Requirements Engineer (RE) für die nachhaltige Spezifizierung von Anforderungen und ihre Übersetzung in das technische Umfeld.

Alle drei Rollen sollten über die folgenden Skills verfügen:

  • Stakeholder Analyse
  • Kreativitätstechniken
  • Erhebungstechniken (typischerweise mittels Befragung, Design Thinking, Persona usw.),
  • Dokumentationstechniken
  • Modellierung (typischerweise mittels UML)
  • Priorisierung von Anforderungen

Alle diese Skills können je nach Bedarf und Aufgabengebiet verwendet werden.

 

Welche verschiedenen modernen Techniken in Requirement Engineerings eingesetzt werden können, sehen wir uns im nächsten und letzten Teil der Blog-Serie an. Wir freuen uns schon Sie wiederzusehen.

 

Quellen
  • Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978-0-13-703515-1.
  • Andreas Wintersteiger, Scrum Schnelleinstieg
  • McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
  • https://t2informatik.de/
  • North, Introducing Behaviour Driven Development
  • Dan North et al.: Question about Chapter 11: Writing software that matters. (Nicht mehr online verfügbar.) Archiviert vom Original am 7. November 2009; abgerufen am 9. November 2011 (englisch): „The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003-2004 – this was a valid description. Now it only covers a small part of the BDD proposition“
  • Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
  • „Lessons learned: Using Scrum in non-technical teams“. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
  • Ken Schwaber; Jeff Sutherland. „The Scrum Guide“. Scrum.org. Retrieved October 27, 2017.
  • https://www.scrum.org/
  • http://agilemanifesto.org/
  • https://www.isaqb.org/
  • https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/

 

 

Abbildungen

Abbildung 9: https://media.geeksforgeeks.org/wp-content/uploads/20200704172739/Untitled-Diagram160.png

Requirements for Software Architects

Requirements for Software Architects

Requirements for Software Architects

Mit Requirements Engineering zu den besten Anforderungen

 

 

Herzlich Willkommen zu unserer neuen Blog-Serie, Requirements for Software Architects!
Erfahren Sie in dieser dreiteiligen Reihe etwas über die Signifikanz von Anforderungen Ihrer Kunden, die verschiedenen Rollen des Agile Requirement Engineerings und moderne Techniken.

Abbildungs 1: Wie Projekte wirklich funktionieren

Einführung und Überblick

Requirements Engineering und Softwarearchitektur sind in der Welt der Softwareentwicklung Tätigkeitsbereiche, die große Teilverantwortungen tragen, um Softwareentwicklungsprojekte erfolgreich abzuschließen. Letztlich geht es darum, die Kundenbedürfnisse zu erfüllen und den Kunden zufrieden zu stellen. Um dies zu erreichen, muss man den Kunden richtig verstehen und wissen, was er tatsächlich braucht.
In diesem Stadium sind Anforderungen und deren Management Hauptakteure im Softwareentwicklungsprozess .
Anforderungen sind in Softwareprojekten das Abbild der Kundenwünsche. Sie dienen als zentrale Briefings für fast alle weiteren Tätigkeiten. Die korrekte Erhebung, Erfassung, Überprüfung, Pflege und Verfeinerung von Anforderungen beeinflusst folglich den gesamten Software-Lebenszyklus und ist somit entscheidend für den Erfolg von Softwareentwicklungsprojekten.
Im Software-Lebenszyklus sind die Phasen der Anforderung und der Softwarearchitektur direkt aufeinander folgend und daher besonders stark miteinander verzahnt, fehlerhaftes Anforderungsmanagement hat dementsprechend direkte, schwerwiegende Folgen auf architektonische Entscheidungen.

Abbildung 2: Software-Lebenszyklus

An dieser Stelle geht es nicht nur darum, dass der Requirements Engineer oder der Product Owner die richtigen Anforderungen (von den Kunden) aufgenommen hat, vielmehr geht es darum, dass der Softwarearchitekt den Product Owner richtig versteht und die von ihm bereitgestellten Anforderungen überprüft und analysiert, um darauf aufbauend seine architektonische Entscheidung treffen zu können.
In den folgenden Abschnitten geben wir einen Überblick über Anforderungsmanagement und Softwarearchitektur, bzw. wie sie sich einander ergänzen und gegenseitig beeinflussen. Dazu betrachten wir die beiden Rollen des Softwarearchitekten und eines Product Owners, sowie ihre Verantwortlichkeiten und Aufgaben in Softwareentwicklungsprojekten. Zuvor klären wir einige Grundbegriffe.
Anforderungen Definition und Grundbegriffe

„Requirement“ (englisch) bedeutet so viel, wie „Vorausgesetztes“ oder „verpflichtendes Erfordernis“, aber auch Erwartung. Wie bei vielen Begriffen aus der IT-Welt gibt es für den Begriff „Anforderung“ zahlreiche Definitionen.

Requirements Engineering Board (IREB) definiert Anforderung hingegen als:
• ein Bedürfnis, das von einem Stakeholder wahrgenommen wird.
• eine Fähigkeit oder Eigenschaft, die ein System haben soll.
• eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder eines Eigentums.

Für das International Institute of Business Analysis (IIBA) ist eine Anforderung eine brauchbare Darstellung eines Bedürfnisses, die in der Regel durch Dokumente beschrieben wird.
Daraus abgeleitet können Anforderungen als eine Aussage über den zu erreichenden Merkmalen oder die zu erbringenden Leistungen für eine Software oder System definiert werden.

Arten von Anforderungen

In der Literatur gibt es viele Unterteilungen oder Klassifizierungen von Anforderungen. Zum Zwecke dieses Inhalts betrachten wir nur zwei (bekannte) Hauptkategorien, funktionale (FR) und nicht-funktionale Anforderungen (NFR).
Nichtfunktionalen Anforderungen fallen wiederum in zwei Kategorien: Die Qualitätsanforderung oder Qualitätskriterien und die Einschränkungen (eng. constraints)

Abbildung 3: Gute vs. schlechte Anforderungen

Funktionale Anforderungen

Das „WAS“ legt die Funktionale Anforderungen fest, was das Produkt tun soll. Ein Beispiel:
„Das System soll die geleisteten Arbeitsstunden eines Mitarbeiters für einen bestimmten Zeitraum berechnen.“
Das bedeutet, dass sich die funktionalen Anforderungen lediglich auf die Verhaltensergebnisse beziehen, die die Funktionalität des Systems oder der Software liefern soll.

Nichtfunktionale Anforderungen (NFRs)

Die nicht-funktionalen Anforderungen (NFR) beschreiben, wie gut das System die Leistung erbringen soll und unter welchen Rahmenbedingungen und sind eine Herausforderung für jeden PO. Sie werden typischerweise in zwei Bereiche untergliedert:
• Qualitätskriterien
• Einschränkungen

Qualitätskriterien

… sind Anforderungen, die sich auf ein Qualitätsproblem beziehen, das nicht durch funktionale Anforderungen abgedeckt ist.
Diese werden (z.B. nach Volere) in Ausführungsqualität und Weiterentwicklungsqualität gegliedert.

Ausführungsqualität (während des Betriebs / zur Laufzeit)

  • Zuverlässigkeit (Systemreife, Wiederherstellbarkeit, Fehlertoleranz)
  • Aussehen und Handhabung (Look-and-feel)
  • Benutzbarkeit (Verständlichkeit, Erlernbarkeit, Bedienbarkeit)
  • Leistung und Effizienz (Antwortzeiten, Ressourcenbedarf, Wirtschaftlichkeit)
  • Sicherheitsanforderungen (Vertraulichkeit, Informationssicherheit, Datenintegrität, Verfügbarkeit)
  • Korrektheit (Ergebnisse fehlerfrei)

Weiterentwicklungs- und Evolutionsqualität

  • Betriebs- und Umgebungsbedingungen
  • Wartbarkeit, Änderbarkeit (Analysierbarkeit, Stabilität, Prüfbarkeit, Erweiterbarkeit)
  • Portierbarkeit und Übertragbarkeit (Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit)
  • Flexibilität (Unterstützung von Standards)
  • Skalierbarkeit (Änderungen des Problemumfangs bewältigen)

Eine andere Aufteilung von Nichtfunktionalen Anforderungen findet man in der ISO 25010. Hier werden die Qualitätsanforderungen anhand 8 Kriterien beschrieben.

Abbildung 7: Standard ISO/IEC 25010. Software product quality model

1. Funktionale Eignung
  • Funktionelle Vollständigkeit
  • Korrekte Funktionalität
  • Angemessene Funktionalität
2. Verlässlichkeit
  • Reife
  • Verfügbarkeit
  • Fehlertoleranz
  • Wiederherstellbarkeit
3. Leistungseffizienz
  • Zeitverhalten
  • Ressourcennutzung
  • Kapazitätsaufwand
4. Nutzbarkeit
  • Angemessene Erkennbarkeit
  • Erlernbarkeit
  • Bedienbarkeit
  • Schutz vor Fehlbedienung durch den Nutzer
  • User-Interface Ästhetik
  • Zugänglichkeit
5. Wartbarkeit
  • Modularität
  • Wiederverwendbarkeit
  • Analysierbarkeit
  • Modifizierbarkeit
  • Testfähigkeit
6. Sicherheit
  • Datenschutz
  • Integrität
  • Unmanipulierbarkeit
  • Administrationsfähigkeit
  • Authentifizierbarkeit
7. Kompatibilität
  • Co-Existenz (zu weiterer Software)
  • Interoperabilität
8. Portierbarkeit
  • Anpassungsfähigkeit
  • Installierbarkeit
  • Austauschbarkeit
Einschränkungen

… sind Anforderungen, die den Lösungsraum über das hinaus beschränken, was zur Erfüllung spezifizierter funktionaler Anforderungen und Qualitätsanforderungen erforderlich ist.

Es gibt verschiedene Arten von Einschränkungen, z.B. zeitliche Terminplanbeschränkung, regulatorische oder gesetzliche Beschränkungen usw.

In Softwareprojekten spricht man von Einschränkungen, wenn Faktoren wie Zeit, Geld, Umfang (das sogenannte „Magische Dreieck“) oder Ressourcen, wie Ausrüstung oder Personalmangel das Projekt beeinflussen.

 

Abbildung 8: Das magische Dreieck

Die Einschränkungen hängen auch von dem Tätigkeitsbereich des Unternehmens sowie den Dienstleistungen ab, welches es anbietet.

Im Gesundheitswesen beispielsweise können bestimmte Vorschriften oder Gesetze die Qualität von Software oder sogar die Implementierung der gesamten Softwarearchitektur beeinträchtigen.

Aus allen diesen Gründen ist es wichtig, dass sich der Softwarearchitekt bereits zu Beginn des Projekts mit den verschiedenen Einschränkungen auseinandersetzt und mit den Key Rollen abklärt.

 

Wir freuen uns schon, Sie beim nächsten Artikel unserer Blog-Serie wieder begrüßen zu dürfen – dem Agile Requirements Engineering und seine Rollen.

 

Quellen
  • Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978-0-13-703515-1.
  • Andreas Wintersteiger, Scrum Schnelleinstieg
  • McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
  • https://t2informatik.de/
  • North, Introducing Behaviour Driven Development
  • Dan North et al.: Question about Chapter 11: Writing software that matters. (Nicht mehr online verfügbar.) Archiviert vom Original am 7. November 2009; abgerufen am 9. November 2011 (englisch): „The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003-2004 – this was a valid description. Now it only covers a small part of the BDD proposition“
  • Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
  • „Lessons learned: Using Scrum in non-technical teams“. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
  • Ken Schwaber; Jeff Sutherland. „The Scrum Guide“. Scrum.org. Retrieved October 27, 2017.
  • https://www.scrum.org/
  • http://agilemanifesto.org/
  • https://www.isaqb.org/
  • https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/

 

Abbildungen

Abbildung 1: https://cdn-images-1.medium.com/max/1200/1*ApoaIZicyU0b7Jgg9MMJhw.jpeg

Abbildung 2: ITech Progress CPSA-Foundation Kurs (Präsentation) – Kapitel 1: Grundbegriffe – Einordnung der Softwarearchitektur in Software-Lebenszyklus

Abbildung 3: https://www.softwareone.com/-/media/global/social-media-and-blog/content/requirements-engineering-4-graph1.png?mw=1024&rev=bc1dea2cb4d145c79f1f5b544e3a10cd&sc_lang=de-at&hash=43114D2C3FE79F36503891506BDBA9FA

Abbildung 4: https://www.nasa.gov/images/content/549928main_jfk_speech_226.jpg

Abbildung 5: https://www.nasa.gov/sites/default/files/styles/side_image/public/62297main_neil_on_moon_full.jpg?itok=1c8GTfbJ

Abbildung 6: https://miro.medium.com/max/1762/0*ohypH8bVpf2O0uIc.png

Abbildung 7: https://www.researchgate.net/profile/Lina-Garces/publication/326584873/figure/fig2/AS:652083346808834@1532480193500/Standard-ISO-IEC-25010-Software-product-quality-model-and-system-quality-in-use-model.png

Abbildung 8: https://i.pinimg.com/originals/a1/3c/ed/a13cedd07eb87e2fab0baa483d9877fd.png

Kontrollverlust in Softwaresystemen?

Kontrollverlust in Softwaresystemen?

Kontrollverlust in Softwaresystemen?

Strukturen zur Beherrschung der neuen Unübersichtlichkeit und die Unendlichkeit von Software
DevSecOps

Im Rahmen des Java Forums in Stuttgart am 07.07.2022 hält Holger Tiemeyer einen spannenden Vortrag, welcher sich mit dem Thema „Kontrollverlust in Softwaresystemen?“ befasst.

Im Vorfeld konnten wir mit Holger über seinen Vortrag sprechen und erfahren wichtige Fragestellungen und Ansatzpunkte zu dieser Problematik.

Als studierter Informatiker mit Nebenfach Psychologie verbindet Holger Tiemeyer in seinen Fachvorträgen und Veröffentlichungen aktuelle Themen mit weitergehenden, aus der Psychologie her- oder ableitbaren Aspekten.

Holger Tiemeyer

Wenn du von einem „Kontrollverlust in Softwaresystemen“ sprichst, was können wir hier erwarten?

Holger: Als Berater habe ich in der jüngsten Vergangenheit einige bemerkenswerte Ausprägungen mitbekommen: Der Hype nach der Umsetzung von Microservice-Architekturen setzte sich ungebremst in den Unternehmen durch – und das zu großen Teilen, ohne diesen Trend wirklich zu reflektieren.
Notwendige Fragestellungen wie: „Warum machen wir Microservice-Architekturen?“, „Was sind die Argumente für deren Einführung?“ wurden manchmal nicht gestellt oder beantwortet. Oftmals fußt die Entscheidung für Microservice-Architekturen auf bunten Marketing-Foliensätzen eines/einer bekannten Architekt:in, die den Trend auf einer Konferenz oder in einem Zeitungsartikel als die Lösung vieler offensichtlicher Probleme postuliert hat.

Mit dieser Herangehensweise an die Umsetzung von Microservice-Architekturen nehmen wir etwas in Kauf: Eine verborgene Komplexität, denn wir wissen zu Teilen gar nicht, was sich dahinter tatsächlich verbirgt. Und hierin besteht eine ungemeine Gefahr des Scheiterns eines solchen Vorhabens, denn die explizite Inkaufnahme von etwas Verborgenem äußert sich in Softwareprojekten und ihren Umfeldern in genau dem Moment, wenn Eskalationen zunehmen, Themen zu langsam umgesetzt werden oder Digitalisierung, Modernisierung und neue Anforderungen nur schwer einzubringen sind. In einer extremen oder auch verzweifelten Form fällt u.a. eine Aussage wie: „das wird nicht funktionieren“ oder „das ist nicht umsetzbar“. In der Konsequenz nimmt die eigene Unzufriedenheit oder diejenige von Kunden oder Auftraggebern zu. Der daraus resultierende Aktionismus führt im weiteren Verlauf dazu, dass in einem Projektrahmen nicht mehr pro-aktiv agiert, sondern schlimmstenfalls nur noch reagiert oder das Projekt als gescheitert verurteilt wird.

Es kann potenziell eine Unübersichtlichkeit oder auch ein Chaos, das nicht mehr beherrschbar erscheint – oder schlimmstenfalls sogar ist -, entstehen.

Nehmen wir dieses Chaos also als etwas schicksalhaftes an? Oder möchten wir lieber die Komplexitäten – die aus der Wahl eines geeigneten Architekturstils resultieren – aktiv angehen und beherrschbar halten und die Kontrolle über das Vorgehen der Umsetzung von Softwaresystemen behalten? Was bedeutet dann ein geeigneter Architekturstil?

Und genau diesen Fragestellungen sehe ich mich sowohl in meinen Projekten als auch in meinen Trainings zu flexiblen Architekturmodellen und Cloudinfra gegenübergestellt. Die Teilnehmer:innen dieser Schulungen bitten häufig um Hilfestellungen aus genau den gerade erwähnten Aspekten heraus. Die Lösungsräume erarbeiten wir dann gemeinsam.

Du sprichst Unbewusstes, Komplexität und Chaos an, die wir in der digitalen Welt beherrschen wollen, was ist hier Dein Postulat?

Holger: Laut C.G. Jung fassen wir das Unbewusste bis zum Zeitpunkt des Bewusstmachens als Schicksal auf. D.h. das, was uns nicht bewusst ist, kann als etwas, das evtl. nicht im Detail verstanden oder bewusst wahrgenommen wird aufgefasst- und weiter: als ein Verhängnis einer höheren Macht, die das Leben bestimmt und lenkt, angesehen werden. Es wird somit hingenommen und akzeptiert.

Bezogen auf unsere Softwaresysteme und -architekturen wäre die Frage: Gibt es evtl. Themen, die wir in einer Entscheidungsfindung nicht sehen, die sozusagen im Verborgenen, Unbewussten liegen?

Eine Entscheidung für oder gegen eine Realisierung/Umsetzung oder einen Architekturstil würde evtl. ganz anders gefällt werden, wenn wir uns gewisse Aspekte bewusst machen.

Fundamentaler Ausgangspunkt ist das CAP-Theorem, welches zwar oftmals bekannt ist, doch dessen Auswirkungen auf unsere Entscheidungsfindung gerade im Kontext von Softwarearchitekturen kaum oder gar nicht beachtet wird.

Es geht daher nicht um das Beherrschen des Unbewussten oder der Komplexität, sondern um das Bewusstwerden darüber – über blinde Flecken und Bereiche, die uns in der Entscheidung massiv beeinflussen und die Komplexität reduzieren können – resultierend aus den Ergebnissen, die uns das CAP-Theorem liefert.

Wo hilft uns hierbei das CAP-Theorem genau?

Holger: Das CAP-Theorem liefert uns eine wesentliche Erkenntnis, die uns in der Entscheidungsfindung für gewisse Eigenschaften in verteilten Systemen, ermöglicht: Wir müssen uns für zwei der drei Eigenschaften: Konsistenz, Verfügbarkeit und Partitionstoleranz, entscheiden.

Diese Entscheidung hat einen fundamentalen Einfluss auf die Ausgestaltung und weitergehenden Möglichkeiten eines Systems. Benötigen wir beispielsweise eine ad-hoc-Konsistenz unserer zugrundeliegenden Daten, die den ACID-Prinzipien unterliegt oder nicht?

Wenn ich nun von „oder nicht“ spreche, ist dann schon jedem klar, wovon ich in der Alternative spreche? Dieses ist ein schönes Beispiel für das Bewusstmachen des Unbewussten. Was verbirgt sich denn hinter der Alternative zu ACID?

Wir sprechen von BASE (Base vs. Säure – scherzhaft). Dabei steht BASE für Basically available, soft-state und Eventual Consistency.
Dieses bedeutet, dass wenn ich die ACID-ad-hoc-Konsistenz verlasse und mich dagegen entscheide, kann ich mit den Mittlen der Eventual Consistency arbeiten. Ist diese Tatsache bewusst? Wir werden es in meinem Vortrag klären.

Du sprichst von einer Komplexitätsreduktion durch das Bewusstmachen blinder Flecken. Könntest du dieses noch etwas genauer darlegen?

Holger: Ein zentrales Thema in der Architekturarbeit – insbesondere in Microservice-basierten Systemen – ist die Verteilung von Verantwortlichkeiten (Separation of Concerns).

Wo liegen denn meine Verantwortlichkeiten – fachliche und technische? In einem Service oder über mehrere Services verteilt? Kann ich die Verantwortlichkeiten trennen – und wenn ja, dann wie?

Die Trennung von Verantwortlichkeiten umfasst in der Umsetzung unterschiedliche Aspekte und Bereiche. Die Frage nach der Definition eines Verantwortungsbereichs muss gemeinsam mit allen beteiligten Stakeholdern geklärt werden. Wir müssen diese blinden Flecken aufdecken.

Ein moderner Trend ist es mit weitergehenden Aspekten zu arbeiten: Sidecars und daraus resultierend die Service-Meshes bieten uns ein enormes Potential bestimmte Komplexitäten und Verantwortlichkeiten in die Infrastruktur auszulagern. Auch hier kommt wieder die Frage nach dem Bewusstsein über diese Möglichkeiten zum Tragen. Ich hoffe dieses in meinem Vortrag aufzuklären.

Wie kann man dies erlernen?

Holger: Die Psychologie beschäftigt sich mit der Fragestellung der Problemlösung. Ein Problem wird dadurch gekennzeichnet, dass ich von einem Ausgangszustand in einen Zielzustand übergehen möchte, wobei zwischen diesen beiden Zuständen eine Barriere existiert, die es zu überwinden gilt.

Die Problemlösung besteht nun darin sog. Operatoren zu finden, mit deren Hilfe ich diese Barriere überwinden kann.

Der Erwerb dieser Operatoren erfolgt aufgrund von drei Arten:
I.) Entdecken

II.) Instruktion und

III.) Beobachtungslernen.

Aus diesen Möglichkeiten des Erwerbs müssen die Operatoren extrahiert werden und dieses passiert anhand der Analogiebildung. Dieses Konzept geht schon auf Platon zurück und ist essenziell. Wir erlernen die Themen anhand von Analogien.

Die Frage ist nun, wie uns dieser Prozess der Analogiebildung dabei helfen kann unbewusste Teile aufzudecken, um fundierte Entscheidungen für unsere Systemarchitekturen zu treffen, die uns die Kontrolle über diverse Ausprägungen ermöglichen?

Unendlichkeit der Software, wie definierst Du das?

Holger: Gegenfrage: Wodurch ist der Rahmen eines Softwaresystems definiert? Wo liegt seine Grenze? Wir klären dieses in Rahmen des Vortrags.

Wie können wir all diese Themen bei der Software Architektur einbringen?

Holger: Die ISO-25010-Norm definiert Qualitätsmerkmale für Software. Diesen Qualitätsmerkmalen werden Qualitätsszenarien, die aus den Qualitätsanforderungen abgeleitet werden, zugeordnet und priorisiert.

Wichtig ist nun, dass jedes System in seinen Lösungsszenarien und -strategien in Bezug auf die in der Norm definierten Qualitätsmerkmalen optimiert werden kann.

Hier fängt unser Entscheidungsprozess als Softwarearchitekt an. Unter Einbezug der Erkenntnisse aus dem CAP-Theorem sowie der Aufklärung blinder Flecken in Bezug auf die Infrastruktur (oder auch Makroarchitektur) können unsere zu realisierenden Systeme exakt auf die umzusetzenden funktionalen sowie qualitativen Merkmalen optimiert und angepasst werden.
Wir werden dieses an einem durchgängigen Beispiel in meinem Vortrag entdecken.

Danke für die Einführung! Wir sind gespannt auf deinen Vortrag, und die Antworten und Empfehlungen, wie man die Kontrolle in der Software Architektur behält.

 

Wir freuen uns auf viele interessante Gespräche an unserem Ausstellungsstand im Foyer des Java Forums Stuttgart!