| Sicht | Zeigt | Schlüsselfrage |
|---|---|---|
| Logisch | Objekte und Klassen | "Was sind die Hauptkonzepte?" |
| Prozess | Laufzeitinteraktionen | "Was läuft wann?" |
| Entwicklung | Code-Module | "Wie ist der Code organisiert?" |
| Physisch | Hardware-Deployment | "Was läuft wo?" |
| Szenarien (+1) | Use Cases | "Wie fließt eine Anfrage durch?" |
Zeigt die Kernabstraktionen des Systems — die Domänenkonzepte.
Road Profile Viewer - Logische Sicht:
RoadProfile ←── ProfileRepository
↑
└────── GeometryCalculator
↑
└────── ChartBuilder
Kernkonzepte: RoadProfile (Daten), Repository (Speicherung), Calculator (Mathematik), Builder (Visualisierung)
Zeigt was zur Laufzeit passiert — Prozesse, Threads, Interaktionen.
Benutzer → DashApp → Callback → Datenbank
↓
Chart generieren
↓
Aktualisierte Figur zurück
↓
Anzeige für Benutzer
Hilft bei der Analyse: "Jede Benutzerinteraktion löst eine DB-Abfrage aus — ist das ein Engpass?"
Zeigt wie Code in Pakete und Module organisiert ist.
road-profile-viewer/
├── src/
│ ├── models/ # Domänenmodelle
│ ├── repositories/ # Datenzugriff
│ ├── services/ # Geschäftslogik
│ └── presentation/ # Dash UI
├── tests/
└── pyproject.toml
Hilft bei der Koordination: "Anna arbeitet an services/, Ben arbeitet an presentation/."
Szenarien verbinden alle vier Sichten, indem sie eine Benutzeraktion nachverfolgen.
Szenario: Benutzer lädt ein neues Straßenprofil hoch
services/ ruft repositories/ aufIhr braucht kein formales UML für ein Studentenprojekt!
ROAD PROFILE VIEWER ARCHITEKTUR
LOGISCHE SICHT: RoadProfile, ProfileRepository, GeometryCalculator
ENTWICKLUNGSSICHT: src/models/, src/services/, src/presentation/
PROZESSSICHT: Single-threaded Dash, Callbacks, synchrone DB-Abfragen
PHYSISCHE SICHT: Einzelrechner, SQLite, Port 8050
SCHLÜSSELSZENARIO: Profil anzeigen
Benutzer wählt → Callback → DB-Abfrage → Chart → UI-Update
UML (Unified Modeling Language) — standardisierte visuelle Notation.
| UML-Diagrammtyp | 4+1 Sicht | Zeigt |
|---|---|---|
| Klassendiagramm | Logisch | Klassen, Attribute, Beziehungen |
| Sequenzdiagramm | Prozess | Objektinteraktionen über Zeit |
| Paketdiagramm | Entwicklung | Code-Organisation |
| Deployment-Diagramm | Physisch | Hardware-Knoten |
| Use-Case-Diagramm | Szenarien | Akteur-System-Interaktionen |
Für jetzt: Einfaches Markdown + Mermaid-Diagramme sind ausreichend.
| Konzept | Kernpunkt |
|---|---|
| Software-Architektur | Grundlegende Organisation als kommunizierende Komponenten |
| Architekturentscheidungen | Kreativer Prozess, getrieben von NFRs |
| Nicht-funktionale Anforderungen | Performance, Sicherheit, Verfügbarkeit, Wartbarkeit |
| 4+1 Sichten | Logisch, Prozess, Entwicklung, Physisch + Szenarien |
| Trade-offs | Kann nicht alle Qualitäten optimieren; muss priorisieren |
Architektur ist von Tag eins wichtig — auch kleine Projekte profitieren
NFRs formen die Architektur — Performance, Sicherheit, Wartbarkeit treiben Entscheidungen
Mehrere Sichten sind notwendig — kein einzelnes Diagramm erfasst alles
Trade-offs sind unvermeidlich — priorisiert basierend auf den Bedürfnissen eures Systems
Architektur ermöglicht Kommunikation — Diagramme helfen Stakeholdern zu verstehen
Aktuelle Architektur: Wie würdet ihr die Architektur eures Road Profile Viewers beschreiben? Welche Sichten könnt ihr identifizieren?
NFR-Prioritäten: Was sind die drei wichtigsten NFRs für euer Projekt? Wie beeinflussen diese eure Entscheidungen?
Trade-off-Szenario: Einfacher zu warten ODER schneller auszuführen — was würdet ihr wählen? Warum?
4+1 Übung: Zeichnet ein einfaches Diagramm für jede der vier Sichten eures Projekts.
Demnächst: Architekturmuster
Ihr habt gelernt WARUM Architektur wichtig ist.
Jetzt lernt WIE man bewährte Muster anwendet.
Teil 1 Abgeschlossen: Grundlagen und Architekturansichten
Weiter: Teil 2 — Architekturmuster