Software-Engineering
zum Quell-Repository
Donnerstags 4o (H213) meistens von 09.05 - 12.30 Uhr
Freitags 4p (H216) meistens von 08.15 - 11.50 Uhr
Wichtige Links
Inhalt(e)
- Ü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, 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.
- 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
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
- Softwarearchitektur: Entwurf, Architekturen
- Komponenten und Bezug zu Angular
- Node.js und praktischer Einstieg Angular
- Infos Deliverable “Pitch”
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
- Ein Angular-Projekt (oder anderes JS-Frontend) aufsetzen können und dessen wichtigste Module kennen
- REST APIs
- Typescript/JavaScript
- Typen, Objekte
- Funktionen / this
- OOP / Klassen
- Strapi (Headless CMS) aufsetzen
- Infos Deliverable “Blog”
- Auftrag: Umfrage “Mentor-Bot”, …
🏃 1. Pitch-Präsentation 📣 (JB/MT)
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
- Die Verwendung von REST APIs und CRUD-Operationen erläutern können
- Erstellung eines einfachen Datenmodells in Strapi
- 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
- Demo: Vertiefung Strapi und REST-Client
1. Coaching
🏃 2. Deliverable Blog 📰
Lernziele
- Private APIs mit JSON-Web-Token (JWT) abfragen
- Strapi-Relationen durch Parameter “populate” befüllen lassen
- Typescript-Datenmodell an Strapi-Antwort anpassen
- Demo: Angular HTTP-Kommunikation mit Strapi
- DevOps organisatorisch und technisch
- Hands-on: Persönlicher Fork und Gitlab-Pipeline
- “Operations und Cloudbasierte (open source) Software”
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
- 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)
- Software Validierung & Verifikation inkl. Fragen
- Demo: Cypress, Insomnia, Strapi & DevOps Pipeline Spell-Check
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
🏃 3. Deliverable: Zwischenpräsentation
#10 !! AUSFALL: Auftrag 📺 Cloudbasierte Software ☁ !!
#11 Accessibility and UX Design (T. Saksa) 🇫🇮 (+JB)
#12 OPs & Monitoring / Software Evaluation ✅ (JB im BBB 💻) !! Remote-only !!
🏃 4. Deliverable Blog 📰✅ mit GitLab Pages 🌐
#13 Projektabschluss 🏁 / Prüfungsumgebung (MT/JB)
#14 Projektpräsentationen 👨🏼🏫👩🏼🏫 / Fragen zur Prüfung❓ (MT/JB)