Woche 8 ASR-Dokumentation #9
Replies: 2 comments
-
|
Hallo, Wie habt ihr die SVG-Interaktionen implementiert? Nutzt ihr spezielle Libraries oder Eigenentwicklungen für das Eventhandling und die Darstellung? Gruppe Caesars Gambit |
Beta Was this translation helpful? Give feedback.
-
|
Hey, [Nom Nom Now] |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Architekturentscheidungen für BitFlow - von ASR zur Struktur
In dieser Iteration haben wir uns systematisch damit beschäftigt, welche Anforderungen bei BitFlow wirklich architekturrelevant sind und wie wir unsere Struktur daran ausrichten. Ausgangspunkt waren die Architecture Significant Requirements (ASR), die wir mit Hilfe der 6-Part-Form beschrieben und anschließend in einem Utility-Tree priorisiert haben.
Architecture Significant Requirements (ASR)
1. Warum gerade diese Qualitätsattribute?
Aus der Aufgabenstellung und aus unserer eigenen Zielsetzung für BitFlow ergaben sich sechs zentrale Qualitätsattribute:
Die Szenarien P1, U1, R1/R2, M1, S1/S2 und A1 konkretisieren diese Punkte - etwa Echtzeitreaktion im Editor, stabile Undo/Redo-Ketten oder Autosave bei Browserabsturz. Genau diese Szenarien haben wir als „Treiber“ für unsere Architektur verwendet.
2. Von den ASR zu Taktiken
Aus den Szenarien haben wir gezielt passende Taktiken abgeleitet:
Performance: Eventgetriebene Simulation, Batch-Updates im UI, asynchrone Ausführung.
Ziel: Änderungen in Netzwerken bis ca. 200 Gattern in ≤ 50 ms propagieren.
Usability: Sofortiges visuelles Feedback (Drag & Drop, Wire-Preview), farbliche Signalzustände und ein eindeutiges SVG-Grid als Orientierung.
Reliability: Validierung vor der Simulation, Snapshot-basiertes Undo/Redo sowie Autosave im lokalen Speicher.
Modifiability: Trennung der Kernmodule (Separation of Concerns), abstrakte Interfaces (Simulation, Storage, Components) und eine erweiterbare Bausteinbibliothek.
Security: Login/Session-Mechanismen und strikte Zugriffskontrolle auf Projekte.
Diese Taktiken sind direkt an die definierten ASR-Szenarien gebunden, z. B. Autosave bei R2 oder Isolation im WebWorker bei A1.
3. Warum diese Architekturstruktur?
Auf Basis der Taktiken haben wir uns für ein vierteiliges Architekturmodell entschieden:
Diese Trennung folgt direkt aus Modifiability und Testability:
Damit sind die zentralen ASR M1 (Modifiability) und R1/R2 (Reliability) direkt durch die Struktur abgedeckt.
4. Spezifische Entscheidungen und ihre Gründe
Undo/Redo als separater Service mit Zustandssnapshots
Wir speichern vollständige Schaltungszustände statt einzelner Operationen.
Grund: Höhere Robustheit und einfacheres Zurückspringen, egal wie viele Bearbeitungsschritte erfolgt sind (R1).
Compiler als eigenständiges Modul
Benutzerdefinierte Bausteine werden nicht „ad hoc“ verarbeitet, sondern erst validiert und in ausführbare Logik übersetzt.
Grund: Saubere Trennung von Definition und Ausführung sowie bessere Fehlermeldungen (M1, Testability).
Library als zentrale Registry
Alle Standard- und Custom-Komponenten laufen über eine gemeinsame Registry.
Grund: Einheitliche Schnittstelle für das UI, geringere Kopplung, einfaches Nachladen neuer Komponenten (M1).
Simulation über eine abstrahierte Schnittstelle
Die Simulation ist austauschbar (Strategy-ähnlich).
Grund: Unterstützt verschiedene Simulationsmodi (Echtzeit, Schrittweises Ausführen, Analyse), ohne das UI oder die Datenstrukturen anzupassen (Modifiability).
Lose Kopplung zwischen Core und UI
UI-Komponenten reagieren auf Änderungen im Core (Signaländerungen).
Grund: Sofortiges Feedback und hohe Responsiveness (Usability). Gleichzeitig bleibt die Architektur flexibel.
5. Entwurfsmuster im Kontext unserer Anforderungen
Die eingesetzten Muster sind unmittelbar aus den ASR abgeleitet:
6. Fazit
Unsere Architekturentscheidungen ergeben sich direkt aus den zuvor formulierten ASR:
Durch diese Verbindung von ASR, Taktiken und Architektur ergibt sich eine Struktur, die erweiterbar, stabil und für Nutzer gut bedienbar ist.
Beta Was this translation helpful? Give feedback.
All reactions