2.4 KiB
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.