Software Engineering Fundamentals
Das Modul vermittelt die grundlegenden Prinzipien, Methoden und Werkzeuge der Softwareentwicklung. Es behandelt den gesamten Entwicklungsprozess von der Anforderungsanalyse über Softwaredesign, Implementierung und Testing bis hin zu Wartung und Qualitätssicherung nach modernen Entwicklungsmethoden.
- Einführung in Software Engineering: Ziele, Definitionen von Designprinzipien und Qualitätsmerkmalen.
- Aktivitäten der Softwareentwicklung: Umgang mit Requirements, Software Design, System Design, Implementierung und Testing
- Softwaredesign und Architektur: Design Prinzipien, Clean Code, Modularität, Modellierung, Dokumentation
- Implementierungstechniken und -praktiken: Coding-Standards, Debugging, Refactoring, TDD, Pair-, Ensembleprogramming
- Testverfahren: Unit-Tests, Test-Isolation, Integrationstests, Testautomatisierung
- Wartbarkeit: Bewusstsein für langlebige Software entwickeln, Logging
- Versionskontrolle: Git, GitHub/GitLab,
- Build Automatisierung, Continuous Integration
- Software Qualitätssicherung: Testbarkeit, Metriken, Code Review
Die Studierenden können mit empirischen Methoden unter Berücksichtigung ökonomischer Randbedingungen praktische Softwareprobleme von der Anforderung bis zum Deployment zum Mehrwert des Kunden lösen.
Um ein gemeinsames Verständnis im Team zu fördern und Missverständnisse zu vermeiden, kennen die Studierenden die grundlegenden Begriffe, Tätigkeiten und Designprinzipien der Softwareentwicklung und können diese adäquat erklären.
Um wartbare Software in der notwendigen Qualität herstellen zu können, können Studierende grundlegende Designprinzipien und Entwicklungspraktiken von der Anforderung zum Release anwenden und über adäquate Dokumentation (UML, API Doku) kommunizieren.
Um die Qualität der Software beurteilen zu können, können die Studierenden entsprechende Messungen durchführen, die Metriken analysieren und gezielt Verbesserungen vornehmen.
Um testbare Software ökonomisch zu entwickeln und technische Schulden zu verhindern oder vermindern, wenden die Studierenden geeignete Designprinzipien und Entwicklungspraktiken (TDD, Refactoring, Pair Programming, Code Reviews, Clean Code) an.
Um gemeinsam im Team qualitativ angemessene Software herzustellen, können Studierende entsprechende kollaborative Praktiken wie common code ownership, Versionskontrolle, Pair Programming und code reviews erklären und anwenden.
Grundlegende Programmierkenntnisse, Grundlegende Kenntnisse des lokalen Toolsets (IDE, Shell, Betriebssystem).