Praktikum angewandte Systemsoftwaretechnik - Cheatsheet
Anforderungsanalyse und Projektplanung
Definition:
Anforderungsanalyse und Projektplanung befasst sich mit dem Identifizieren und Dokumentieren der Anforderungen sowie der systematischen Planung des Projekts.
Details:
- Ziele klären: Anforderungen verstehen und priorisieren.
- Dokumentation: Anforderungen schriftlich festhalten (Lastenheft, Pflichtenheft).
- Ressourcenplanung: Bestimmen von Personal, Zeit und Budget.
- Risikoanalyse: Potenzielle Risiken erkennen und bewältigen.
- Zeitplan: Meilensteine und Deadlines festlegen.
- Kommunikation: Regelmäßiger Austausch im Team und mit Stakeholdern.
Versionskontrollsysteme (z.B. Git)
Definition:
Versionskontrollsysteme (VCS) verwalten Änderungen an Quellcode und anderen Sammlungen digitaler Daten über die Zeit. Git ist ein weit verbreitetes VCS, das verteilte Entwicklung unterstützt.
Details:
- Git: Verteiltes VCS, lokal und remote arbeitend.
- Änderungen in
Commits
speichern. Branches
zum parallelen Entwickeln nutzen.Merge
zum Zusammenführen von Branches.- Kommandos:
git init
, git clone
, git add
, git commit
, git push
, git pull
, git merge
, git branch
, git checkout
.
Teststrategien und Qualitätssicherung
Definition:
Teststrategien und Qualitätssicherung beinhalten Techniken und Verfahren zur Sicherstellung von Softwarequalität durch systematisches Testen und Überprüfen.
Details:
- Testarten: Unit-Tests, Integrationstests, Systemtests, Akzeptanztests
- Testtechniken: Black-Box-Testing, White-Box-Testing, Graue-Box-Testing
- Testabdeckung: Code Coverage, Branch Coverage, Path Coverage
- Testwerkzeuge: JUnit, Selenium, TestNG
- Qualitätssicherungsmethoden: Code Reviews, Pair Programming, Continuous Integration
- Metriken: Defect Density, Mean Time to Failure (MTTF), Test Fall Effektivität
- Standards: ISO/IEC 25010, IEEE 829
Prozess- und Thread-Management
Definition:
Verwaltung und Steuerung von Prozessen und Threads im Betriebssystem; Kommunikation und Synchronisation zwischen ihnen; Ressourcenverwaltung.
Details:
- Prozesszustände: New, Ready, Running, Blocked, Terminated
- Thread: Leichtgewichtiger Prozess, geteilter Speicher
- Multithreading: Verteilung der Aufgaben auf mehrere Threads
- Scheduling-Algorithmen: FCFS, SJF, Round Robin, Priority Scheduling
- Prozesskommunikation: Pipes, Shared Memory, Message Queues
- Synchronisation: Mutex, Semaphore, Monitor
- Ressourcenmanagement: CPU, Speicher, Ein-/Ausgabe
- Deadlock: Bedingungen, Prävention und Auflösung
Speicherverwaltung
Definition:
Speicherverwaltung: Verwaltung und Zuweisung von Hauptspeicherressourcen, um Prozesse und Anwendungen effizient und sicher auszuführen.
Details:
- Speicherallokationsstrategien: Erst-Fit, Best-Fit, Worst-Fit.
- Dynamische Speicherverwaltung: Verwaltung von Heap und Stack.
- Paging: Aufteilung des Speichers in feste Seitengrößen.
- Segmentation: Aufteilung des Speichers in variable Segmente.
- Virtueller Speicher: Nutzung von Festplattenspeicher als Erweiterung des RAMs. Seitenfehler und Swapping.
- Garbage Collection: Automatische Speicherbereinigung.
- Fragmentierung: Intern (innerhalb eines Speicherblocks) und extern (zwischen Blöcken).
- MMU (Memory Management Unit): Hardwarekomponente zur Übersetzung von virtuellen Adressen in physische Adressen.
Netzwerksicherheit
Definition:
Schutz vor unautorisiertem Zugriff, Datenverlust und Angriffen auf Computernetzwerke.
Details:
- Authentifizierung: Identitätsverifikation
- Verschlüsselung: Schutz der Datenintegrität und Vertraulichkeit
- Firewall: Regulierung des Datenverkehrs
- Intrusion Detection Systems (IDS): Erkennung von unautorisierten Aktivitäten
- Virtual Private Network (VPN): Sicherer Fernzugriff
- Sicherheitsprotokolle: SSL/TLS für sichere Kommunikation
Architekturstile und -muster
Definition:
Architekturstile und -muster sind bewährte Lösungen für wiederkehrende Probleme in der Softwarearchitektur.
Details:
- Architekturstile: Fundamental Templates (z.B. Schichtenarchitektur, Client-Server).
- Entwurfsmuster: Wiederverwendbare Designlösungen (z.B. Singleton, Observer).
- Stile sind eher global; Muster lösen spezifische Probleme.
- Beispiele für Architekturstile: Schichtenarchitektur (\textit{Layered Architecture}), Mikroservices.
- Beispiele für Entwurfsmuster: \textit{Model-View-Controller} (MVC), Fabrikmethode (\textit{Factory Method}).
- Anwendungsfall bestimmt Wahl von Stil oder Muster.
Debugging-Techniken
Definition:
Methoden zur Identifizierung und Behebung von Fehlern in Softwareanwendungen, um deren korrekte Funktion sicherzustellen.
Details:
- Breakpoints: Haltepunkte im Code setzen, um Programmfluss zu beobachten.
- Step Through: Schrittweises Ausführen des Codes, um Logikfehler zu finden.
- Watch Variables: Beobachten von Variablenwerten, um unerwartete Änderungen zu erkennen.
- Logging: Einfügen von Protokollierungsanweisungen zur Laufzeitanalyse.
- Exception Handling: Spezifische Fehlerbehandlung und Stack-Traces analysieren.
- Interactive Debugging: Nutzung von interaktiven Debugging-Tools wie GDB.