Bachelor
Master
Bachelor Veranstaltungen
Softwaretechnik
Modul: 10-201-2321 (Pflicht, 3. Semester Bachelor Informatik)
Nach der aktiven Teilnahme am Modul „Softwaretechnik“ sind Studierenden in der Lage, ihre Kenntnisse über Prinzipien, Methoden und Werkzeuge für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen zu reproduzieren. Die Studierenden können Vorgehensweisen der Softwareentwicklung vergleichen und auf deren Anwendung darstellen.
Hilfreiche Links:
– Moodle-Kurse werden entsprechend im AlmaWeb angegeben: Materialien, Videos, Übungsaufgaben, Kontakt zu Lehrenden, Diskussionen, etc.
Softwaretechnik Praktikum
Modul: 10-201-2320 (Pflicht, 3. Semester Bachelor Informatik)
Nach der aktiven Teilnahme am Modul „Softwaretechnikpraktikum“ sind die Studierenden in der Lage die Aufgabenstellung eines größeres IT-Projekts im Team zu analysieren und deren Umsetzung gemeinsam zu organisieren; verschiedene Rollen innerhalb eines IT-Projekts selbst zu übernehmen; Kommunikationsmittel zur systematische Planung, Vorbereitung, Durchführung und Auswertung angemessen einzusetzen; und Fachkenntnisse zur Lösung der Probleme zu erwerben und anzuwenden.
Hilfreiche Links:
– Moodle-Kurse (LINK TBA): Materialien, Videos, Übungsaufgaben, Kontakt zu Lehrenden, Diskussionen, etc.
Genereller Ablauf:
Zum Beginn des Semesters findet eine (virtuelle) Auftaktveranstaltung statt bei dem das Konzept und der Ablauf besprochen wird. Zusätzlich werden die zu realisierenden Softwareprojekte und betreuende Tutoren vorgestellt. Falls mehrere Themen vorhanden sind, müssen Studierende sich für eines entscheiden. Die Teamaufteilung findet *zufällig* statt. Dies gewährleistet eine faire Aufteilung der Teams. Die Teamgröße ist liegt zwischen 6 – 8 Studierende.
Daraufhin beginnt die Phase des Requirements Engineering. Studierende müssen sich in das Thema einarbeiten und Anforderungen aufstellen. Die Anforderungen sollen in ein *Lastenheft* münden. Zeithorizont: Anfang November
Danach beginnt die Design-Phase. Hier soll die Architektur sowie das Klassendesign festgelegt werden. Zudem soll hier bereits auf Softwarequalitätseigenschaften wie Modularität, Testbarkeit, Kohäsion und Kopplung geachtet werden. Die Phase schließt mit dem *Pflichtenheft* ab, die alle Design-Entscheidungen dokumentiert. Zeithorizont: Mitte Dezember.
Danach startet die vorbereitende Implementierungsphase: Hier soll die Implementierung soweit vorbereitet werden, dass das Projekt in einem Repository gehostet und bei einem Push eine Continuous Integration und Delivery Pipeline angestoßen wird. Zeithorizont: Anfang Januar.
Wegen Corona nicht durchführbar: Die letzte Phase ist die Implementierungs- und Testphase. Sie soll als Blockveranstaltung im März stattfinden, wobei 3 Wochen á 8h von Mo-Fr hierfür eingesetzt sind. Hier wird nach agilen Softwaremethoden (Scrum, Canban, etc.) das System basierend auf zuvor festgelegten User Stories implementiert und getestet. Final finden Ende März eine Präsentation statt indem das Team die Software vorstellt.
Corona-Alternative (noch nicht final): Remote Software Engineering. Die Design- und Implementierungsphasen verschmelzen und es wird ein agiler Softwareansatz mit Prototypenentwicklung gewählt. Dabei wird zuerst ein Feature-Backlog basierend auf dem Lastenheft angelegt, welches dann vom Team von Ende November bis Anfang März implementiert wird. Hierfür sind festgelegt Remote-Veranstaltungen geplant, die den Fortschritt der Entwicklung prüfen und Feedback zur Entwicklungsmethodik geben.
Jede Phase hat einen Hauptverantwortlichen im Team, der je nach Phase diese entweder mit einer ca. 10-15min Präsentation abschließt (Aufgaben + Realisierung) oder ein entsprechendes Dokument (z.B. Lastenheft) einreicht, welches geprüft wird. Jeder im Team muss jedoch in jeder Phase mitarbeiten, so dass er/sie nach dem Vortrag dazu konkrete Fragen gestellt bekommen kann. Der Anteil eines jeden Teammitglieds muss ersichtlich sein. Darüber hinaus wird es *zwei* Teamverantwortliche / -organisatoren geben, die den zeitlichen Ablauf, die Teamorganisation und die Deliverables prüfen und sicherstellen.
Hinweise zur Durchführung: Durch Corona-Vorkehrungen kann das Praktikum nicht wie geplant durchgeführt werden. Es wird hauptsächlich Remote stattfinden. Hierfür werden technische Lösungen zurzeit evaluiert. Wichtig ist hierbei, dass im Vorfeld Studierende sich melden, die Hilfe bei der technischen Ausrüstung haben.
Hinweise zur Teamarbeit: TL;DR: Konflikte selbst lösen und kein Trittbrettfahren.
Sie werden vermutlich zum ersten Mal im Team mit fremden Personen zusammenarbeiten. Dies ist eine wichtige Erfahrung für ihr zukünftiges (berufliches) Leben, da auch dort Sie in ein neues Team anfangen werden. Konflikte mögen entstehen. Ein wichtiges Ziel ist hierbei zu lernen diese zu moderieren und selbstständig im Team zu lösen. Natürlich können auch die Tutoren und Betreuer hier unterstützen, falls es nicht klärbar ist und sie sollten sich melden falls es sich um prüfungsrelevante Vorgänge handelt (z.B. ein Teammitglied beteiligt sich nicht an der Entwicklung oder reißt ständig die Deadline). Beachten Sie, dass wir nicht zögern, einzelne, nicht kooperative und nicht leistungsfähige Teammitglieder nicht bestehen zu lassen, selbst wenn das Team insgesamt einen guten Job gemacht hat. Bei Verdacht verlangen wir explizite und detaillierte Fortschrittsberichte und Entwicklungsprotokolle.
Hinweise zu Projekten: TL;DR: Die fachliche Lösung wird einfacher, aber wie diese Lösung erreicht wird, wird umfangreicher und stärker kontrolliert.
In der Vergangenheit sind eine Vielzahl von unterschiedlichen und herausfordernden Projekten bearbeitet worden. Jedoch lag hierzu meist der Fokus auf das Endresultat und weniger auf die Methodik (d.h., die Kompetenzentwicklung in der Softwaretechnik). Daher werden weniger (oder gar nur ein) Projektthemen in der Zukunft bearbeitet, um gleiche Voraussetzungen für alle Studierende zu schaffen, die fachlichen Anforderungen zu kontrollieren und die Kompetenzgewinnung auf den Softwaretechnikteil zu konzentrieren.
Die Ergebnisse des erfolgreich abgeschlossenen Softwaretechnik-Praktikum 2020/21 sind auf einer extra Seite aufgelistet.
Die Ergebnisse des erfolgreich abgeschlossenen Softwaretechnik-Praktikum 2023/24 sind auf einer extra Seite aufgelistet.
Master Veranstaltungen
Software Engineering für KI-Systeme
Modul: TBA (Vertiefungsmodul ab 1. Semester Master Informatik, Wahlpficht Master Data Science, Ergänzungsbereich)
Nach erfolgreichem Abschluss des Moduls Software Engineering für KI-Systeme sollten Studierende in der Lage sein:
• Tradeoffs beim Entwerfen von Produktionssystemen mit KI-Komponenten zu analysieren, verschiedene Qualitätseigenschaften außer Genauigkeit, wie z.B. Operationskosten, Latenz, Updatebarkeit, Erklärbarkeit zu analysieren;
• Produktionssysteme, die robust gegenüber Fehlern von KI-Komponenten sind, zu implementieren;
• Fehlertolerante und skalierbare Daten-intensive Infrastrukturen zum Lermen, Ausliefern, Versionieren und Experimentieren von Modellen zu entwerfen;
• Qualität der gesamten Machine-Learning Pipeline durch Testautomatisierung und anderen Qualitätssichernden Techniken, einschließlich automatisierten Checks, Data Drifts, Feedback-Schleifen, sicher zu stellen;
• System zu bauen, die in Produktion getestet werden können und Deployment-Pipelines bauen, die vorsichtige Rollouts und Canary Testing ermöglichen;
• Privacy, Fairness, Ethik und Moral sowie Sicherheit beim Bauen von komplexen KI-basierten Systemen zu berücksichtigen;
• Effektiv im Team bestehend aus Softwaretechnikern und Data Analysten zu kommunizieren.
Weiterhin werden Studierende vertraut mit neuesten Infrastrukturwerkzeugen, einschließlich Stream Processing (beispielsweise, aber nicht zwingend: mit Apache Kafka, Deployment mit Docker und Kubernetes und Testautomatisierung mit Travis und Jenkins).
Hilfreiche Links:
– Moodle-Kurse: Materialien, Videos, Übungsaufgaben, Kontakt zu Lehrenden, Diskussionen, etc.
Konfigurierbare Softwaresysteme
Modul: TBA (Vertiefungsmodul, ab 1. Semester Master Informatik)
Nach der aktiven Teilnahme in diesem Modul sind Studierende in der Lage die Variabilität konfigurierbarer Softwaresysteme zu modellieren und in Konfigurationen zu repräsentieren. Weiterhin sind die Studierenden in der Lage Implementierungstechniken selbstständig anzuwenden, um Features und Funktionen in Softwaresystemen modular implementierbar, konfigurierbar, selektierbar und komponierbar zu machen.
Die Studierenden können moderne Programmierparadigmen (z.B. Aspekt-orientierte und Feature-orientierte Programmierung) gezielt anwenden, um Belange, Features und funktionelle Einheiten zu implementieren, zu monitoren und zu testen.
Sie kennen die Limitierungen von objekt-orientierter Programmierung (Tyrannei der dominanten Dekomposition) und können diese anhand von selbst gewählten Szenarien erklären. Uvm.
Hilfreiche Links:
– Moodle-Kurse : Materialien, Videos, Übungsaufgaben, Kontakt zu Lehrenden, Diskussionen, etc.
Automated Software Engineering
Modul: TBA (Vertiefungsmodul ab 1. Semester Master Informatik, Wahlpficht Master Data Science, Ergänzungsbereich)
Nach der aktiven Teilnahme am Modul Automated Software Engineering sind die Studierenden in der Lage verschiedene Aktivitäten in der Softwareentwicklung zu automatisieren. So sind Studierende in der Lage Tests automatisiert zu generieren, optimale Softwarekonfigurationen automatisiert zu finden und kleine Funktionen und Code selbst zu synthetisieren.
Hinweis: Wir bieten ein Grundlagenmodul für 5LP und ein Vertiefungsmodul mit 10LP an, welches zusätzlich ein Seminar mit Praxisaufgaben im Themengebiet umfasst.
Wichtig: Für das 10LP gilt als Voraussetzung der erfolgreiche Abschluss des Moduls „Introduction to Machine Learning“, da im Seminarteil auch maschinelle Lernverfahren zur Automatisierung verwendet werden.
Hilfreiche Links:
– Moodle-Kurse werden entsprechend im AlmaWeb angegeben: Materialien, Videos, Übungsaufgaben, Kontakt zu Lehrenden, Diskussionen, etc.
Weitere Veranstaltungen
Bachelor- und Masterseminar
Modul: 10–201-2010, 10–202-2011 (Begleitend zu jeder Bachelor- und Masterarbeit in der Abteilung)
Selbständige Einarbeitung in ein wissenschaftliches Thema der InformatikVorbereitung auf die Bachelor- bzw. Masterarbeit. Präsentation selbst erarbeiteten Wissens.
Hilfreiche Links:
– Übersicht über unsere Themen: Abschlussarbeiten
– Moodle-Kurse (https://moodle2.uni-leipzig.de/course/view.php?id=26368): Materialien zum Ablauf und Bewertung, Video wie man Arbeiten / Paper schreibt, Video wie man Vorträge vorbereitet und hält, Kontakt zu Lehrenden, Diskussionen, etc.
– AlmaWeb zur Einschreibung
Externes Praktikum
Modul: 10-201-2336 (Wahlpficht Bachelor Informatik, 5. Semester)