feat: split large exercise blocks into smaller ones

This commit is contained in:
2025-07-10 13:01:53 +02:00
parent 8d39486d67
commit 4da8446f37
7 changed files with 148 additions and 59 deletions

View File

@ -1,4 +1,3 @@
import { Exercise } from '../types';
export const swaExercises2: Exercise[] = [
@ -66,8 +65,8 @@ export const swaExercises2: Exercise[] = [
explanation: '### Lösungserklärung\n\n**Zweck des Canvas**\nEin Canvas ist ein Kommunikations- und Analysewerkzeug. Das **Architecture Inception Canvas** im Speziellen hilft Teams, zu Beginn eines Projekts schnell ein gemeinsames Verständnis ("Big Picture") für die wichtigsten architektonischen Treiber zu entwickeln. Es strukturiert die Diskussion und stellt sicher, dass wesentliche Aspekte nicht übersehen werden.\n\n**Ausgewählte Kategorien**\n- **Functional Overview:** Fasst den Kern dessen zusammen, was das System tun soll.\n- **Quality Goals:** Zwingt das Team zur Priorisierung der wichtigsten nicht-funktionalen Anforderungen (Qualitätsziele), die die Architektur maßgeblich beeinflussen.\n- **Technical Constraints:** Listet nicht verhandelbare technische Randbedingungen auf, die den Lösungsraum von vornherein einschränken.\n\n### Quellen\n*Folien 2.3, Seite 2-6*'
},
{
id: 'swa-2-5-sichten',
title: '2.5 - SWA - Entwurf der Sichten',
id: 'swa-2-5-sichten-a',
title: '2.5 - SWA - Entwurf der Sichten (Teil 1)',
parts: [
{
id: '2-5-a',
@ -96,7 +95,14 @@ export const swaExercises2: Exercise[] = [
solution: 'Lose Kopplung bedeutet, dass Komponenten nur wenige Details voneinander kennen und über stabile Schnittstellen interagieren. Enge Kopplung bedeutet, dass Komponenten viele Details voneinander kennen. Lose Kopplung ist zu bevorzugen, da sie die Wartbarkeit, Testbarkeit und Flexibilität des Systems verbessert.',
points: 5,
type: 'text',
},
}
],
explanation: '### Lösungserklärung\n\n**Architektursichten** sind verschiedene Perspektiven auf ein System. Die vier Sichten nach Starke (Kontext, Baustein, Laufzeit, Verteilung) sind ein Standard, um Architektur umfassend zu beschreiben.\n\nDie **Bausteinsicht** ist die statische "Landkarte" des Systems. Sie zeigt **Komponenten**, die idealerweise eine klare **Verantwortlichkeit** haben, ihre Implementierung verstecken (**Information Hiding**) und über definierte **Schnittstellen** kommunizieren. Das Ziel ist **lose Kopplung** (wenig Abhängigkeiten) und **hohe Kohäsion** (alles in einer Komponente gehört eng zusammen). Hierbei unterscheidet man **A-Architektur** (fachlich) von **T-Architektur** (technisch).\n\n### Quellen\n*Folien 2.5, Seite 3-55*'
},
{
id: 'swa-2-5-sichten-b',
title: '2.5 - SWA - Entwurf der Sichten (Teil 2)',
parts: [
{
id: '2-5-e',
prompt: 'Skizzieren Sie sinnvolle Abhängigkeiten zwischen den Komponenten eines E-Commerce-Systems (OrderManagement, CustomerManagement, ProductCatalog, Payment, Shipping).',
@ -111,20 +117,27 @@ export const swaExercises2: Exercise[] = [
points: 5,
type: 'text',
},
{
{
id: '2-5-g',
prompt: 'Erstellen Sie ein Sequenzdiagramm (Laufzeitsicht) für einen einfachen Bestellprozess in Mermaid-Syntax. Beteiligt sein sollen ein Client, ein OrderService und ein PaymentService.',
solution: '```mermaid\nsequenceDiagram\n participant Client\n participant OrderService\n participant PaymentService\n\n Client->>OrderService: createOrder(orderDetails)\n activate OrderService\n OrderService->>PaymentService: processPayment(paymentDetails)\n activate PaymentService\n PaymentService-->>OrderService: paymentSuccessful\n deactivate PaymentService\n OrderService-->>Client: orderConfirmation\n deactivate OrderService\n```',
points: 6,
type: 'mermaid',
},
{
{
id: '2-5-h',
prompt: 'Beurteilen Sie kritisch: Ein Entwicklungsteam argumentiert: "Wir brauchen keine expliziten Sichten - unser Code ist gut strukturiert und selbsterklärend."',
solution: 'Diese Aussage ist kritisch zu betrachten. Selbst gut strukturierter Code zeigt nur Implementierungsdetails, aber kein "Big Picture". Sichten bieten eine höhere Abstraktionsebene, die für die Kommunikation mit verschiedenen Stakeholdern (Nicht-Entwickler), die Einarbeitung neuer Teammitglieder und für grundlegende Architekturentscheidungen unerlässlich ist.',
points: 6,
type: 'text',
},
}
],
explanation: '### Lösungserklärung\n\nEin gutes **API-Design** ist entscheidend für lose Kopplung. Es sollte präzise, selbsterklärend und stabil sein.\n\nDie **Laufzeitsicht** (z.B. als **Sequenzdiagramm**) zeigt das dynamische Zusammenspiel der statischen Bausteine zur Erfüllung eines Anwendungsfalls. Sie validiert, ob die Bausteinsicht funktioniert.\n\nAuch bei gutem Code sind **explizite Sichten** unverzichtbar. Sie bieten eine Abstraktionsebene über dem Code, die für Kommunikation und das Verständnis des Gesamtsystems ("Big Picture") notwendig ist.\n\n### Quellen\n*Folien 2.5, Seite 3-55*'
},
{
id: 'swa-2-5-sichten-c',
title: '2.5 - SWA - Entwurf der Sichten (Teil 3)',
parts: [
{
id: '2-5-i',
prompt: 'In welcher Reihenfolge geht man bei der Sichtenerstellung am besten vor?',
@ -133,6 +146,6 @@ export const swaExercises2: Exercise[] = [
type: 'text',
}
],
explanation: '### Lösungserklärung\n\n**Architektursichten** sind verschiedene Perspektiven auf ein System. Die vier Sichten nach Starke (Kontext, Baustein, Laufzeit, Verteilung) sind ein Standard, um Architektur umfassend zu beschreiben. Die **Erstellung erfolgt iterativ**, oft beginnend mit dem Kontext.\n\nDie **Bausteinsicht** ist die statische "Landkarte" des Systems. Sie zeigt **Komponenten**, die idealerweise eine klare **Verantwortlichkeit** haben, ihre Implementierung verstecken (**Information Hiding**) und über definierte **Schnittstellen** kommunizieren. Das Ziel ist **lose Kopplung** (wenig Abhängigkeiten) und **hohe Kohäsion** (alles in einer Komponente gehört eng zusammen). Hierbei unterscheidet man **A-Architektur** (fachlich) von **T-Architektur** (technisch).\n\nEin gutes **API-Design** ist entscheidend für lose Kopplung. Es sollte präzise, selbsterklärend und stabil sein.\n\nDie **Laufzeitsicht** (z.B. als **Sequenzdiagramm**) zeigt das dynamische Zusammenspiel der statischen Bausteine zur Erfüllung eines Anwendungsfalls. Sie validiert, ob die Bausteinsicht funktioniert.\n\nAuch bei gutem Code sind **explizite Sichten** unverzichtbar. Sie bieten eine Abstraktionsebene über dem Code, die für Kommunikation und das Verständnis des Gesamtsystems ("Big Picture") notwendig ist.\n\n### Quellen\n*Folien 2.5, Seite 3-55*'
explanation: '### Lösungserklärung\n\nDie **Erstellung der Sichten erfolgt iterativ**, oft beginnend mit dem Kontext, dann der Bausteinsicht und der Laufzeitsicht im Wechsel, um den Entwurf zu validieren und zu verfeinern.\n\n### Quellen\n*Folien 2.5, Seite 3-55*'
}
];