Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Lire en français

Abschnitt 2.3 von 2.8 · Mittelstufe · 18 Min. Lesezeit

Testbare Qualitätsszenarien schreiben

Videolektion

5 Min. · auf Englisch gesprochen, mit Untertiteln
Nur anhören (Audio)
Transkript lesen

Die letzte Lektion hat Ihnen das Vokabular der Qualitäten gegeben. Diese gibt Ihnen die Grammatik: eine einfache Form, die jeden Qualitätswunsch in etwas verwandelt, wofür Sie entwerfen und was Sie testen können.

Wer einem Bauunternehmen sagt, es solle das Dach stabil machen, gibt ihm nichts, was sich prüfen ließe. Die Aussage, dass das Dach bei einem Wintersturm fünfzig Zentimeter nassen Schnee tragen muss, dagegen schon. Sie benennt, was geschieht, nämlich den Schnee, und die Bedingungen, einen Sturm. Und sie sagt, was geschehen soll, keine Undichtigkeit, mit einer messbaren Zahl: höchstens zwei Zentimeter Durchbiegung. Ein Qualitätsszenario leistet dasselbe für Software.

Jedes Szenario hat dieselben sechs Teile, und zusammen erzählen sie eine kurze Geschichte. Gehen wir sie von links nach rechts durch. Erstens die Quelle des Stimulus: die Person, das System oder das Ereignis, das alles in Gang setzt. Kunden, ein Batch-Job, ein Entwickler, ein Angreifer oder eine ausfallende Festplatte. Zweitens der Stimulus selbst: das Ereignis, auf das das System reagieren muss. Eine Anfragespitze, ein Serverabsturz, ein Änderungswunsch oder eine Anmeldung mit gestohlenen Zugangsdaten. Drittens das Artefakt: der betroffene Teil des Systems. Wer es benennt, sagt dem Team, wo die Entwurfsarbeit und die Messung stattfinden müssen. Viertens die Umgebung: die Bedingungen. Normalbetrieb, Spitzenlast, eingeschränkter Betrieb oder unter Angriff. Derselbe Absturz kann unter verschiedenen Bedingungen ganz unterschiedliche Antworten verlangen. Fünftens die Antwort: was das System tut. Und sechstens das Antwortmaß: die Zahl, die Ihnen sagt, dass es gut genug funktioniert hat. Den Stimulus und das Maß lassen die meisten am häufigsten weg. Hier ist ein vollständiges Beispiel. Fünfhundert Kunden pro Sekunde rufen am Black Friday den Checkout auf. Die Bestellungen werden bestätigt, neunundneunzig Prozent davon in unter einer Komma fünf Sekunden, und keine Bestellung geht verloren.

Es gibt zwei Arten von Szenarien. Ein allgemeines Szenario ist eine Vorlage für eine Qualität. Für Verfügbarkeit listet es typische Stimuli auf, etwa einen Absturz oder eine falsche Antwort, und typische Maße, etwa die Zeit bis zur Reparatur. Ein konkretes Szenario setzt spezifische Werte für ein System ein. Die primäre Bestelldatenbank stürzt im Normalbetrieb ab, und Schreibvorgänge laufen innerhalb von sechzig Sekunden wieder, ohne dass eine bestätigte Bestellung verloren geht. Konkrete Szenarien sind Ihre Anforderungen. Sie nutzen also das allgemeine Szenario als Checkliste und schreiben dann die Handvoll konkreter Szenarien, auf die es für Ihr System ankommt.

Die meisten Qualitätsanforderungen beginnen ihr Leben als Adjektive. „Die Website muss schnell sein“ wird zu: Bei der Abendspitze von dreihundert Suchanfragen pro Sekunde kommen die Ergebnisse für fünfundneunzig Prozent der Anfragen innerhalb von vierhundert Millisekunden und für neunundneunzig Prozent innerhalb einer Sekunde. „Hochverfügbar“ wird zu: Fällt einer der drei Server aus, laufen die Buchungen weiter, keine bestätigte Buchung geht verloren, und Benutzer sehen höchstens dreißig Sekunden lang Fehler. Beachten Sie, dass dies eine Geschwindigkeitszahl mit einer Korrektheitszahl verbindet. „Leicht änderbar“ wird zu: Ein Entwickler kann in höchstens drei Tagen eine neue Lieferoption hinzufügen und ändert dabei nur das Liefermodul. Wenn Sie die richtige Zahl nicht kennen, beginnen Sie mit Belegen und schlagen Sie eine vor. Die Frage, ob vierhundert Millisekunden akzeptabel sind, führt zu einem weit besseren Gespräch als die Frage, wie schnell es sein soll.

