SWAT-Intensivübung - Cheatsheet
Testmethodologien und Testautomatisierung
Definition:
Testmethodologien bestimmen das Vorgehen im Testprozess, während Testautomatisierung sich auf die automatische Durchführung von Tests fokussiert.
Details:
- Möglichkeit der Wiederholbarkeit und Effizienzsteigerung
- Reduktion menschlicher Fehler
- Verwendung von Frameworks wie JUnit und Selenium
- Unterscheidung zwischen Black-Box- und White-Box-Tests
- Continuous Integration (CI) zur kontinuierlichen Überprüfung von Änderungen
Software-Design-Muster und Architektur
Definition:
Verwendung bewährter Lösungen zur Gestaltung und Strukturierung von Software; Ziel: Wiederverwendung und Wartbarkeit.
Details:
- Design-Muster:
- Erzeugung: Singleton, Factory, Builder
- Struktur: Adapter, Decorator, Composite
- Verhalten: Observer, Strategy, Command
- Architekturansätze:
- Schichtenarchitektur (Layered Architecture)
- Mikroservices
- Ereignisgesteuerte Architektur
- UML zur Visualisierung
- \textit{SOLID}-Prinzipien:
- Single Responsibility Principle (SRP)
- Open/Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
Versionskontrolle und Einsatz von Git
Definition:
Versionskontrolle: Verwaltung von Änderungen an Softwarecode. Git: verteiltes Versionskontrollsystem.
Details:
- Git Befehle:
git init
, git clone
, git add
, git commit
, git push
, git pull
- Branching: parallele Entwicklungszweige (z.B.
git branch
, git checkout
, git merge
) - Remote Repositories: gemeinsam genutzte Code-Repositories (z.B. GitHub, Bitbucket)
- Konfliktlösung: Konflikte bei Merges manuell oder mit Tools lösen
- Best Practices: häufige Commits, aussagekräftige Commit-Nachrichten, Nutzung von Branches für neue Features
Effektive Kommunikation und Meeting-Strategien
Definition:
Techniken zur Verbesserung der Kommunikation und Effizienz in Meetings.
Details:
- Klare Agenda erstellen und verteilen
- Zeitmanagement: Pünktlich beginnen und enden
- Aktives Zuhören und klare Kommunikation
- Vermeiden von Ablenkungen (z. B. Smartphones)
- Klare Aufgabenverteilung und Follow-ups (z. B. Protokoll)
- Visualisierungen nutzen (z. B. Präsentationen, Whiteboards)
Grundlagen von Scrum und Kanban
Definition:
Grundlagen agiler Methoden zur Softwareentwicklung, Fokus auf Flexibilität und Effizienz.
Details:
- Scrum: Iterative Entwicklungsmethode, basiert auf festen Zeiträumen (Sprints).
- Rollen: Product Owner, Scrum Master, Entwicklungsteam.
- Artefakte: Product Backlog, Sprint Backlog, Increment.
- Events: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective.
- Kanban: Visualisierung der Arbeit, Fokus auf kontinuierlichen Fluss.
- Prinzipien: Visualisiere den Workflow, WIP-Limits, explizite Prozessregeln, kontinuierliche Verbesserung.
- Beide Methoden unterstützen selbstorganisierende Teams und inkrementelle Verbesserungen.
Continuous Integration und Continuous Deployment (CI/CD)
Definition:
Automatisierte Prozesse zur kontinuierlichen Integration und Auslieferung von Software.
Details:
- Continuous Integration (CI): Automatisierte Tests und Builds, um Code-Integration in einem gemeinsamen Repository zu gewährleisten.
- Continuous Deployment (CD): Automatisierte Bereitstellung von Anwendungen in Produktionsumgebungen nach erfolgreichem Durchlaufen der CI-Pipeline.
- Tools: Jenkins, Travis CI, GitLab CI/CD.
- Ziele: Schnellere Bereitstellung, Frühzeitige Fehlermeldung, Erhöhte Softwarequalität.
- Wichtige Konzepte: Pipelines, Webhooks, Docker-Container, Versionierung.
Projektplanung und Anforderungsanalyse
Definition:
Planung des Projektablaufs und Sammlung, Analyse sowie Spezifikation der Anforderungen.
Details:
- Projektziele festlegen
- Aufgaben und Meilensteine definieren
- Ressourcenplanung (Zeit, Personal, Budget)
- Anforderungserhebung durch Interviews, Workshops, etc.
- Anforderungsdokumentation und -spezifikation
- Priorisierung und Bewertung der Anforderungen
- Risikoanalyse
- Erstellung des Projektplans
Datenstrukturen und Algorithmen
Definition:
Strukturen zur Organisation von Daten und Methoden zur Lösung von IT-Problemen.
Details:
- Komplexität: Zeit- und Speicherbedarf, Asymptotische Notation: \(O(n)\), \(\Theta(n)\), \(\Omega(n)\)
- Grundlegende Datenstrukturen: Arrays, Linked Lists, Stacks, Queues, Bäume, Graphen
- Algorithmen: Sortieralgorithmen (z.B. Quicksort, Mergesort), Suchalgorithmen (z.B. Binäre Suche), Graphalgorithmen (z.B. Dijkstra, DFS, BFS)
- Hashing: Hashfunktionen, Kollisionen, offene Adressierung, Verkettung
- Dynamische Programmierung: Teilprobleme lösen, Memoisierung