|
Modulbezeichnung (engl.):
Automated Software Development |
|
Code: KIB-ASE |
|
2V+2PA (4 Semesterwochenstunden) |
5 |
Studiensemester: 4 |
Pflichtfach: nein |
Arbeitssprache:
Deutsch |
Prüfungsart:
Projektarbeit
[letzte Änderung 15.02.2024]
|
KIB-ASE (P221-0201) Kommunikationsinformatik, Bachelor, ASPO 01.10.2022
, 4. Semester, Wahlpflichtfach
PIB-ASE (P221-0201) Praktische Informatik, Bachelor, ASPO 01.10.2022
, 4. Semester, Wahlpflichtfach
|
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):
Keine.
|
Als Vorkenntnis empfohlen für Module:
|
Modulverantwortung:
Prof. Dr.-Ing. Martin Burger |
Dozent/innen: Prof. Dr.-Ing. Martin Burger
[letzte Änderung 27.03.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]
|