Dieselben Fehler tauchen immer wieder auf. Der erste ist, das Antwortmaß wegzulassen. Ohne Zahl ist ein Szenario nur ein Wunsch. Der zweite ist, für Zeitangaben einen Mittelwert zu verwenden. Mittelwerte verbergen langsame Ausreißer, geben Sie also stattdessen Perzentile an. Abschnitt zwei Punkt vier erklärt, warum. Der dritte ist, mehrere Stimuli zu vermischen, etwa eine Verdopplung der Last oder einen Serverausfall. Teilen Sie sie in getrennte Szenarien auf. Der vierte ist der schädlichste: statt des Bedarfs eine Lösung hinzuschreiben, etwa „Verwende eine Message Queue“. Besteht jemand auf einer Technologie, fragen Sie, welches Problem sie löst. Die Antwort ist das eigentliche Szenario. Und der fünfte ist, die Umgebung wegzulassen. Erholt sich innerhalb von fünf Minuten, aber wovon, und wann?

Ein gut geschriebenes Szenario ist schon der größte Teil eines Tests. Das ist sein Lebenslauf. Vor dem Release wird es zum Akzeptanztest. Ein Performance-Szenario wird zum Lasttest, ein Verfügbarkeitsszenario zur Failover-Übung. Dann wird es zur Fitness Function: einer automatisierten Prüfung, die bei jeder Änderung läuft, sodass der Build fehlschlägt, wenn die Qualität abdriftet. Das Produktionsmonitoring überwacht es ständig, und diese Belege fließen zurück, um das Szenario und seine Zahlen zu verfeinern.

Der vollständige Abschnitt enthält die sechs Teile im Detail, Szenarien für sechs verschiedene Qualitäten und eine Checkliste, mit der Sie erkennen, wann ein Szenario fertig ist. Als Nächstes, in Abschnitt zwei Punkt vier, geht es um Performance und Skalierbarkeit. Bis gleich.

Was Sie wissen müssen

Warum Szenarien

Abschnitt 2.2 hat Ihnen das Vokabular der Qualitäten gegeben; dieser Abschnitt gibt Ihnen die Grammatik. Ein Qualitätsname allein, etwa Performance oder Sicherheit, lässt sich weder entwerfen noch testen. Selbst eine Zahl allein genügt nicht: „2 Sekunden“ sagt nichts, solange Sie nicht wissen, für welche Operation, unter welcher Last, wo gemessen und für welchen Anteil der Anfragen. Das Qualitätsszenario, entwickelt am Software Engineering Institute (SEI) und von Len Bass, Paul Clements und Rick Kazman in Software Architecture in Practice beschrieben, löst das, indem es jede Qualitätsanforderung in dieselbe sechsteilige Form zwingt.

Die Idee ist einfach. Jede Qualität zeigt sich, wenn einem System etwas widerfährt: ein Ansturm von Benutzern, ein Absturz, ein Änderungswunsch, ein Angriff. Ein Szenario benennt dieses Ereignis, die Umstände, den betroffenen Teil des Systems, was geschehen soll und woran Sie erkennen, dass es gut genug geschehen ist. Es ist kurz (meist ein bis drei Sätze), konkret und testbar. Und weil jede Qualität dieselbe Form verwendet, können Szenarien für Performance, Sicherheit und Änderbarkeit nebeneinander in einer priorisierten Liste stehen.

Die sechs Teile

Die sechs Teile sind die Quelle des Stimulus, der Stimulus, das Artefakt, die Umgebung, die Antwort und das Antwortmaß. Lernen Sie sie in dieser Reihenfolge, denn zusammen erzählen sie eine kurze Geschichte: Jemand oder etwas tut etwas mit einem Teil des Systems unter bestimmten Bedingungen; das System tut etwas, und wir messen es so. Der Stimulus und das Antwortmaß sind die beiden Teile, die am häufigsten weggelassen werden, und sie sind die beiden wichtigsten.

