| Erzeugungsmuster (Creational) | Strukturmuster (Structural) | Verhaltensmuster (Behavioral) |
|---|---|---|
| Regeln die Objekterstellung | Beschreiben Aufbau und Beziehungen von Klassen | Beschreiben Kommunikation zwischen Objekten |
| Singleton – Nur eine Instanz einer Klasse existiert | Adapter – Wandelt eine Schnittstelle in eine andere um | Observer – Objekte reagieren automatisch auf Änderungen |
| Factory Method – Objekterstellung wird ausgelagert | Facade – Vereinfacht den Zugriff auf ein komplexes Subsystem | Strategy – Algorithmen können zur Laufzeit gewechselt werden |
| Builder – Komplexe Objekte werden Schritt für Schritt aufgebaut | Decorator – Funktionalität wird dynamisch erweitert | Command – Aktionen werden als Objekte gekapselt |
DDD ist ein Ansatz, bei dem die Fachdomäne im Mittelpunkt steht.
Zur besseren Strukturierung komplexer Systeme und gemeinsamer Sprache zwischen Fachbereich und Entwicklern.
Abgegrenzter Bereich mit eindeutigen Begriffen.
Objekt mit eindeutiger Identität.
| Strukturdiagramme (statisch) | Verhaltensdiagramme (dynamisch) |
|---|---|
| Klassendiagramm – Klassen, Attribute, Methoden, Beziehungen | Use-Case-Diagramm – Funktionen aus Benutzersicht |
| Objektdiagramm | Sequenzdiagramm – Zeitlicher Ablauf von Kommunikation |
| Komponentendiagramm | Aktivitätsdiagramm – Abläufe und Prozesse |
| Paketdiagramm | Zustandsdiagramm – Zustände und Übergänge eines Objekts |
| Verteilungsdiagramm | Kommunikationsdiagramm |
Beispiel:
GET /api/users
Vor allem in Datenbanken und REST APIs.
SQL (Structured Query Language) ist eine Sprache zur Verwaltung von Datenbanken.
| Merkmal | Relationale DB (SQL) | Nicht-relationale DB (NoSQL) |
|---|---|---|
| Struktur | Tabellen mit festen Spalten | Dokumente, Key-Value, Graphen |
| Abfragesprache | SQL | Abhängig vom System |
| Schema | Fest vorgegeben | Flexibel |
| Stärken | Konsistenz, Beziehungen zwischen Tabellen | Skalierbarkeit, Flexibilität |
| Beispiele | MySQL, PostgreSQL, SQLite | MongoDB, Redis, Cassandra |
Ein leichtgewichtiges Datenbanksystem ohne Server.
| Merkmal | JSON | CSV | XML |
|---|---|---|---|
| Struktur | Schlüssel-Wert-Paare, verschachtelbar | Tabellarisch, Zeilen und Spalten | Baumstruktur mit Tags |
| Lesbarkeit | Gut | Sehr gut | Mäßig (viele Tags) |
| Overhead | Mittel | Klein | Groß |
| Verschachtelung | Ja | Nein | Ja |
| Einsatzgebiet | Web-APIs, Konfiguration | Tabellendaten, Exporte | Dokumentenaustausch, Legacy-Systeme |
| Beispiel | {"name": "Max"} |
Max,25 |
<name>Max</name> |
Secure Shell – sichere Verbindung zu entfernten Rechnern.
Daten werden verschlüsselt übertragen.
Telnet überträgt unverschlüsselt, SSH ist sicher.
| Vorteile | Nachteile |
|---|---|
| Fehler werden früh erkannt | Mehr Schreibaufwand |
| Bessere IDE-Unterstützung (Autovervollständigung) | Weniger flexibel |
| Code ist selbstdokumentierend | Höherer Einarbeitungsaufwand |
| Einfachere Wartung in großen Projekten | Kompilierungsschritt nötig (bei statischen Sprachen) |
| Sprache | Typisierung | Hinweis |
|---|---|---|
| TypeScript | Statisch, stark | Erweiterung von JavaScript |
| Java | Statisch, stark | Typen immer angeben |
| C# | Statisch, stark | Ähnlich wie Java |
| Python | Dynamisch, stark | Typen optional (Type Hints) |
| JavaScript | Dynamisch, schwach | Keine Typprüfung |
let alter: number = 20;
Zur Qualitätssicherung und Fehlererkennung.
| Statische Tests | Dynamische Tests |
|---|---|
| Ohne Ausführung des Programms | Mit Programmausführung |
| Code Review – Überprüfung von Code durch andere Entwickler; verbessert Qualität, Wartbarkeit und reduziert Fehler | Unit-Test – Einzelne Funktionen werden isoliert getestet |
| Schreibtischtest – Manuelles Durchgehen eines Programms zur Fehlerfindung; erkennt Logikfehler früh | Integrationstest, Systemtest, Akzeptanztest |
| Blackbox-Test | Whitebox-Test |
|---|---|
| Nur Ein-/Ausgabe wird geprüft | Interne Logik ist bekannt |
| Kein Einblick in den Code nötig | Tester kennt den Quellcode |
| Stufe | Beschreibung |
|---|---|
| Unit-Test | Einzelne Funktionen werden isoliert getestet |
| Integrationstest | Zusammenspiel mehrerer Komponenten |
| Systemtest | Gesamtes System wird geprüft |
| Akzeptanztest | Abnahme durch den Kunden |
| Begriff | Beschreibung |
|---|---|
| Testautomatisierung | Automatische Ausführung von Tests |
| Regressionstest | Prüft, ob Änderungen Fehler verursachen |
| Testfall | Beschreibt Eingaben und erwartetes Ergebnis |
| Grenzwertanalyse | Test von Randwerten (0, 1, max, min) |