Qualitätsmerkmale in der Softwarearchitektur

Bild 1. Monument Valley Spiel

Lassen Sie uns die Softwarearchitektur weiter untersuchen. Wir haben uns überlegt, wer ein Softwarearchitekt ist, welche Arten von Softwarearchitekten es gibt und was der Architekt zu Beginn eines Projekts tun sollte. Wenn Stakeholder identifiziert und Anforderungen gesammelt werden, stellt sich die Frage, was als nächstes zu tun ist. Nachdem funktionale Anforderungen formuliert sind – oder die Antwort auf die Frage „WAS soll das System“ gefunden ist, beginnt der Softwarearchitekt mit der Suche nach der Antwort auf die Frage „WIE soll das System funktionieren“.“ Nicht funktionale Anforderungen helfen in diesem Fall.

  1. Der Weg zum Softwarearchitekten
  2. Stakeholder in der Softwarearchitektur
  3. Arten von Softwarearchitekten
  4. Qualitätsmerkmale in der Softwarearchitektur
  5. Dokumentation in der Softwarearchitektur
  6. Zertifikate in der Softwarearchitektur
  7. Bücher in der Softwarearchitektur
  8. Spickzettel zum Systemdesign

Was sind die nicht funktionalen Anforderungen?

Non-Functional Requirements (NFRs) definieren die Kriterien, die zur Bewertung des gesamten Systems verwendet werden, jedoch nicht für ein bestimmtes Verhalten, und werden auch als Qualitätsattribute bezeichnet und in Architekturspezifikationen ausführlich beschrieben.

Alle NFR können in zwei Hauptkategorien unterteilt werden:

  • NFRs, die das Systemverhalten, das Design und die Benutzeroberfläche während der Arbeit beeinflussen.
  • NFRs, die sich auf die Entwicklung und den Support des Systems auswirken.

Eine Situation, in der das System die gewünschte Kombination von Qualitätsattributen aufweist, beispielsweise von Usability und Performance oder Zuverlässigkeit, zeigt den Erfolg der Architektur und die Qualität der Software. Beim Entwerfen, um Anforderungen zu erfüllen, ist es wichtig, die Auswirkungen auf andere Attribute zu berücksichtigen und Kompromisse zwischen den Anforderungen zu finden. Gleichzeitig unterscheidet sich der Wert oder die Priorität jedes Attributs von System zu System. Dieser Artikel behandelt nicht alle vorhandenen Attribute, aber die behandelten können ein guter Anfang für die Gestaltung Ihres Systems sein.

Qualitätsattributtypen (ISO / IEC FCD 25010-Diagramm)

Um die Arten von Qualitätsattributen zu berücksichtigen, können wir ein Diagramm von ISO verwenden 25010:

Bild 2. ISO/IEC FCD 25010 Diagramm

Diese Norm beschreibt die Qualitätsmerkmale eines Softwareprodukts. Als nächstes werden wir uns ansehen, was genau jedes Attribut einzeln bedeutet.

Die Leistung zeigt die Reaktion des Systems auf bestimmte Aktionen für einen bestimmten Zeitraum.

Es gibt zwei Möglichkeiten, die Leistung zu messen:

  • Latenz: Zeitaufwand für die Reaktion auf ein Ereignis
  • Kanalkapazität. Die Anzahl der Ereignisse, die zu einem bestimmten Zeitpunkt auftreten.

In der Praxis umfassen die möglichen Leistungsindikatoren beispielsweise:

  • Durchschnittliche/maximale Anzahl von Systembenutzern pro Zeiteinheit.
  • Durchschnittliche Ladezeit der Seite.
  • Durchschnittliche Ausführungszeit der Methode.

Hier finden Sie interessante Latenznummern, die jeder Entwickler kennen sollte.

Leistungsprobleme entwickeln sich sehr oft zu Problemen, die sich auf alles auswirken können, von der Kapazität des Servers oder der Entwicklung Ihres Frontends bis hin zur Effizienz von Datenbankabfragen oder der Kapazität von Kommunikationskanälen.

Die Leistung ist fast immer in der Liste der kritischen Qualitätsattribute enthalten, die vom Architekten berücksichtigt werden müssen, da sie das gesamte System und viele Teile der architektonischen Lösung betrifft. Daher finden Sie im Internet eine Vielzahl von Beispielen für den Umgang mit Leistungsproblemen.

Interoperabilität ist ein Attribut des Systems oder eines Teils des Systems, das für seinen Betrieb und die Übertragung von Daten und deren Austausch mit anderen externen Systemen verantwortlich ist. Ein gut durchdachtes System erleichtert die Integration mit Drittsystemen. Um die Interoperabilität zu verbessern, können Sie gut gestaltete externe Schnittstellen, Standardisierungssysteme usw. verwenden.

Natürlich gibt es viele Probleme für die Interaktion:

  • Veraltete externe Systeme.
  • Verschiedene Datenformate in ähnlichen externen Systemen.
  • Verschiedene Versionen der API in externen Systemen.
  • Abwärtskompatibilität der API für die Integration.
  • Schlechte Qualität und fehlende Standards externer Systeme.