Aufbau eines Szenarios

Die sechs Teile eines Qualitätsszenarios: Eine Quelle sendet einen Stimulus an ein Artefakt in einer Umgebung; dieses erzeugt eine Antwort, die an einem Antwortmaß gemessen wird1 Quellewer oder was2 StimulusEreignis4 Umgebungnormal, Spitze, degradiert, unter Angriff3 ArtefaktSystem oder Teil5 Antwortwas es tut6 Antwort-maßdie ZahlBeispiel: 500 Kunden pro Sekunde (Quelle, Stimulus) rufen am Black Friday (Umgebung) den Checkout (Artefakt) auf;Bestellungen werden bestätigt (Antwort), p99 unter 1,5 s, keine verlorenen Bestellungen (Antwortmaß).
Eine Quelle erzeugt einen Stimulus, der ein Artefakt in einer Umgebung erreicht; die Antwort des Artefakts wird an einem Antwortmaß gemessen.

Die sechs Teile im Detail

TeilBedeutungBeispiele
Quelle des StimulusDie Person, das System oder das Ereignis, das den Stimulus erzeugt.Kunden auf Smartphones; ein interner Batch-Job; ein Entwickler; ein Angreifer; eine ausfallende Festplatte.
StimulusDas Ereignis, auf das das System reagieren muss.Eine Anfragespitze; ein Serverabsturz; ein Änderungswunsch; ein Anmeldeversuch mit gestohlenen Zugangsdaten.
ArtefaktDer Teil des Systems, der den Stimulus erfährt: das ganze System oder eine bestimmte Komponente.Der Checkout-Service; die Bestelldatenbank; das Preismodul; die Deployment-Pipeline.
UmgebungDie Bedingungen, unter denen der Stimulus eintrifft.Normalbetrieb; Spitzenlast am Black Friday; ein Rechenzentrum ausgefallen; während eines Deployments; in der Entwicklung.
AntwortWas das System (oder die Menschen um es herum) daraufhin tut.Verarbeitet die Bestellung; schaltet per Failover auf das Replikat um; die Änderung wird umgesetzt, getestet und deployt; der Versuch wird blockiert und protokolliert.
Antwortmaß (Response Measure)Wie die Antwort gemessen wird, damit sich das Szenario testen lässt.p99 unter 800 ms; Service innerhalb von 60 s wiederhergestellt, ohne verlorene Bestellungen; unter 2 Personentagen; 100 % der Versuche blockiert.

Die Umgebung verdient besondere Sorgfalt, weil derselbe Stimulus unter verschiedenen Bedingungen ganz unterschiedliche Antworten verlangen kann. Ein abgestürzter Server im Normalbetrieb erfordert vielleicht ein automatisches Failover innerhalb einer Minute; derselbe Absturz während eines geplanten Wartungsfensters kann mit manueller Wiederherstellung akzeptabel sein. Ein Änderungswunsch zur Entwurfszeit (vor dem Release) kostet weit weniger als dieselbe Änderung, wenn sich bereits Daten in der Produktion angesammelt haben. Wer die Umgebung ausdrücklich angibt, verhindert, dass Szenarien verglichen werden, die in Wahrheit unterschiedliche Situationen betreffen.

Das Artefakt zählt aus ähnlichem Grund. „Das System antwortet innerhalb von 200 ms“ verbirgt, welcher Teil verantwortlich ist. Wer das Artefakt benennt (den Suchservice, das API-Gateway, den mobilen Client), sagt dem Team, wo die Entwurfsarbeit und die Messung stattfinden müssen. Bei manchen Qualitäten, etwa Änderbarkeit und Deploybarkeit, kann das Artefakt Code, Konfiguration oder die Delivery-Pipeline sein statt einer laufenden Komponente.

Allgemeine und konkrete Szenarien

