Montag, 1. Mai 2023

Resilienz von Systemen Teil II - Anforderungen und Systemspezifikationen

 Die Systemspezifikation spielt bei der Robustheit eine entscheidende Rolle. Noch mehr als ein Systemmodell hat die Erfüllung bestimmter formaler Merkmale einen großen Einfluss auf den Wert einer Spezifikation. Eine Systemspezifikation ist beispielsweise unerlässlich, um Designvariationen zu reduzieren. Ähnlich wie bei einer Richtlinie kann eine Spezifikation so vage sein, dass viele technisch unterschiedliche mögliche Systemdesigns noch spezifikationskonform sein können, was zu unnötigen Abweichungen führt. Was Compliance für Richtlinien ist, ist Konformität für Spezifikationen.

Die Kriterien für die Systemspezifikation sind wie folgt:

- Eine Systemspezifikation steht als schriftliches Dokument zur Verfügung.

- Subjekt-Experten können überprüfen, ob die angegebenen Funktionalitäten , Implementierungen, Konfigurationen und Ausführungsverfahren zu einer Lösung führen, die die angegebenen Anforderungen erfüllt.

- Die Anwendung der Systemspezifikation führt zu einer funktionierenden Lösung.

- Die Anwendung der Systemspezifikation durch verschiedene Personen führt zu identischen Ergebnissen.

- Die Feststellung durch verschiedene Personen, ob ein bestimmtes Systemdesign spezifikationskonform ist, führt zu identischen Ergebnissen.

- Die Systemspezifikation ist in das Änderungsmanagement integriert.

Die Rolle der Anforderungen an die Robustifizierung

Die Anwendung von robustifizierungsstrategien verändert ein System. 
Eine solche Änderung ist nur dann sinnvoll, wenn die Funktionalität des Systems nicht beeinträchtigt wird, und wenn die neuen Systemeigenschaften - hoffentlich eine bessere Robustheit unter ihnen - als Fortschritt angesehen werden können.

Robustifizierung ist eine technische Disziplin, die lehrt , wie man ein technisches Problem besser als bisher löst. Dies ist nur möglich, wenn ein klares Verständnis der erforderlichen Funktionalität vorhanden ist, was in der Regel nicht Teil eines Systemmodells ist. Ein gutes Systemmodell sagt zwar, wie ein bestimmtes System gestaltet ist, erklärt aber in der Regel nicht, warum dieses spezielle Design gewählt wurde. Die Unfähigkeit, die Gründe für bestimmte Systemdesign-Entscheidung zu identifizieren, ist dagegen ein Hinweis auf ein unvollständiges Systemverständnis.

Anforderungen unterliegen nicht dem Aufwand für die Robustheit, und die Robustheit versucht nicht zu überprüfen, ob dokumentierte Anforderungen angemessen sind. In konkreten Robustheitsprojekten ist dies ein wichtiges Thema für die Kommunikation mit den Endanwendern, die in der Regel befürchten, dass ihre Anforderungen nicht mehr erfüllt werden, nachdem ihr System von Dritten „verbessert“ wurde.

Spezifikationsartikel

Ein Pflichtenheft verbindet Anforderungen, Funktion, Implementierung, Konfiguration und Ausführungsverfahren.


Spezifikationsfehler #1: Die Spezifikation endet vorzeitig nach unten.
Dies lässt Raum für Variabilität, wobei verschiedene Funktionen, Implementierungen (Produkte) oder Verfahren (Konfigurationen) verwendet werden können, die alle Spezifikationskonform sind.

Die Anforderung nach schneller Fehlerbehebung wird oft durch Fernzugriff erfüllt. Es bleibt jedoch offen, wie der Fernzugriff gestaltet und ausgeführt werden soll. In realen Installationen wird daher ein Mix aus Dial-in-Modelms und Internet/VPN-Zugang mit unterschiedlichen Protokollen und Produkten verwendet.