Interoperabilität kann nicht ignoriert werden. Im besten Fall müssen Sie zusätzliche Ebenen für die Interaktions-API erstellen. Im schlimmsten Fall muss das gesamte System neu aufgebaut werden.

Benutzerfreundlichkeit ist eines der wichtigsten Attribute, da Benutzer im Gegensatz zu anderen Attributen direkt sehen können, wie gut dieses Attribut des Systems ausgearbeitet ist. Eines der kritischen Probleme der Benutzerfreundlichkeit ist zu viel Interaktion oder zu viele Aktionen, die erforderlich sind, um eine Aufgabe zu erfüllen. Falsche Abfolgen von Schritten in mehrstufigen Schnittstellen sind ebenfalls ein Problem der Benutzerfreundlichkeit. Datenelemente und Steuerelemente können nicht nach den akzeptierten Mustern der Benutzererfahrung gestaltet sein, was auch die Interaktion erschwert. Wenn Sie beispielsweise eine iOS-Anwendung entwickeln, ist es wichtig, die Richtlinien von Apple oder die Richtlinien von Microsoft für Windows—Desktop-Anwendungen zu verwenden.

Beispiele für wichtige Indikatoren für dieses Attribut sind:

  • Liste der unterstützten Geräte, Betriebssystemversionen, Bildschirmauflösungen und Browser sowie deren Versionen.
  • Elemente, die die Benutzerinteraktion beschleunigen, wie „Hotkeys“, „Vorschlagslisten“ usw.
  • Die durchschnittliche Zeit, die ein Benutzer benötigt, um einzelne Aktionen auszuführen.
  • Unterstützung der Barrierefreiheit für Menschen mit Behinderungen.

Zuverlässigkeit ist ein Attribut des Systems, das für die Fähigkeit verantwortlich ist, unter vordefinierten Bedingungen weiter zu arbeiten. In den meisten Fällen schlägt das System aufgrund der Unzugänglichkeit externer Elemente wie Datenbanken, Systeme und Netzwerkverbindungen fehl.

Verfügbarkeit ist Teil der Zuverlässigkeit und wird als Verhältnis der verfügbaren Systemzeit zur Gesamtarbeitszeit ausgedrückt. Wichtige Indikatoren für dieses Attribut sind:

  • Verfügbarkeit.
  • Geplante Ausfallzeit.
  • Die zeit benötigt, um die software zu aktualisieren, und so weiter.

Die Verfügbarkeit wird häufig in der Anzahl der Neunen nach dem Komma ausgedrückt, dh in den Neunen der Verfügbarkeit (Stunden / Minuten / Sekunden):

  • 2 9 effizienz (99%) = bis zu 87,6h / 5256,0m / 315360,0 Sekunden Ausfallzeit pro Jahr.
  • 3 9’s (99,9%) = bis zu 8,76h / 525,6m / 31536,0 Sekunden Ausfallzeit pro Jahr.
  • 4 9’s (99,99%) = bis zu 0,876h / 52,559999999999995m / 3153,6 Sekunden Ausfallzeit pro Jahr.
  • 5 9’s (99,999%) = bis zu 0,0876h / 5,256m / 315,36 Sekunden Ausfallzeit pro Jahr.
  • 6 9’s (99,9999%) = bis zu 0,00876h / 0,5256000000000001m / 31.536 Sekunden Ausfallzeit pro Jahr.
  • 7 9’s (99,99999%) = bis zu 8,76E-4h / 0,05256m / 3,1536 Sekunden Ausfallzeit pro Jahr.

Beispielsweise ist die Verfügbarkeit eines der Hauptkriterien für das Tier-Ranking von Rechenzentren in den USA.

Sicherheit ist verantwortlich für die Fähigkeit des Systems, die Wahrscheinlichkeit böswilliger oder versehentlicher Handlungen sowie die Möglichkeit des Diebstahls oder Verlusts von Informationen zu verringern. Zum Schutz von Systemen werden verschiedene Maßnahmen ergriffen: authentifizierung, Verschlüsselung, Audit und andere.

Beispiele für dieses Attribut in der Arbeit des Systems sind:

  • Die Fähigkeit des Systems, DDoS-Angriffe zu erkennen und darauf zu reagieren.
  • Einschränkungen des Benutzerzugriffs durch Authentifizierung/Autorisierung.
  • Verhinderung von SQL-Injection.
  • Verschlüsselung von Passwörtern und Inhalten.
  • Sichere Verbindung.