Bass, Clements und Kazman unterscheiden zwei Arten. Ein allgemeines Szenario ist systemunabhängig: Für ein Qualitätsmerkmal listet es die typischen Werte auf, die jeder Teil annehmen kann. Für Verfügbarkeit etwa können die Quellen intern oder extern sein, Menschen, Hardware, Software oder Infrastruktur; Stimuli können ein Absturz, eine Auslassung, ein falsches Timing oder eine falsche Antwort sein; Antworten können Erkennen, Protokollieren, Wiederherstellen, Maskieren oder eingeschränkter Betrieb sein; und Maße können die Zeit bis zur Erkennung, die Zeit bis zur Reparatur, der Verfügbarkeitsprozentsatz oder der Anteil der bearbeiteten Anfragen sein.

Ein konkretes Szenario wählt spezifische Werte für ein bestimmtes System: „Die primäre Bestelldatenbank stürzt im Normalbetrieb ab; das Replikat übernimmt, und Schreibvorgänge laufen innerhalb von 60 Sekunden wieder, ohne dass eine bestätigte Bestellung verloren geht.“ Allgemeine Szenarien sind Vorlagen und Checklisten; konkrete Szenarien sind Anforderungen. Mit dem allgemeinen Szenario stellen Sie sicher, dass Sie die richtigen Quellen, Stimuli und Maße bedacht haben, und schreiben dann die Handvoll konkreter Szenarien, auf die es für Ihr System ankommt.

Von vagen Aussagen zu testbaren Szenarien

Die meisten Qualitätsanforderungen beginnen ihr Leben als Adjektive. Die Kunst besteht darin, die Fragen zu stellen, die jedes Adjektiv in ein Szenario verwandeln: Welche Operation? Von wem ausgelöst? Wie oft oder wie viel? Unter welchen Bedingungen? Was soll geschehen? Welche Zahl zeigt uns, dass es funktioniert hat? Die Tabelle zeigt typische Vorher-nachher-Paare. Beachten Sie, dass die „Nachher“-Fassungen manchmal offenlegen, dass der Stakeholder mehrere verschiedene Dinge gemeint hat, die dann zu mehreren Szenarien werden.

Vorher und nachher

Vage AussageTestbares Szenario
Die Website muss schnell sein.Während der abendlichen Spitzenlast an Werktagen von 300 Suchanfragen pro Sekunde liefert die Produktsuche Ergebnisse innerhalb von 400 ms für 95 % der Anfragen und innerhalb von 1 s für 99 %, gemessen am Load Balancer.
Das System muss hochverfügbar sein.Fällt einer der drei Anwendungsserver im Normalbetrieb aus, nimmt der Buchungsservice weiterhin Buchungen an; keine bestätigte Buchung geht verloren, und Benutzer sehen höchstens 30 Sekunden lang Fehler.
Das System muss sicher sein.Sendet ein Angreifer mit geleakten Zugangsdaten 10.000 Anmeldeversuche pro Minute, sperrt das System die Quelle nach 20 Fehlversuchen, alarmiert das Sicherheitsteam innerhalb von 5 Minuten, und echte Benutzer an anderen Adressen können sich weiterhin anmelden.
Der Code muss leicht änderbar sein.Wünscht sich der Fachbereich eine neue Lieferoption, kann ein mit dem Code vertrauter Entwickler sie in höchstens 3 Tagen umsetzen, testen und deployen und ändert dabei nur das Liefermodul und dessen Konfiguration.
Die App muss benutzerfreundlich sein.Ein Erstbenutzer ohne Schulung kann sich in weniger als 4 Minuten registrieren und eine Bestellung aufgeben; 90 % der Testpersonen gelingt das beim ersten Versuch.
Deployments müssen einfach sein.Ein Entwickler kann eine Änderung am Bestellservice weniger als 30 Minuten nach dem Merge ohne Ausfallzeit in Produktion ausliefern und sie innerhalb von 5 Minuten zurückrollen, wenn die Fehlerraten steigen.

Szenariobeispiele für sechs Qualitäten

Die folgenden Beispiele verwenden einen einzigen Onlineshop, damit Sie sehen, wie verschiedene Qualitäten im selben Format aussehen. Jedes ist kompakt geschrieben, mit allen sechs Teilen beschriftet; in der Praxis schreiben Teams sie oft als ein oder zwei Sätze.

Konkrete Szenarien für einen Onlineshop

