Files
isaqb-cpsa-f/src/lz2/2_08.md
2024-02-13 15:51:50 +01:00

2.4 KiB

LZ 2-8: Qualitätsanforderungen mit passenden Ansätzen und Techniken erreichen

Später wird das Thema Qualität noch ausführlicher behandelt. Die Erreichung von Qualitätsanforderungen ist eine der wichtigsten Aufgaben von Softwarearchitekt:innen. Dabei können die im Folgenden beschriebenen Architekturtaktiken helfen. Diese Taktiken sind wiederkehrende Muster, die dabei helfen können, bestimmte Kategorien von Qualitätsanforderungen systematisch zu erreichen.

Performanztaktiken

  • Verringerung von Resourcenanforderungen, indem unnötiger
    • unnötiger Overhead vermieden,
    • Berechnungszeiten verlängert und
    • die Effizienz der verwendeten Algorithmen verbessert wird.
  • Resourcen verbessert nutzen durch
    • eine balancierte Nutzung der Resourcen, etwa durch Load Balancer,
    • die Erhöhung der verfügbaren Resourcen, also vertikale oder horizontale Skalierung, und
    • die Replikation von Daten.
  • Vermittlung zwischen widersprüchlichen Anforderungen vermitteln durch:
    • Scheduling von Aufgaben sowie
    • eine erhöhte Anzahl gleichzeitig ablaufender Prozesse und Synchronisation zwischen diesen

Verfügbarkeitstaktiken

  • Fehlererkennung durch Konzepte wie
    • Pings und Heartbeats,
    • Health checks und Selbsttests oder
    • Monitoring
  • Resilienz, also die Fähigkeit, Fehler zu verzeihen und sich von ihnen zu regenerieren, kann erreicht werden durch
    • Redundanz,
    • Fehlerbehandlung,
    • Rollbacks,
    • Retries, oder
    • das bewusste Ignorieren der Fehler, wenn sie für den Kontrollfluss nicht so wichtig sind.
  • Fehler können vermeiden werden, indem
    • fehlerhafte Komponenten aus dem System entfernt,
    • Transaktionen verwendet und
    • Exceptions vermieden werden.

Wartbarkeitstaktiken

  • Erwartbare Änderungen sollten möglichst lokal gehalten werden, damit der Aufwand für diese Änderungen möglichst gering bleibt. Das kann durch
    • eine Verringerung der Größe oder Aufteilung von Modulen,
    • Kapselung von Komponenten und
    • die Verringerung von Abhängigkeiten und Kopplung erreicht werden.
  • Sichtbarkeit beschränken durch
    • Die Befolgung des Geheimnisprinzips,
    • Konstante und abwärtskompatible Schnittstellen, und
    • die Trennung von Schnittstellen von ihrer Implementierung.
  • Vermeidung von Nachwirkungen und Kettenreaktionen, indem
    • Abhängigkeitsketten aufgebrochen und
    • Kommunikationswege beschränkt werden.