Read in English · Leer en español · Lire en français
Abschnitt 2.1 von 2.8 · Mittelstufe · 18 Min. Lesezeit
Funktionale Anforderungen, Qualitätsmerkmale und Randbedingungen
Videolektion
5 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
In dieser Lektion geht es um die drei Arten von Anforderungen, die jedes System hat. Am Ende können Sie die wenigen Anforderungen erkennen, die ein Design wirklich bestimmen.
Denken Sie an die Bestellung einer Hochzeitstorte. Drei Etagen, Zitronenbiskuit, weiße Glasur. Das beschreibt, was die Torte ist: ihre Funktionen. Fertig bis Samstag um zwei Uhr nachmittags, übersteht eine vierzigminütige Autofahrt, unbedenklich für einen Gast mit Nussallergie. Das beschreibt, wie gut sie funktionieren muss: ihre Qualitäten. Und die Location erlaubt nur Torten von zugelassenen Konditoreien. Das ist eine Randbedingung, eine bereits für Sie getroffene Entscheidung. Es sind die Qualitäten und Randbedingungen, nicht der Geschmack, die bestimmen, wie die Torte gebaut und transportiert wird. Bei Software ist es genauso.
In der Software sagt eine funktionale Anforderung, was das System tun muss. Zum Beispiel: Ein Kunde kann einen Artikel in den Warenkorb legen. Ein Qualitätsmerkmal sagt, wie gut es das tun muss. Suchergebnisse erscheinen innerhalb einer halben Sekunde. Qualitätsmerkmale ergeben nur mit einem Maß einen Sinn: schnell genug für wen, unter welcher Last, wie gemessen? Eine Randbedingung ist eine bereits getroffene Entscheidung: eine Vorschrift, eine vorgegebene Technologie, ein Termin oder ein Budget. Randbedingungen entfernen Optionen.
Oft begegnet Ihnen der Begriff nichtfunktionale Anforderungen. Sie müssen ihn kennen, aber viele Architekten meiden ihn, aus drei Gründen. Erstens definiert er eine große und wichtige Kategorie über das, was sie nicht ist. Zweitens legt er nahe, diese Anforderungen seien von den Funktionen getrennt und könnten später ergänzt werden. Das geht nicht. Es ist der Bezahlvorgang, der schnell sein muss, und die Zahlung, die nie verloren gehen darf. Drittens klingt nichtfunktional optional. Dabei sind Systeme, die laufen, aber langsam, unsicher oder nicht änderbar sind, genau die, die neu geschrieben werden. Dieser Kurs spricht stattdessen von Qualitätsmerkmalen und Randbedingungen.
Die meisten Anforderungen wirken sich überhaupt nicht auf die Architektur aus. Dieses Diagramm zeigt, wie man die erkennt, bei denen es so ist. Alle drei Arten von Anforderungen, Funktionen, Qualitäten und Randbedingungen, kommen von links. Stellen Sie für jede eine einzige Frage: Müsste sich die Struktur des Systems ändern, wenn sich diese Anforderung änderte? Wenn ja, ist sie eine architekturrelevante Anforderung, kurz ASR, und sie treibt Architekturentscheidungen. Die meisten sind Qualitäten oder Randbedingungen. Wenn nein, gehört sie in Feinentwurf und Code und lässt sich an einem Nachmittag ändern.
Hier ist der zentrale Gedanke dieses Kapitels. Zwei Ticketsysteme haben identische Features: Veranstaltungen ansehen, Plätze reservieren, bezahlen. Ein Gemeindesaal mit dreihundert Plätzen sieht zu Spitzenzeiten ein paar Anfragen pro Sekunde. Eine Webanwendung und eine Datenbank sind die richtige Antwort: günstig, einfach und leicht zu ändern. Eine Stadiontournee mit sechzigtausend Plätzen muss einen tausendfach größeren Ansturm abfangen. Deshalb braucht sie ein Content Delivery Network, einen virtuellen Warteraum, viele Webinstanzen und eine Zahlungswarteschlange. Und weil sie nie denselben Platz zweimal verkaufen darf, braucht sie einen sorgfältig entworfenen Sitzplatzbestand auf partitioniertem Speicher. Gleiche Funktionen, völlig verschiedene Architekturen.
Spielen wir einen echten Verkauf durch. Ein Ticketunternehmen verkauft vier Abende in einem Stadion mit sechzigtausend Plätzen. Das sind zweihundertvierzigtausend Tickets. Das Marketing erwartet in den ersten zehn Minuten anderthalb Millionen Menschen. Das sind zweitausendfünfhundert Ankünfte pro Sekunde, etwa das Viertausendfünfhundertfache der normalen Rate. Wenn jeder Browser in der ersten Minute etwa acht Anfragen stellt, sieht sich die Website zwanzigtausend Anfragen pro Sekunde gegenüber. Der Zahlungsanbieter erlaubt dreihundert Autorisierungen pro Sekunde. Bei zweieinhalb Tickets pro Bestellung sind das sechsundneunzigtausend Bestellungen, was mindestens dreihundertzwanzig Sekunden dauert, also fünf Komma drei Minuten. Das System muss also Plätze reservieren und Zahlungen in eine Warteschlange stellen. Das ergibt fünf architekturrelevante Anforderungen: Spitzenlast, kein doppelt verkaufter Platz, Fairness durch einen Warteraum, Bot-Resistenz und Graceful Degradation. Keine davon steht in der Feature-Liste.
Einige der wichtigsten Qualitäten werden nie aufgeschrieben, weil alle sie voraussetzen. Keine Bestellungen verlieren. Dem Kunden nicht doppelt abbuchen. Diese impliziten Anforderungen treten erst zutage, wenn sie verletzt werden, meist im Produktivbetrieb. Um sie aufzuspüren, fragen Sie die Stakeholder, was sie rasend machen oder das Unternehmen in die Zeitung bringen würde. Zwei häufige Fehler, die Sie vermeiden sollten. Qualitäten ohne Maß formulieren: Auf hochverfügbar kann man weder hin entwerfen noch es testen. Und annehmen, Qualität lasse sich ergänzen, nachdem die Features gebaut sind. Performance, Sicherheit und Verfügbarkeit hängen von der Struktur ab und sind teuer nachzurüsten.
Der vollständige Abschnitt enthält die Arten von Randbedingungen, eine Checkliste zum Erkennen relevanter Anforderungen und das ganze Ticketbeispiel. Als Nächstes betrachten wir in Abschnitt zwei Punkt zwei Qualitätsmodelle und wie man sie als Checkliste nutzt. Bis gleich.
Was Sie wissen müssen
- Funktionale Anforderungen sagen, was ein System tun muss; Qualitätsmerkmale sagen, wie gut es das tun muss; Randbedingungen sind bereits getroffene Entscheidungen wie Vorschriften, vorgegebene Technologien, Termine und Budgets.
- Viele Architekten meiden den Begriff „nichtfunktionale Anforderungen“, weil er eine große Kategorie durch Ausschluss definiert, nahelegt, die Anforderungen seien von den Funktionen getrennt, und optional klingt.
- Eine architekturrelevante Anforderung (ASR) ist eine, deren Änderung eine Änderung der Systemstruktur erzwingen würde; die meisten ASRs sind Qualitätsmerkmale oder Randbedingungen, aber auch manche Funktionen sind bedeutsam.
- Dieselben Funktionen lassen sich mit sehr unterschiedlichen Architekturen umsetzen; es sind die Qualitätsmerkmale und Randbedingungen, die zwischen ihnen entscheiden.
- Implizite Anforderungen, etwa nie Bestellungen zu verlieren oder nie doppelt abzubuchen, werden selten aufgeschrieben und müssen aktiv bei Stakeholdern, aus Vorfällen und aus Vorschriften erhoben werden.
Drei Arten von Anforderungen
Eine Anforderung ist alles, was ein System erfüllen muss, um für seine Stakeholder akzeptabel zu sein. Architekten finden es nützlich, Anforderungen in drei Arten einzuteilen, weil jede Art das Design auf andere Weise beeinflusst. Eine funktionale Anforderung sagt, was das System tun muss: „Ein Kunde kann einen Artikel in den Warenkorb legen“, „das Apothekensystem prüft jedes neue Rezept gegen die Allergien des Patienten“, „ein Fahrgast kann die Position des Fahrers auf einer Karte sehen“. Funktionale Anforderungen beschreiben Verhalten, Daten und die Regeln, die beide verbinden. Sie sind das, was die meisten User Stories und Use Cases erfassen.
Ein Qualitätsmerkmal sagt, wie gut das System es tun muss. „Suchergebnisse erscheinen innerhalb einer halben Sekunde“, „der Buchungsservice ist zu 99,95 % der Zeit verfügbar“, „ein neuer Zahlungsanbieter lässt sich in weniger als zwei Wochen anbinden“, „Patientenakten sind nur für die behandelnden Ärztinnen und Ärzte lesbar“. Qualitätsmerkmale sind Eigenschaften des Systems als Ganzes oder einer Funktion, und sie ergeben nur mit einem Maß einen Sinn: schnell genug für wen, unter welcher Last, wie gemessen?
Eine Randbedingung ist eine Entscheidung, die bereits für Sie getroffen wurde. „Das System muss im bestehenden Azure-Tenant des Unternehmens laufen“, „alle personenbezogenen Daten bleiben in der Europäischen Union“, „das Team kann Java und hat kein Budget für Umschulungen“, „das erste Release muss live sein, bevor das Steuerjahr am 6. April beginnt“. Randbedingungen entfernen Optionen, statt Verhalten zu beschreiben. Innerhalb des Projekts sind sie nicht verhandelbar, doch ein guter Architekt prüft, ob jede wirklich eine Randbedingung ist und nicht bloß eine Gewohnheit oder Annahme.
Die Grenzen sind nicht immer scharf, und das ist in Ordnung. Der Sinn der Einteilung ist keine bürokratische Ordnung; sie soll sicherstellen, dass niemand fünfzig User Stories sammelt und vergisst zu fragen, wie viele Nutzer es geben wird, wie lange das Unternehmen einen Ausfall überlebt oder welche Aufsichtsbehörde zusieht.
Wie Anforderungen die Architektur erreichen
Warum viele Architekten den Begriff „nichtfunktionale Anforderungen“ meiden
Anforderungsdokumente teilen traditionell alles in funktionale und nichtfunktionale Anforderungen (NFRs) ein. Der Begriff ist überall, in Verträgen, Ausschreibungsunterlagen und Stellenanzeigen, deshalb müssen Sie ihn kennen. Viele Architekten und Forschende meiden ihn dennoch, aus drei Gründen.
Erstens definiert er eine große und wichtige Kategorie über das, was sie nicht ist. Alles, was keine Funktion ist, landet im selben Topf: Antwortzeiten, Verschlüsselungsregeln, die Wahl des Cloud-Anbieters und die Farbe des Logos. Martin Glinz’ Paper On Non-Functional Requirements (IEEE International Requirements Engineering Conference, 2007) zeigte, dass veröffentlichte Definitionen uneins sind, was in die Kategorie gehört, und dass derselbe Bedarf je nach Formulierung so oder so eingeordnet werden kann: „Nur berechtigte Mitarbeitende dürfen Gehälter sehen“ liest sich als Funktion, wenn es als Zugriffsregel formuliert ist, und als Qualität, wenn es als Sicherheitsziel formuliert ist.
Zweitens legt der Name nahe, diese Anforderungen seien von den Funktionen getrennt und könnten später ergänzt werden. Das geht nicht. Ein Qualitätsmerkmal qualifiziert eine Funktion: Es ist der Bezahlvorgang, der schnell sein muss, die Zahlung, die nie verloren gehen darf, die Patientenakte, die vertraulich sein muss. Bass, Clements und Kazman sprechen in Software Architecture in Practice deshalb von Qualitätsmerkmal-Anforderungen und behandeln Randbedingungen als eigene Kategorie.
Drittens klingt „nichtfunktional“ optional, als ob ein System, das zwar läuft, aber langsam, unsicher oder nicht änderbar ist, trotzdem „funktioniert“. In der Praxis sind genau das die Systeme, die neu geschrieben werden. Manche Teams sagen lieber „Qualitätsanforderungen“; andere, vor allem bei Thoughtworks, sagen „Cross-Functional Requirements“, um zu betonen, dass sie quer durch alle Features gehen. Dieser Kurs spricht von Qualitätsmerkmalen und Randbedingungen. Wenn Ihre Organisation NFRs sagt, müssen Sie nicht um das Wort streiten; achten Sie nur darauf, dass jede NFR entweder eine messbare Qualität oder eine klar formulierte Randbedingung ist.
Randbedingungen: technisch, organisatorisch, regulatorisch, zeitlich und budgetär
Randbedingungen verdienen mehr Aufmerksamkeit, als sie meist bekommen, weil sie oft mehr von der Architektur bestimmen als jedes Feature. Eine Randbedingung ist einfach eine Anforderung ohne verbleibenden Spielraum. Es hilft, sie nach ihrer Herkunft zu gruppieren.
Arten von Randbedingungen und ihre Wirkung auf die Architektur
| Art | Beispiel | Typische Wirkung auf die Architektur |
|---|---|---|
| Technisch | Muss über die veröffentlichten Schnittstellen in das bestehende SAP-Finanzsystem integriert werden; muss auf der Kubernetes-Plattform des Unternehmens laufen. | Legt Integrationsstile, Datenformate und Deployment-Modell fest; kann manche Datenbanken oder Sprachen ausschließen. |
| Organisatorisch | Drei Teams in zwei Zeitzonen; das Betriebsteam unterstützt nur PostgreSQL; das Sicherheitsteam muss jede externe Abhängigkeit freigeben. | Prägt, wie das System aufgeteilt wird (Gesetz von Conway, Kapitel 3) und welche Technologien realistisch sind. |
| Regulatorisch und rechtlich | Personenbezogene Daten von Personen mit Wohnsitz in der EU werden nach der DSGVO verarbeitet; Kartendaten fallen unter PCI DSS; ein Medizinprodukt muss Sicherheitsvorschriften erfüllen. | Bestimmt Speicherort der Daten, Verschlüsselung, Audit-Logging, Aufbewahrungsregeln und die Trennung sensibler Komponenten. |
| Zeit | Die neuen Steuerregeln gelten ab einem festen Datum; eine Handelsplattform muss vor der Novemberspitze bereit sein. | Begünstigt bewährte Technologie und einfachere Designs; kann ein schrittweises Release mit bekannten technischen Schulden erzwingen. |
| Budget | Die Betriebskosten müssen unter einem festen Monatsbetrag bleiben; kein Geld für kommerzielle Lizenzen. | Begrenzt Redundanz, Regionen und Managed Services; macht die Kosten pro Transaktion zu einer ausdrücklichen Qualität. |
Zwei Gewohnheiten helfen. Erstens: Notieren Sie die Quelle jeder Randbedingung (eine Vorschrift, einen Vertrag, eine namentlich genannte entscheidende Person), damit sie geprüft und bei veränderten Umständen neu bewertet werden kann. Zweitens: Unterscheiden Sie echte Randbedingungen von Vorlieben, die sich als Randbedingungen ausgeben. „Wir müssen Microservices verwenden“ ist selten eine Randbedingung; es ist eine Designentscheidung, die jemand früh getroffen hat, und sie sollte wie jede andere Entscheidung durch Qualitätsmerkmale begründet werden. Der Abschnitt in Kapitel 1 über Entscheidungen und Abwägungen erklärt, warum frühe, schwer umkehrbare Entscheidungen diese Prüfung verdienen.
Architekturrelevante Anforderungen
Die meisten Anforderungen wirken sich nicht auf die Architektur aus. Ob auf der Rechnung die Postleitzahl des Kunden über oder unter dem Straßennamen steht, ist ein Detail; das lässt sich an einem Nachmittag ändern. Eine architekturrelevante Anforderung (ASR) ist eine, die eine messbare Wirkung auf die Architektur hat: Würde sie sich ändern, müsste sich die Struktur des Systems ändern. ASRs früh zu erkennen ist wichtig, weil es teuer ist, sie spät zu berücksichtigen. Einer Ticketseite eine Woche vor dem Verkauf einen Warteraum hinzuzufügen ist möglich; den Sitzplatzbestand nach dem Start über Server zu partitionieren ist eine Neuentwicklung.
Lianping Chen, Muhammad Ali Babar und Bashar Nuseibeh befragten Praktiker, wie sie ASRs erkennen (Characterizing Architecturally Significant Requirements, IEEE Software, 2013). Ihre Ergebnisse decken sich mit der Erfahrung der meisten Architekten. ASRs sind meist schwer zu erfüllen, betreffen oft das System als Ganzes statt eines einzelnen Features, stehen häufig miteinander im Konflikt und werden oft vage oder gar nicht formuliert. Qualitätsmerkmale und Randbedingungen machen die Mehrheit aus, aber auch manche funktionalen Anforderungen sind relevant.
Beispiele für funktionale ASRs: „Jede Änderung an einer Patientenakte muss einer Person und einem Zeitpunkt zuordenbar sein“ (das erfordert einen Audit-Mechanismus über alle Komponenten), „Nutzer können in Echtzeit am selben Dokument zusammenarbeiten“ (das verlangt ein Synchronisationsmodell und wahrscheinlich einen anderen Kommunikationsstil) und „Kunden können eine Überweisung innerhalb von 30 Minuten rückgängig machen“ (das betrifft, wie Geld zwischen Konten bewegt wird). Jede davon erzwingt eine strukturelle Entscheidung, nicht bloß mehr Code.
Warum Qualitäten die Architektur stärker prägen als Funktionen
Hier ist der zentrale Gedanke dieses Kapitels. Käme es nur auf die Funktionalität an, wäre fast jede Struktur recht: Man könnte das ganze System als ein großes Programm schreiben, und es würde trotzdem die richtigen Ergebnisse berechnen. Bass, Clements und Kazman sagen das direkt: Funktionalität bestimmt die Architektur nicht, weil viele verschiedene Architekturen dieselben Funktionen liefern können. Was sie unterscheidet, ist, wie gut jede die Qualitäten erreicht.
Betrachten Sie zwei Ticketsysteme mit identischen Features: Veranstaltungen ansehen, Plätze reservieren, bezahlen. Das eine verkauft Tickets für einen Gemeindesaal mit 300 Plätzen, das andere eine Stadiontournee mit 60.000 Plätzen. Der geschäftigste Moment des Gemeindesaals bringt vielleicht ein paar Anfragen pro Sekunde, und eine einzelne Webanwendung mit einer Datenbank ist die richtige Antwort: günstig, einfach und leicht zu ändern. Die Stadiontournee muss einen tausendfach größeren Ansturm abfangen, darf nie denselben Platz zweimal verkaufen und muss verhindern, dass Bots in der ersten Sekunde alles aufkaufen. Dieses System braucht ein Content Delivery Network, eine Warteschlange vor dem Shop, einen sorgfältig entworfenen Sitzplatzbestand, partitionierte Speicherung und einen Zahlungsablauf, der auf einen überlasteten Anbieter warten kann. Gleiche Funktionen, völlig verschiedene Architekturen, und der Unterschied kommt allein von Qualitätsmerkmalen und Randbedingungen.
Gleiche Funktionen, unterschiedliche Qualitäten
Implizite Qualitäten, die niemand aufschreibt
Einige der wichtigsten Qualitäten werden nie formuliert, weil alle Stakeholder sie voraussetzen. Diese impliziten Anforderungen treten erst zutage, wenn sie verletzt werden, meist im Produktivbetrieb. Niemand schreibt „keine Bestellungen verlieren“, „dem Kunden nicht doppelt abbuchen“, „bei der Zeitumstellung weiterlaufen“, „auf dem Smartphone und der Website denselben Kontostand zeigen“ oder „die Daten eines Kunden nicht an einen anderen preisgeben“. Doch jede davon ist eine ASR mit schweren Folgen: idempotente Zahlungsverarbeitung, dauerhafte Schreibvorgänge, zeitzonensichere Terminplanung, Konsistenz zwischen den Kanälen und strikte Mandantentrennung.
Implizite Anforderungen bleiben aus sozialen Gründen verborgen. Fachliche Stakeholder halten sie für zu selbstverständlich, um sie zu erwähnen; Entwickler nehmen an, jemand anderes habe sich darum gekümmert; und Anforderungsvorlagen fragen selten danach. Nützliche Fragen, um sie aufzuspüren, sind: „Was würde Sie rasend machen, wenn es passierte?“, „Was würde uns in die Zeitung bringen?“, „Was ist bei dem System, das wir ablösen, schiefgegangen?“ und „Wofür wird das Betriebsteam nachts geweckt?“. Vorfallberichte und Support-Tickets von Vorgängersystemen sind eine reiche Quelle, ebenso die veröffentlichten Leitlinien von Aufsichtsbehörden und die Pflichten aus Kundenverträgen.
Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: ein Konzertticketsystem am Verkaufstag
Ein Ticketunternehmen verkauft an einem Freitag um 10:00 Uhr vier Abende in einem Stadion (60.000 Plätze pro Abend). An einem normalen Tag hat die Website etwa 2000 Besucher pro Stunde. Das Marketing erwartet in den ersten zehn Minuten 1,5 Millionen Menschen. Die Features sind die üblichen: ansehen, Plätze wählen, sie zehn Minuten reservieren, bezahlen. Was sind die architekturrelevanten Anforderungen?
| Tickets im Verkauf | 4 Abende × 60.000 Plätze = 240.000 Tickets |
|---|---|
| Normale Ankunftsrate | 2000 Besucher ÷ 3600 s ≈ 0,56 Besucher pro Sekunde |
| Ankunftsrate am Verkaufstag | 1.500.000 Besucher ÷ 600 s = 2500 Besucher pro Sekunde, etwa das 4500-Fache der normalen Rate |
| Anfragerate | Wenn der Browser jedes Besuchers in der ersten Minute etwa 8 Anfragen an die Website stellt (Seiten, Sitzpläne, API-Aufrufe): 2500 × 8 = 20.000 Anfragen pro Sekunde |
| Nachfrage und Angebot | 1.500.000 Besucher für 240.000 Tickets: Die meisten werden unabhängig vom Design enttäuscht, daher zählen Fairness und klare Kommunikation ebenso viel wie Geschwindigkeit |
| Randbedingung Zahlung | Der Vertrag mit dem Zahlungsanbieter erlaubt 300 Zahlungsautorisierungen pro Sekunde. Bei durchschnittlich 2,5 Tickets pro Bestellung ergeben 240.000 ÷ 2,5 = 96.000 Bestellungen; 96.000 ÷ 300 = 320 s, die Zahlungen allein dauern also mindestens 5,3 Minuten, selbst wenn alles andere sofort geschieht |
| ASR 1: Spitzenlast (Performance) | 2500 Ankünfte pro Sekunde abfangen, ohne zusammenzubrechen; statische Seiten und Sitzpläne aus einem Cache oder CDN ausliefern, damit nur echte Käufe den Kern erreichen |
| ASR 2: kein Platz doppelt verkauft (Konsistenz) | Platzreservierungen müssen atomar sein, auch wenn Tausende gleichzeitig auf denselben Block klicken; das prägt das Design des Bestands und seiner Speicherung |
| ASR 3: Fairness (Geschäftsregel mit struktureller Wirkung) | Käufer in der Reihenfolge ihrer Ankunft über einen virtuellen Warteraum einlassen, damit das Kernsystem einen kontrollierten Strom statt eines Ansturms sieht |
| ASR 4: Bot-Resistenz (Sicherheit) | Automatisierte Käufer erkennen und blockieren, bevor sie den Bestand erreichen; Rate Limiting pro Konto und pro Gerät |
| ASR 5: Graceful Degradation (Verfügbarkeit) | Wenn Zahlungen langsamer werden, Reservierungen gültig halten und Zahlungsversuche in eine Warteschlange stellen, statt ganze Bestellungen scheitern zu lassen |
| Randbedingung | Fester, vorab angekündigter Termin; Limit des Zahlungsanbieters von 300 pro Sekunde |
Keine dieser ASRs steht in der Feature-Liste. Alle stammen aus Last, Konsistenz, Fairness, Sicherheit und einer Randbedingung eines Drittanbieters.
Das Zahlungslimit wird direkt zu einer Designentscheidung: Da nicht alle Käufer gleichzeitig zahlen können, muss das System Plätze reservieren und Zahlungen in eine Warteschlange stellen, was wiederum die Reservierungsdauer bestimmt.
Die Realität liefert eine Mahnung. Im November 2022 litt der Vorverkauf von Ticketmaster für eine große Stadiontournee unter der Nachfrage an langen Verzögerungen und Ausfällen; das Unternehmen meldete insgesamt 3,5 Milliarden Systemanfragen, das Vierfache seiner bisherigen Spitze.
Checkliste: architekturrelevante Anforderungen erkennen
Gehen Sie diese Fragen früh im Projekt für jede Kandidatenanforderung und für das System als Ganzes durch.
- Würde ihre Änderung die Struktur ändern?Wenn eine verdoppelte Zahl, eine gelockerte Regel oder eine gestrichene Anforderung Komponenten, Daten oder Kommunikationswege bewegen würde, ist sie relevant.
- Gilt sie für viele Features?Anforderungen, die quer durch das ganze System gehen (Audit, Sicherheit, Verfügbarkeit, Internationalisierung), brauchen meist eine strukturelle Antwort.
- Ist sie schwierig oder neu?Eine anspruchsvolle Zahl (unter 100 ms, 99,99 %), eine Last weit über allem, was das Team bisher bewältigt hat, oder ein Feature ohne Vorbild ist ein starkes Signal.
- Hat sie hohen Geschäftswert oder hohes Risiko?Wenn ihr Scheitern Umsatz kosten, gegen das Gesetz verstoßen oder jemandem schaden würde, behandeln Sie sie als relevant, auch wenn sie einfach aussieht.
- Steht sie im Konflikt mit einer anderen Qualität?Anforderungen im Spannungsverhältnis (schnell und stark konsistent, offen und sicher) brauchen bewusste Abwägungen, und das sind Architekturentscheidungen.
- Ist sie eine verkappte Randbedingung?Vorgegebene Technologien, Vorschriften, Termine und Budgets entfernen Optionen; halten Sie sie mit ihrer Quelle fest.
- Hat sie schon einmal wehgetan?Sehen Sie sich Vorfälle, Support-Tickets und Post-Mortems des abzulösenden Systems und ähnlicher Systeme anderswo an.
- Setzt jemand sie stillschweigend voraus?Fragen Sie, was die Stakeholder rasend machen oder das Unternehmen in die Nachrichten bringen würde; diese Antworten decken implizite Anforderungen auf.
Wie Fachleute mit ASRs arbeiten
Erfahrene Architekten führen eine kurze, lebendige Liste von ASRs, typischerweise fünf bis fünfzehn Einträge, statt eines langen Anforderungsdokuments. Jeder Eintrag formuliert die Qualität als testbares Szenario (Abschnitt 2.3), nennt den Stakeholder, dem sie wichtig ist, hält ihre Priorität fest und verweist auf die Entscheidungen, die sie ausgelöst hat. Die arc42-Vorlage zum Beispiel verlangt auf der ersten Seite die drei bis fünf wichtigsten Qualitätsziele und später eine ausführlichere Liste von Qualitätsanforderungen. Die Liste wird immer dann überprüft, wenn eine große Entscheidung fällt oder das Unternehmen die Richtung ändert, und die wichtigsten Einträge werden schließlich durch automatisierte Prüfungen abgesichert, sogenannte Fitness Functions, die in Abschnitt 2.8 vorgestellt werden.
Prüfen Sie Ihr Verständnis
Ist „Patienten können online Termine buchen“ eine funktionale Anforderung, ein Qualitätsmerkmal oder eine Randbedingung?
Eine funktionale Anforderung: Sie sagt, was das System tun muss. Eine Qualität würde ergänzen, wie gut, etwa wie schnell Buchungen bestätigt werden oder wie viele sich montags um 8 Uhr bewältigen lassen.
Warum ist „Das System muss skalierbar sein“ noch keine nützliche Anforderung?
Sie hat keinen Stimulus, keinen Kontext und kein Maß. Sie sagt nicht, wie viel Last, wie schnell die Last wächst oder welche Antwort erhalten bleiben muss, also kann niemand darauf hin entwerfen oder sie testen.
Nennen Sie ein Beispiel für eine funktionale Anforderung, die architekturrelevant ist.
Zum Beispiel ein vollständiger Audit-Trail jeder Änderung an Patientenakten oder kollaboratives Bearbeiten in Echtzeit. Beides braucht einen strukturellen Mechanismus im ganzen System, nicht nur mehr Code an einer Stelle.
Welche Frage trennt eine relevante Anforderung am besten von einer gewöhnlichen?
Müsste sich die Struktur des Systems ändern, wenn sich diese Anforderung änderte? Wenn ja, ist sie architekturrelevant.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Wie erkenne ich, ob eine Anforderung in meinem Projekt architekturrelevant ist oder nur ein Detail für die Entwickler?“