QualitätSzenario (Quelle, Stimulus, Artefakt, Umgebung, Antwort, Maß)
PerformanceQuelle: angemeldete Kunden. Stimulus: 2000 Bestellungen pro Minute. Artefakt: Checkout-Service. Umgebung: Spitzenlast am Freitagabend. Antwort: Bestellungen validiert, gespeichert und bestätigt. Maß: p95 ≤ 1,5 s, p99 ≤ 3 s, keine verlorenen Bestellungen.
VerfügbarkeitQuelle: interne Hardware. Stimulus: Der primäre Datenbankknoten stürzt ab. Artefakt: Bestelldatenbank. Umgebung: Normalbetrieb. Antwort: Replikat automatisch hochgestuft, laufende Anfragen wiederholt. Maß: Schreibvorgänge laufen innerhalb von 60 s wieder; keine bestätigte Bestellung verloren (RPO = 0).
ÄnderbarkeitQuelle: Product Owner. Stimulus: Wunsch, eine neue Zahlungsart hinzuzufügen. Artefakt: Zahlungskomponente. Umgebung: Entwurfszeit, nach dem ersten Release. Antwort: Änderung umgesetzt, getestet und deployt. Maß: ≤ 5 Personentage; keine Änderung außerhalb der Zahlungskomponente; keine Regression bei bestehenden Zahlungsarten.
SicherheitQuelle: ein angemeldeter Kunde mit böswilliger Absicht. Stimulus: versucht, die Bestellungen eines anderen Kunden zu lesen, indem er eine ID in der URL ändert. Artefakt: Bestell-API. Umgebung: Normalbetrieb. Antwort: Anfrage abgelehnt und mit der Identität des Aufrufers protokolliert. Maß: 100 % solcher Anfragen abgewiesen; Alarm innerhalb von 1 Minute nach 5 Versuchen.
BenutzbarkeitQuelle: Erstkunde. Stimulus: möchte nach der Bestellung eine Lieferadresse ändern. Artefakt: Web- und mobile Frontends. Umgebung: Laufzeit, keine Hilfe verfügbar. Antwort: schließt die Änderung ohne Hilfe ab. Maß: 90 % der Teilnehmer am Usability-Test schaffen es innerhalb von 2 Minuten.
DeploybarkeitQuelle: Entwickler. Stimulus: eine gemergte Änderung am Katalogservice. Artefakt: Deployment-Pipeline und Katalogservice. Umgebung: Geschäftszeiten, normale Last. Antwort: gebaut, getestet und schrittweise ausgerollt. Maß: innerhalb von 45 Minuten in Produktion; keine Ausfallzeit; automatischer Rollback innerhalb von 5 Minuten, wenn die Fehlerrate 1 % übersteigt.

Zwei Merkmale dieser Beispiele verdienen Beachtung. Erstens geht es in Szenarien nicht nur um laufende Software. Szenarien zu Änderbarkeit und Deploybarkeit haben Entwickler und Product Owner als Quellen, und ihre Maße sind Aufwand, verstrichene Zeit und Umfang der Änderung. Zweitens verbinden gute Maße oft eine Geschwindigkeitszahl mit einer Korrektheitszahl: „innerhalb von 60 Sekunden“ und „keine bestätigte Bestellung verloren“. Ein schnelles Failover, das Daten verliert, ist nicht das, was das Unternehmen wollte.

Häufige Fehler

Wer Hunderte von Teams geschriebene Szenarien prüft, findet immer wieder dieselben Fehler. Jeder macht ein Szenario untestbar oder irreführend.

Fehler und wie man sie behebt