Wartbarkeit ist die Fähigkeit des Systems, Änderungen zu unterstützen. Änderungen können sich auf neue Geschäftsanforderungen oder die Korrektur alter Fehler beziehen und Systemkomponenten oder separate Methoden betreffen. Die Wartbarkeit wirkt sich auch auf die Zeit aus, die zum Wiederherstellen des Systems nach einem Ausfall erforderlich ist. Übermäßige Abhängigkeiten zwischen Komponenten wirken sich sehr negativ auf die Wartbarkeit aus. In der Programmierung gibt es einen Begriff von Anti-Pattern-Spaghetti-Code, was übermäßige Kohärenz im Code bedeutet. In der Architektur gibt es so etwas nicht, aber Architektur ist in diesem Sinne der Programmierung sehr nahe. Aufgrund des Attributs der Wartbarkeit sind Konzepte wie Verantwortlichkeitstrennung, Mikroservice-Architekturen und Modularität aufgetaucht. Gleichzeitig betrifft dieses Attribut nicht nur Entwicklungsprozesse, sondern auch Managementprozesse (z. B. Aufteilung von Teams in produktbezogene Teile).

Die Änderbarkeit bestimmt, wie viele allgemeine Änderungen am System vorgenommen werden müssen, um Änderungen an jedem Element vorzunehmen. Das Ideal ist der Fall, wenn jede Änderung nur ein Element betrifft.

Die Testbarkeit zeigt, wie gut das System Tests nach vordefinierten Kriterien durchführen kann. Neben der Testleistung ermöglicht die Testbarkeit eine effektive Unterteilung des Systems in Subsysteme.

Die Hauptindikatoren für dieses Attribut sind:

  • Prozentsatz der Abdeckung mit modularen, Integrations- oder Komponententests.
  • Die endgültige Liste der erforderlichen Testumgebungen sowie die endgültige Liste der verwendeten Testansätze (manuell / automatisch, Regression, Integration usw.).

Andere grundlegende Qualitätsmerkmale werden von der Norm nicht abgedeckt, können aber in diesem Artikel nicht ignoriert werden.

Skalierbarkeit ist die Fähigkeit des Systems, Laststeigerungen zu bewältigen, ohne die Leistung zu beeinträchtigen, oder die Möglichkeit, die Last schnell zu erhöhen.

Es gibt zwei Möglichkeiten, die Skalierbarkeit zu verbessern:

  • Vertikal: Um zu erhöhen, fügen wir mehr Ressourcen wie Speicher, Festplatten oder Prozessoren zu einem System hinzu.
  • Horizontal: Wir erhöhen die Anzahl der Recheneinheiten und teilen die Last.

Die Schlüsselindikatoren zur Messung dieses Attributs sind:

  • Wenn das System eine horizontale Skalierung zulässt.
  • Die Zeit, die benötigt wird, um die Skalierung zu erhöhen, in Sekunden.
  • Skalierungseinschränkungen: die Anzahl der Server oder die Netzwerkkapazität.
  • Möglichkeit zur Skalierung: die Erhöhung der Anzahl der Transaktionen oder der Menge des Inhalts.

Und dies ist nur ein kleiner Teil der Indikatoren, die Sie beim Entwerfen beachten müssen. Skalierbarkeit ist eines der wichtigsten Attribute, unabhängig von der Projektphase.

Wiederverwendbarkeit ist eine Chance, eine Komponente oder ein System in anderen Komponenten / Systemen mit geringer oder keiner Änderung zu verwenden. Trennung der Verantwortlichkeiten, Modularisierung, Verringerung der Copy-Paste sind alle über Wiederverwendbarkeit. Das Kopieren von Code oder, noch schlimmer, die Verwendung verschiedener Komponenten für dasselbe Ergebnis in verschiedenen Modulen ist eines der größten Probleme der Wiederverwendbarkeit.

Unterstützbarkeit ist die Fähigkeit des Systems, nützliche Informationen zur Identifizierung und Lösung von Problemen bereitzustellen. Die Hauptprobleme bei der Gewährleistung der Unterstützbarkeit können mit folgenden Mitteln angegangen werden:

  • Keine Diagnose: Wie die Aktivität und Leistung des Systems gesteuert werden. Es umfasst verschiedene Arten der Protokollierung.
  • Keine Tools zur Fehlerbehebung: Dazu gehören Sicherungen, verschiedene Systeme zum Erstellen von Snapshots des Systems und Tools zum Überwachen des Systems. Wenn das System ausfällt, ist es immer angenehmer, auf einen automatischen Neustart zu warten, als das Problem manuell zu lösen.
  • Keine Integritätsprüfung: Dies umfasst eine Vielzahl von Systemen zur Messung der Kompilierungszeit, der Bereitstellungszeit, der Datenbankgröße oder der Größe mobiler Anwendungen.

Meistens werden diese in Start-ups oder kleinen Projekten zunächst nicht berücksichtigt. Die Kosten für die Aufrechterhaltung des Supportability-Attributs sind hoch und das Ergebnis ist nur in großem Maßstab sichtbar. Mit dem Wachstum des Teams und des Produkts wird dieses Attribut jedoch zu einem der wichtigsten.

Dieser Artikel ist in zwei Teile gegliedert. Im zweiten Teil betrachten wir die Ansätze zur Priorisierung von Qualitätsattributen und beantworten die Frage, warum es so wichtig ist, die richtigen Prioritäten zu wählen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.