htw saar Piktogramm QR-encoded URL
Zurück zur Hauptseite Version des Moduls auswählen:
Lernziele hervorheben XML-Code



Automatisierte Softwareentwicklung

Modulbezeichnung:
Bezeichnung des Moduls innerhalb des Studiengangs. Sie soll eine präzise und verständliche Überschrift des Modulinhalts darstellen.
Automatisierte Softwareentwicklung
Modulbezeichnung (engl.): Automated Software Development
Studiengang:
Studiengang mit Beginn der Gültigkeit der betreffenden ASPO-Anlage/Studienordnung des Studiengangs, in dem dieses Modul zum Studienprogramm gehört (=Start der ersten Erstsemester-Kohorte, die nach dieser Ordnung studiert).
Praktische Informatik, Bachelor, ASPO 01.10.2017
Code: PIB-ASE
SWS/Lehrform:
Die Anzahl der Semesterwochenstunden (SWS) wird als Zusammensetzung von Vorlesungsstunden (V), Übungsstunden (U), Praktikumsstunden (P) oder Projektarbeitsstunden (PA) angegeben. Beispielsweise besteht eine Veranstaltung der Form 2V+2U aus 2 Vorlesungsstunden und 2 Übungsstunden pro Woche.
2V+2PA (4 Semesterwochenstunden)
ECTS-Punkte:
Die Anzahl der Punkte nach ECTS (Leistungspunkte, Kreditpunkte), die dem Studierenden bei erfolgreicher Ableistung des Moduls gutgeschrieben werden. Die ECTS-Punkte entscheiden über die Gewichtung des Fachs bei der Berechnung der Durchschnittsnote im Abschlusszeugnis. Jedem ECTS-Punkt entsprechen 30 studentische Arbeitsstunden (Anwesenheit, Vor- und Nachbereitung, Prüfungsvorbereitung, ggfs. Zeit zur Bearbeitung eines Projekts), verteilt über die gesamte Zeit des Semesters (26 Wochen).
5
Studiensemester: 4
Pflichtfach: nein
Arbeitssprache:
Deutsch
Prüfungsart:
Projektarbeit

[letzte Änderung 15.02.2024]
Verwendbarkeit / Zuordnung zum Curriculum:
Alle Studienprogramme, die das Modul enthalten mit Jahresangabe der entsprechenden Studienordnung / ASPO-Anlage.

KIB-ASE Kommunikationsinformatik, Bachelor, ASPO 01.10.2022 , 4. Semester, Wahlpflichtfach
PIB-ASE Praktische Informatik, Bachelor, ASPO 01.10.2017 , 4. Semester, Wahlpflichtfach
Arbeitsaufwand:
Der Arbeitsaufwand des Studierenden, der für das erfolgreiche Absolvieren eines Moduls notwendig ist, ergibt sich aus den ECTS-Punkten. Jeder ECTS-Punkt steht in der Regel für 30 Arbeitsstunden. Die Arbeitsstunden umfassen Präsenzzeit (in den Vorlesungswochen), Vor- und Nachbereitung der Vorlesung, ggfs. Abfassung einer Projektarbeit und die Vorbereitung auf die Prüfung.

Die ECTS beziehen sich auf die gesamte formale Semesterdauer (01.04.-30.09. im Sommersemester, 01.10.-31.03. im Wintersemester).
Die Präsenzzeit dieses Moduls umfasst bei 15 Semesterwochen 60 Veranstaltungsstunden (= 45 Zeitstunden). Der Gesamtumfang des Moduls beträgt bei 5 Creditpoints 150 Stunden (30 Std/ECTS). Daher stehen für die Vor- und Nachbereitung der Veranstaltung zusammen mit der Prüfungsvorbereitung 105 Stunden zur Verfügung.
Empfohlene Voraussetzungen (Module):
PIB-BSE Betriebssystemeinführung
PIB-PR1 Programmierung 1
PIB-PR2 Programmierung 2
PIB-PR3 Programmierung 3
PIB-SWT Softwaretechnik


[letzte Änderung 03.04.2024]
Als Vorkenntnis empfohlen für Module:
Modulverantwortung:
Prof. Dr.-Ing. Martin Burger
Dozent/innen: Prof. Dr.-Ing. Martin Burger

[letzte Änderung 15.02.2024]
Lernziele:
Die Studierenden erklären, wie agile Softwareentwicklung und automatisierte Softwareentwicklung zusammenhängen und wie sie sich gegenseitig ergänzen, um schnelle Iterationen und flexible Anpassungen der Software zu ermöglichen.
 
Die Studierenden automatisieren verschiedene technische Aspekte der Softwareentwicklung durch praktische Anwendung in einem eigenen Projekt. Dabei verwenden sie die folgenden Praktiken, Methoden und Werkzeuge:
 
- Einsatz moderner Entwicklungsumgebungen (IDE) zum effizienten Schreiben von Programmcode.
 
- Gemeinsames Arbeiten am Code mit Hilfe verteilter Versionsverwaltung als Bestandteil kollaborativer Softwareentwicklungsprozesse und als Voraussetzung für Continuous Integration (CI).
 
- Effizienter Einsatz von Build-Werkzeugen zur Automatisierung und Optimierung des Buildprozesses: Kompilieren, Ausführen, Testen, Paketieren und Validieren.
 
- Automatisierte Sicherstellung eines konsistenten Programmierstils durch Werkzeuge zur statischen Codeanalyse.
 