Spezifizierungsfehler #2: Die Spezifikation endet vorzeitig nach oben.
Dies erfordert lediglich ein bestimmtes Produkt, eine bestimmte Technologie oder Funktionalität , ohne zu sagen, warum. Da Anforderungen und Funktionalität nicht detailliert beschrieben sind, gibt es wenig Möglichkeiten, die vorgeschriebene Verwässerung durch eine Alternative zu ersetzen, z.B. wenn das betreffende Produkt oder die betreffende Technologie veraltet ist und nicht mehr zum Kauf angeboten wird.

Der Spezifikationsbaum

Für jede Anforderung gibt es in der Regel mehr als eine Möglichkeit , ihre Funktion zu erfüllen. Für jede Funktion gibt es in der Regel mehr als eine Möglichkeit , sie zu implementieren. Und für jede Implementierung gibt es in der Regel mehr als eine Möglichkeit, sie in Bezug auf Konfiguration, Umgebung, Kontext usw auszuführen.
Daher ist die Spezifikation, einem Entscheidungsbaum ähnlich, bei dem jeder neue Zweig einen neuen Satz von Variabilität eröffnet.

Eine gute Spezifikation begrenzt die Anzahl der möglichen Funktionen, Implementierungen, Konfigurationen und Verfahren - idealerweise auf eine einzige Instanz in jedem Knoten, wodurch die Variabilität reduziert wird. Eine gute Spezifikation erlaubt keine beliebigen alternativen Funktionen, Implementierungen und Prozeduren. Im Idealfall sollte es nur eine mögliche spezifikationskonforme Implementierung geben, d.h. Nur einen bestimmten Pfad von der Anforderung (root) zur Prozedur (leaf).

Eine gute Spezifikation ermöglicht es aber auch, festzustellen, ob alternative Verfahren, Implementierungen und Funktionen, die robuster sein können als die ursprüngliche Lösung , die Anforderungen noch erfüllen. Dies ist eine wesentliche Grundlage für die Robustheit.

Spezifische Betreibsbedingungen

Die Betriebsbedingungen legen fest, unter welchen Bedingungen eine bestimmte Implementierung und/oder ein bestimmtes Verfahren getestet und zuverlässig ist und unter welchen nicht. 

Ressourcenanforderungen und Abhängigkeiten

Die Spezifikation muss alle Ressourcen identifizieren, die von der Systemumgebung bereitgestellt werden müssen, damit das System wie angegeben funktionieren kann.
Zum Beispiel, wenn es einen Bedarf gibt an

- Ein DHCP-Server, DNS-Server oder NTP-Server, der über das Netzwerk zugänglich ist.
- Ein bestimmtes Produkt eines Drittanbieters, wie beispielsweise eine Datenbankmaschine.
- Eine bestimmte Softwarekomponente , wie z.B. eine DLL in einer bestimmten Version.

Damit das System funktioniert , höchstwahrscheinlich mit speziellen Konfigurationseinstellungen, muss dies dokumentiert werden.

Betriebsgrößen: Bedingungen , die für eine ordnungsgemäße Ausführung zu vermeiden sind.

Jedes technische System hat Betriebsgrenzen, über die hinaus die Funktionalität beeinträchtigt ist, und Betriebsvoraussetzungen, die erfüllt sein müssen, damit das System funktioniert. Der Planer und Implementierer des Systems erwartet, dass das System innerhalb dieser Grenzen betrieben wird. Leider bedeutet dies nicht, dass solche Grenzwerte, die genauso real sind wie ihre elektrischen Gegenstücke, zwangsläufig ordnungsgemäß dokumentiert werden müssen.

Variation sind nicht dasselbe wie ungültige Eingaben, Stress und Fehler.
Fehler und Störungen sind Verstöße gegen vorgegebene Parameter. Wenn keine Spezifikation existiert , kann sie nicht verletzt werden - dennoch versagen reale Systeme auch ohne Spezifikation, sie können nicht versagt werden - dennoch versagen reale Systeme auch ohne Spezifikation aufgrund einer de facto-Verletzung von Betriebsbedingungen.

Ein System ohne vorgegebene Betriebsgrenzen ist fragil, da die Leistung des Systems unter bestimmten Bedingungen nicht vorhergesagt oder garantiert werden kann.


Erster Teil:

https://einsiedlerkreps.blogspot.com/2023/04/resilienz-von-systemen.html

Keine Kommentare:

Kommentar veröffentlichen