FehlerBeispielBehebung
Kein Antwortmaß„Unter Spitzenlast antwortet der Checkout schnell.“Ergänzen Sie eine Zahl und eine Statistik: „p95 ≤ 1,5 s, p99 ≤ 3 s“.
Mittelwert statt Perzentil„Durchschnittliche Antwortzeit unter 300 ms.“Mittelwerte verbergen langsame Ausreißer; geben Sie Perzentile an (Abschnitt 2.4).
Mehrere Stimuli in einem Szenario„Wenn sich die Last verdoppelt oder ein Server ausfällt oder ein Deployment läuft, bleibt das System schnell.“In drei Szenarien aufteilen, jedes mit eigener Umgebung und eigenem Maß.
Als Anforderung getarnte Lösung„Das System verwendet Redis, um Produktseiten zu cachen.“Nennen Sie den Bedarf („Produktseiten laden bei 1000 Aufrufen pro Sekunde für 95 % der Aufrufe in unter 300 ms“) und lassen Sie den Cache als Entwurfsoption offen.
Fehlende Umgebung„Der Service erholt sich innerhalb von 5 Minuten.“Sagen Sie, wovon und wann: „nach dem Ausfall einer einzelnen Zone im Normalbetrieb“.
Nicht messbare Wörter„Elegant“, „nahtlos“, „robust“, „benutzerfreundlich“.Ersetzen Sie jedes durch ein beobachtbares Verhalten und eine Zahl.
Unmögliche Absolutheiten„Das System fällt nie aus.“ „100 % der Angriffe werden blockiert.“Verwenden Sie realistische Ziele und sagen Sie, was geschieht, wenn sie verfehlt werden.

Entscheidungshilfe

Entscheidungshilfe: Ist dieses Szenario fertig?

Prüfen Sie jeden Szenarioentwurf mit diesen Fragen, bevor er ins Architekturdokument oder ins Backlog wandert.

  1. Beschreibt es einen einzigen Stimulus mit einer benannten Quelle?
    JaWeiter.
    NeinTeilen Sie es auf oder benennen Sie, wer oder was das Ereignis auslöst.
  2. Nennt es die Umgebung (normal, Spitzenlast, degradiert, während eines Deployments, zur Entwurfszeit)?
    JaWeiter.
    NeinErgänzen Sie die Bedingungen; sonst lässt sich das Maß nicht deuten.
  3. Benennt es das Artefakt, also den verantwortlichen Teil des Systems?
    JaWeiter.
    NeinBenennen Sie die Komponente, die Schnittstelle oder die Pipeline, damit das Team weiß, wo entworfen und gemessen werden muss.
  4. Ist die Antwort ein beobachtbares Verhalten statt einer Technologiewahl?
    JaWeiter.
    NeinFormulieren Sie den Bedarf neu und verschieben Sie die Technologie in eine Entwurfsentscheidung oder eine Randbedingung.
  5. Enthält das Antwortmaß eine Zahl, eine Einheit und, bei Zeitangaben, ein Perzentil?
    JaDas Szenario ist testbar: Ergänzen Sie eine Priorität und einen Verantwortlichen.
    NeinErgänzen Sie das Maß; ohne es ist das Szenario nur ein Wunsch.

Von Szenarien zu Akzeptanztests und Fitness Functions

Ein gut geschriebenes Szenario ist schon der größte Teil eines Tests. Quelle und Stimulus sagen Ihnen, welche Last oder welches Ereignis Sie erzeugen müssen, die Umgebung, wie Sie den Test aufsetzen, das Artefakt, was Sie beobachten müssen, und das Antwortmaß liefert die Bestehensbedingung. Ein Performance-Szenario wird zum Lasttest; ein Verfügbarkeitsszenario wird zur Failover-Übung oder zum Chaos-Experiment; ein Änderbarkeitsszenario wird zur Überprüfung, wie viel Code eine Beispieländerung berührt hat und wie lange sie dauerte; ein Sicherheitsszenario wird zum Testfall eines Penetrationstests.

Der nächste Schritt besteht darin, weiter zu prüfen. Eine Fitness Function, ein Begriff, den Neal Ford, Rebecca Parsons und Patrick Kua in Building Evolutionary Architectures bekannt gemacht haben, ist jede automatisierte oder wiederholbare Prüfung, wie gut das System ein Architekturziel erfüllt. In der Delivery-Pipeline oder gegen Telemetriedaten aus der Produktion ausgeführt, macht sie aus einem Szenario statt eines einmaligen Akzeptanztests einen dauerhaften Wächter: Der Build schlägt fehl oder ein Alarm wird ausgelöst, wenn die Qualität abdriftet. Kapitel 11 behandelt Fitness Functions ausführlich in Fitness Functions und evolutionäre Architektur.

Der Lebenslauf eines Szenarios

