Software-Engineering
zum Quell-Repository
Wichtige Links
Inhalte
🏗️ Hinweis: Kursinhalte in Veränderung, Inhalte des letzten Semesters sind teilweise noch verlinkt.
- Überblick Modul
- Vorstellung & Kennenlernen
- Administratives: Praxisprojekt und Prüfung
- (Einführung Software Engineering)
- Werkzeuge und Accounts, Terminalbasics
- Gruppenbildung und erste Projektideen
Lernziele
- (Einordnung des Themas Software Engineering in historischer und aktueller Sicht)
- Software aus verschiedenen Quellen installieren können
- In Terminal/Shell zwischen Ordnern wechseln können
- 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 können
- Ein neues Repository anlegen, sowie im Team gemeinsam clonen können
- Erste Transaktionen (Commits) vornehmen und publizieren können
- Änderungen in der Versionsverwaltung einsehen und nachvollziehen können
- Einstieg, Browser Dev Tools
- Entwicklungsumgebung + Übung
- HTML/CSS + Übung
- Wireframes und Design
- Arbeit am Projekt
Lernziele
- In einfachen Worten erklären können wie eine Website erstellt und betrieben werden kann.
- Anhand eingebauter “Developer Tools” im Browser eine Website analysieren und damit experimentieren.
- Mithilfe von HTML und der Dokumentation Inhalte und Struktur einer Website gestalten können.
- Mithilfe von CSS und der Dokumentation das Styling einer Website gestalten können.
- Ein Vue-Projekt (oder anderes JS-Frontend) aufsetzen können (und dessen wichtigste Module kennen)
- 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
- Infos zu Markdown und Merge-Requests (für 2. Deliverable)
Lernziele
- “die Prinzipien des agilen Vorgehens verstehen und Anwendungsmöglichkeiten im eigenen Beruf erkennen”
- REST APIs mit eigenständigem API-Client konsumieren (testen/verwenden)
- Verwendung von Markdown als Auszeichnungssprache für Dokumentationen in Gitlab
- Anbindung Vue an Strapi
- Node.js Erläuterung
- Typescript/JavaScript
- Typen, Objekte
- Funktionen / this
- OOP / Klassen
- Infos Deliverable “Blog”
Lernziele
- grundlegendes Verständnis zu OOP (Begriffe Objekt, Instanz, Klasse, Attribut)
- OOP-Konzepte Abstraktion, Enkapsulation, Vererbung, Polymorphismus kennen
- OOP-Modellierung einer Lösung zu einer einfachen Problemstellung
- Demo: Vertiefung Strapi und REST-Client
Lernziele
- Private APIs mit JSON-Web-Token (JWT) abfragen
- Strapi-Relationen durch Parameter “populate” befüllen lassen
- Typescript-Datenmodell an Strapi-Antwort anpassen
- Software Validierung & Verifikation inkl. Fragen
- Demo: Cypress, Vitest, Bruno
Lernziele
- Software Verifikation und Validierung verstehen
- Warum braucht es überhaupt Testing?
- Unit-, Feature-, System-, Release-Tests verstehen
- Test Automation - was steckt dahinter
- Test-driven Development (TDD) als Methodologie verstehen
- Code Reviews
- DevOps organisatorisch und technisch
- Hands-on: Persönlicher Fork und Gitlab-Pipeline
Lernziele
- den Begriff CI/CD und die Funktion eines Integration Servers erklären können
- eine Gitlab Pipeline anhand der Datei .gitlab-ci.yml verwenden
- “Operations und Cloudbasierte (open source) Software”
Lernziele
- den Einsatz der verschiedenen as-a-Service Angebote bezogen auf ein 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 Praxisprojekt abzuschätzen können
- (die Begriffe Virtualisierung und Containerisierung und die Eigenschaften von Cloudsoftware erklären können)
- Qualitative Methoden: - Expert*innen / Nutzer*innen
- Nachtrag DevSecOps: Security
- DevOps: Operation & Monitoring
- Modulevaluation (= per Mail) ausfüllen ✍🏼
🏃 4. Deliverable Blog/README 📰✅ mit GitLab Pages 🌐
- Accessibility
- UX Design
- Double Degree HAMK ↔️ BFH
- Quiz
Lernziele
- Gründe für die Durchführung von Usability Tests kennen.
- Unterschiede zwischen moderierten und unmoderierten Usability Tests kennen.
- Agile Aktivität
- Probelauf Prüfungsumgebung mit CAMPLA
- Reihenfolge Präsentationen festlegen
Lernziele
- verstehen, wann ein Projekt als abgeschlossen gilt
- das Prinzip “Definition of Done” verstehen
- Nachbesprechung Evaluationsergebnisse
- Fragen zur Prüfung
- ab x.xx Uhr, festgelegte Gruppenreihenfolge