Software-Engineering (WSEG)
zum Mirror-Repository auf Github

Wichtige Links
Inhalte
🏗️ Hinweis: Kursinhalte in Veränderung, ggf. sind Inhalte des letzten Semesters noch verlinkt.
Lernziele
Die Studierenden können …
- praktisch auf ihrem Arbeitsgerät Software aus unterschiedlichen Quellen via Paketmanager installieren und nach Anleitung einrichten
- Überblick Modul
- Vorstellung & Kennenlernen
- Administratives: Praxisprojekt und Prüfung
- Werkzeuge und Accounts, Terminalbasics
- Gruppenbildung und erste Projektidee
Lernziele
- praktisch im Terminal bzw. ihrer jeweiligen Shell zwischen Ordnern wechseln und Befehle mit Parametern ausführen
- Einstieg in die Versionsverwaltung (mit git)
- Basissetup: Initialisieren und Zugriff (Clonen via SSH)
- Basisbefehle: push, pull, status, commit
- Erweiterte Befehle: branch, merge, rebase
- Kollaborationsplattform Gitlab & Modelle
- Vorstellung agiler Arbeitsweise
Lernziele
- die Grundprinzipien und Gründe für den Einsatz einer Versionsverwaltung benennen
- Änderungen in der Versionsverwaltung einsehen und nachvollziehen
- Rituale der agilen Arbeitsweise benennen und beschreiben
- praktisch ein neues Git-Repository anlegen bzw. dieses clonen, sowie erste Transaktionen (Commits) vornehmen und für das Team publizieren
Iteration 0: Pitch / Präsentation (Gitlab Projekt und Profil konfiguriert haben)
- Einstieg, Browser Dev Tools
- Entwicklungsumgebung + Übung
- HTML/CSS + Übung
- Wireframes und Design
- Arbeit am Projekt
Lernziele
- in einfachen Worten erklären, wie eine Website erstellt werden kann und die Kommunikation mit dem Webbrowser funktioniert.
- anhand eingebauter Developer Tools im Browser eine Website analysieren und damit experimentieren.
- mit Hilfe des Webstandards HTML und der Dokumentation Inhalte und Struktur einer einfachen Website gestalten.
- mit Hilfe des Webstandards CSS und der Dokumentation das Styling einer Website anpassen.
- ein Vue-Projekt (oder anderes JavaScript-Frontend) als Basis für eine Single-Page-Application aufsetzen
- Softwarearchitektur: Entwurf, Architekturen
- Komponenten und Bezug zu Vue
- REST APIs
- Infos Deliverable “MVP”
Lernziele
- Den Begriff Softwarearchitektur erklären und verschiedene Architekturtypen aufzählen können
- Eine (Web-)Applikation in Komponenten zerlegen können
- Die Architektur des eigenen Projekts in einfachen Worten erklären
- Die Verwendung von REST APIs und CRUD-Operationen erläutern können
- Erstellung eines einfachen Datenmodells im Strapi-Backend
Lernziele
- die Prinzipien agiler Vorgehensweisen diskutieren und dafür Anwendungsmöglichkeiten im eigenen Berufsfeld erkennen (Überprüfbarkeit ? Weiter präzisieren)
- praktisch REST APIs durch einen eigenständigen API-Client testen bzw. verwenden
- praktisch das Format Markdown als Auszeichnungssprache für Dokumentationen in Gitlab verwenden
- praktisch in Git einen Branch für einen Merge-Request eröffnen und diesen nach dem Code Review durch die Dozierenden selbständig zusammenführen
- Anbindung Vue an Strapi
- Node.js Erläuterung
- Typescript/JavaScript
- Typen, Objekte
- Funktionen / this
- OOP / Klassen
- Infos Deliverable “Blog”
Lernziele
- grundlegende Eigenschaften der Objektorientierten Programmierung (Begriffe Objekt, Instanz, Klasse, Attribut) und OOP-Konzepte (Abstraktion, Enkapsulation, Vererbung) erklären
- die Unterschiede zwischen TypeScript und JavaScript erläutern
- die Bedeutung von Node.js für den Einsatz in Web-Applikationen erläutern
- praktisch einen Testdatensatz für ihr Projekt selbst herstellen und statisch im Programmcode verwenden
- praktisch per JavaScript eine Public API des Backends aufrufen und die Rückantwort auf der Entwicklerkonsole ausgeben
?- Demo: Vertiefung Strapi und REST-Client
- die Funktionsweise von JSON-Web-Token (JWT) erläutern
- praktisch private REST APIs durch Verwendung eines JWT in eigenständigem API-Client konsumieren
- praktisch mit Strapi-Relationen experimentieren und Abfragen durch Parameter wie
populate erweitern
- praktisch Datenmodell im Frontend an das Datenmodell der Strapi-Antwort anpassen
Lernziele
- nutzen zur Problemlösung verschiedene Inferenz-Dienste
- verstehen aus Anwendersicht die Softwarearchitektur rund um “generative KI”-Services
- richten praktisch einen Coding Agenten ein
- können erläutern wozu RAG und MCP dienen
- setzen sich mit ethischen Fragestellungen auseinander
- Software Validierung & Verifikation inkl. Fragen
- Demo: Cypress, Vitest, Bruno
Lernziele
- die Unterschiede zwischen Typen der Software-Verifikation/-Validierung (Unit-, Feature-, System-, Release-Tests) benennen
- ( verstehen weshalb fortgeschrittene Entwickler*innen Test-driven Development (TDD) als Methodologie einsetzen )
- praktisch eigenständig Code Reviews durchführen
- praktisch eine Test-Automation einrichten
- DevOps organisatorisch und technisch
- Hands-on: Persönlicher Fork und Gitlab-Pipeline
Lernziele
- den Begriff CI/CD (Continous Integration/Deployment) und die Funktion eines Integrationservers erklären
- praktisch einen Fork eines bestehenden Git-Repositories machen und die Unterschiede zwischen downstream und upstream erklären
- praktisch eine automatisierte Gitlab Pipeline anhand einer vorgegebenen Datei .gitlab-ci.yml einrichten und die Dokumentation für Anpassungen konsultieren
Lernziele
- die Bedeutung von Zugänglichkeit/Accessibility für Webtechnologien erläutern und deren Herausforderungen bei der Implementierung diskutieren
- Vorteile des Universal Design für heterogene Benutzergruppen nennen
- praktisch eine Website auf die Einhaltung der Web Content Accessibility Guidelines (WCAG) überprüfen
- DevOps: Operation & Monitoring
Lernziele
- den Einsatz der verschiedenen as-a-Service Angebote bezogen auf ein (Software)Produkt beurteilen können und die Vor- und Nachteile beschreiben
- Probleme und Gefahren beim Einsatz von as-a-Service Angeboten erläutern und für das eigene Praxisprojekt abschätzen
- die Begriffe Virtualisierung und Containerisierung, sowie die Eigenschaften von Cloudsoftware erklären
- technischer Probelauf Prüfungsumgebung mit CAMPLA
- Reihenfolge Präsentationen festlegen
Lernziele
- unterschiedliche Arten und Qualitäten eines Projektabschlusses in Bezug auf die Stakeholder benennen und erläutern
- Unterschiede zwischen den Prinzipien Definition of Done und Definition of Ready erläutern
- praktisch die erlaubten Software-Hilfsmittel der Theorieprüfung in einem Probelauf ausprobieren und eigene Materialien im PDF-Format für das Open-Book-Szenario vorbereiten
- praktisch eine gute Live-Demonstration des Teamprojekts vorbereiten und die bestehende Dokumentation anpassen, damit diese aussagekräftig für interessierte Dritte ist
- praktisch auf Gitlab-Pages die Frontend-Applikation publizieren (ohne Backend!)
- Ort: Aula oder Greenfield ⛳
- Agile Aktivität
- Nachbesprechung Evaluationsergebnisse, Retrospektive
- Fragen zur Prüfung
- festgelegte Gruppenreihenfolge