- Einsatz von Werkzeugen zur statischen und dynamischen Codeanalyse und automatisierten Tests zur kontinuierlichen Überwachung und Verbesserung der Softwarequalität.
 
- Anwendung von Continuous Integration (CI) und Continuous Deployment (CD) unter Nutzung von Cloud Computing und virtuellen Umgebungen zur Automatisierung der Paketierung und Auslieferung von Software.
 
- Einsatz generativer KI-Technologien zur Unterstützung und Optimierung des Entwicklungsprozesses, einschließlich der Generierung von Codebeispielen und der Erkennung von Schwächen und Grenzen solcher KI-Werkzeuge.
 
Abschließend argumentieren die Studierenden anhand ihres Projekts, wie die Integration dieser Praktiken, Methoden und Werkzeuge sowie deren Zusammenspiel zu einer automatisierten Qualitätssicherung und einem effizienten CI/CD-Prozess beitragen.

[letzte Änderung 03.04.2024]
Inhalt:
Die Studierenden erhalten eine umfassende Einführung in die Automatisierung der Softwareentwicklung. Der Schwerpunkt liegt dabei auf der Anwendung und Integration verschiedener Praktiken, Methoden und Werkzeuge innerhalb eines Java-Projekts, um die Konzepte der automatisierten Softwareentwicklung praxisnah zu erleben. Folgende Aspekte werden besonders hervorgehoben:
 
- Agile Softwareentwicklung: Die Studierenden lernen, wie Praktiken, Methoden und Werkzeuge zur Automatisierung eine iterative und inkrementelle Entwicklung unterstützen, die schnelle Feedback-Zyklen und effiziente Anpassungen der Software ermöglicht.
 
- Moderne Entwicklungsumgebungen (IDEs): Die Studierenden erhalten eine Einführung in den effizienten Einsatz moderner IDEs, die speziell für die Java-Entwicklung optimiert sind. Ziel ist es, die Produktivität beim Schreiben von Code zu erhöhen und einen konsistenten Programmierstil zu fördern.
 
- Verteilte Versionsverwaltung: Die Studierenden lernen, Git effektiv für kollaborative Entwicklungsprozesse einzusetzen, mit besonderem Schwerpunkt auf der Verwendung von GitHub. Sie lernen Branching- und Merging-Strategien anzuwenden, um Konflikte zu vermeiden und die Zusammenarbeit im Team zu erleichtern.
 
- Build-Werkzeuge: Maven wird als zentrales Werkzeug zur Automatisierung des Buildprozesses eingesetzt. Die Studierenden lernen mit Maven Abhängigkeiten zu verwalten, Projekte zu kompilieren, zu testen und zu paketieren sowie automatisierte Berichte zu generieren.
 
- Werkzeuge zur Qualitätssicherung: Der Einsatz von Werkzeugen wie Checkstyle, Error Prone, JUnit und JaCoCo ermöglicht es den Studierenden, einen konsistenten Programmierstil zu pflegen und die Softwarequalität durch statische und dynamische Codeanalyse sowie automatisierte Tests kontinuierlich zu überwachen und zu verbessern.
 
- Continuous Integration und Continuous Deployment (CI/CD): Durch die Integration ihrer Projekte in GitHub Actions oder vergleichbare CI/CD-Plattformen lernen die Studierenden, wie Softwareautomatisierung in Cloud-Umgebungen implementiert und optimiert werden kann. Dies umfasst die automatische Durchführung von Tests, die Erstellung von Builds und das Deployment von Anwendungen.
 
- Generative KI-Technologien: Es wird ein Einblick in den Einsatz von generativen KI-Technologien zur Unterstützung des Entwicklungsprozesses gegeben, einschließlich der Erstellung von Codebeispielen und der automatischen Erkennung von Codemustern. Die Studierenden lernen auch, die Möglichkeiten und Grenzen solcher Technologien kritisch zu beurteilen.
 
Praktische Anwendung
 
Die praktische Umsetzung dieser Konzepte erfolgt durch ein eigenes Java-Projekt, in dem die Studierenden die erlernten Praktiken, Methoden und Werkzeuge anwenden. Dies fördert nicht nur das technische Verständnis, sondern auch die Fähigkeit, komplexe Softwarelösungen agil zu entwickeln.
 
Selbstbeschaffung von Ressourcen
 
Die Studierenden verschaffen sich selbst Zugang zu den benötigten Werkzeugen und Plattformen wie GitHub Education, um eine realitätsnahe Arbeitsumgebung zu simulieren.
 
Flexibilität und Anpassungsfähigkeit
 
Es wird darauf hingewiesen, dass technologische Entwicklungen laufende Anpassungen der Modulinhalte erforderlich machen können, um die Relevanz und Aktualität des Angebots zu gewährleisten.

[letzte Änderung 03.04.2024]
Weitere Lehrmethoden und Medien:
Folien, Beamer, Tafel, vorlesungsspezifische Website

[letzte Änderung 03.04.2024]
Literatur:
Es wird allgemein anerkannte Literatur aus den Bereichen Softwareentwicklung, Automatisierung, CI/CD und Cloud Computing empfohlen. Spezifische Literaturvorschläge werden während der Veranstaltung bekannt gegeben.

[letzte Änderung 03.04.2024]
Modul angeboten in Semester:
SS 2024
[Mon Apr 29 16:39:11 CEST 2024, CKEY=pas, BKEY=pi2, CID=PIB-ASE, LANGUAGE=de, DATE=29.04.2024]