Ein Qualitätsszenario wird vor dem Release zu einem Akzeptanztest und danach zu einer Fitness Function, die es weiter prüft; das Produktionsmonitoring fließt in das Szenario zurückSzenario(Qualität)Akzeptanz-testFitness Functionin der PipelineProduktions-monitoringBelege verfeinern das Szenario und seine Zahlenvor dem Releasefür jede Änderungständig
Ein Szenario steuert einen Akzeptanztest, dann eine Fitness Function, die bei jeder Änderung läuft, und Belege aus der Produktion fließen zurück, um das Szenario zu verfeinern.
# A performance scenario expressed as an automated check (illustrative)
# Scenario: at 300 searches/s, p95 <= 400 ms and p99 <= 1000 ms.
import statistics

def check_search_latency(latencies_ms, p95_target=400, p99_target=1000):
    cuts = statistics.quantiles(latencies_ms, n=100)  # 99 cut points
    p95, p99 = cuts[94], cuts[98]
    assert p95 <= p95_target, f"p95 {p95:.0f} ms exceeds {p95_target} ms"
    assert p99 <= p99_target, f"p99 {p99:.0f} ms exceeds {p99_target} ms"
    return p95, p99

# latencies_ms comes from a load test that replays 300 searches per second
# for ten minutes against a production-like environment.
Ein Performance-Szenario als einfache automatisierte Prüfung der p95- und p99-Latenz.

Wie Fachleute Szenarien einsetzen

In der Praxis schreiben Teams selten lange Tabellen sechsteiliger Szenarien für alles. Sie schreiben eine kleine Zahl, bei einem größeren System oft zehn bis dreißig, für die architekturrelevanten Qualitäten, und bewahren sie dort auf, wo alle sie sehen: im Architekturdokument (arc42 Abschnitt 10 verlangt genau das), im Backlog als Akzeptanzkriterien oder auf einem gemeinsamen Qualitätsboard. Manche Teams verwenden eine kürzere Form; das Projekt Q42 von Gernot Starke etwa empfiehlt eine kompakte Struktur aus Kontext, Auslöser und Akzeptanzkriterien. Die Form ist weniger wichtig als die Disziplin: Jede wichtige Qualität hat einen Stimulus, einen Kontext und eine Zahl.

Szenarien treiben auch Bewertungsmethoden an. Der Quality Attribute Workshop und die Architecture Tradeoff Analysis Method (ATAM), beide vom SEI, sammeln und priorisieren Szenarien mit den Stakeholdern und prüfen die Architektur dann gegen die wichtigsten. Abschnitt 2.8 zeigt, wie Szenarien in einem Utility Tree gesammelt und gewichtet werden.

Prüfen Sie Ihr Verständnis

Nennen Sie die sechs Teile eines Qualitätsszenarios in der richtigen Reihenfolge.

Quelle des Stimulus, Stimulus, Artefakt, Umgebung, Antwort und Antwortmaß.

Was ist falsch an „Das System verwendet ein CDN, damit Seiten schnell laden“?

Es nennt eine Lösung, keinen Bedarf, und hat kein Maß. Die Anforderung sollte Last, Bedingungen und Ziel-Antwortzeit beschreiben; das CDN ist ein möglicher Entwurf, um sie zu erfüllen.

Wer ist in einem Änderbarkeitsszenario typischerweise die Quelle des Stimulus?

Eine Person, die eine Änderung wünscht, etwa ein Product Owner, ein Entwickler oder eine Aufsichtsbehörde; der Stimulus ist der Änderungswunsch.

Worin unterscheidet sich ein Szenario von einer Fitness Function?

Ein Szenario ist die Formulierung einer Anforderung; eine Fitness Function ist eine automatisierte oder wiederholbare Prüfung, die fortlaufend misst, ob das System sie erfüllt.

Weiter · 2.4Performance und SkalierbarkeitLatenz und Durchsatz, Perzentile und Tail-Latenz, Littles Gesetz, Warteschlangen und die Auslastungsklippe, Amdahlsches Gesetz und das Universal Scalability Law, mit durchgerechneten Beispielen und einem Überblick über Performance-Taktiken.Weiter →

Quellen und weiterführende Literatur

Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.

Fragen: „Können Sie mir helfen, „Die API muss hochverfügbar und schnell sein“ für eine Essensliefer-App in richtige Qualitätsszenarien zu verwandeln?“