Lehrveranstaltungshandbuch Software-Management
Verantwortlich: Prof. Dr. Wörzberger
Lehrveranstaltung
Befriedigt Modul (MID)
Organisation
| Version |
| erstellt |
2018-06-14 |
| VID |
1 |
| gültig ab |
WS 2018/19 |
| gültig bis |
|
|
|
| Bezeichnung |
| Lang |
Software-Management |
| LVID |
F07_SM |
| LVPID (Prüfungsnummer) |
|
|
| Semesterplan (SWS) |
| Vorlesung |
2 |
| Übung (ganzer Kurs) |
1 |
| Übung (geteilter Kurs) |
|
| Praktikum |
1 |
| Projekt |
|
| Seminar |
|
| Tutorium (freiwillig) |
|
|
|
| Präsenzzeiten |
| Vorlesung |
30 |
| Übung (ganzer Kurs) |
15 |
| Übung (geteilter Kurs) |
|
| Praktikum |
15 |
| Projekt |
|
| Seminar |
|
| Tutorium (freiwillig) |
|
|
|
| max. Teilnehmerzahl |
| Übung (ganzer Kurs) |
|
| Übung (geteilter Kurs) |
30 |
| Praktikum |
18 |
| Projekt |
|
| Seminar |
|
|
Gesamtaufwand: 150
Unterrichtssprache
- Deutsch, 0...100%
- Englisch, 0...100%
Niveau
Notwendige Voraussetzungen
- grundlegende Programmierkenntnisse in Java
- grundlegende Kenntnisse im Software-Engineering
Literatur
- wird in Lehrveranstaltung bekanntgegeben
Dozenten
- Prof. Dr. René Wörzberger
Wissenschaftliche Mitarbeiter
- wird in Lehrveranstaltung bekannt gegeben
Zeugnistext
Software-Management
Kompetenznachweis
| Form |
| sMP |
Regelfall (bei großer Prüfungszahl: sK) |
Intervall: 2/Jahr
Lehrveranstaltungselemente
Vorlesung / Übung
Lernziele
Lerninhalte (Kenntnisse)
- Grundlagen
- Code & Artefakte
- Source-Code-Management mit Git
- interne Datenstrukturen (commits, trees, refs)
- Basics (clone, commit, tag, log, pull/push...)
- Branching (branch, merge, ...)
- Git on the Server (Gitlab)
- Workflows (pull-Requests etc.)
- Tools
- Customizing
- Build-Management mit Maven
- Maven-Standardlayout
- Phasen/Goals/Lifecycles
- Artefakte und "Koordinaten"
- Abhängigkeiten
- Struktur der pom.xml
- Artefakt-Repositories (Nexus etc.)
- Multi-Module-Projekte
- Profile
- Continuous Integration mit Gitlab (oder Jenkins)
- CICD-Konzepte
- Stages
- Pipelines
- Jobs
- Runners
- Schema-Versionierung
- Qualität
- funktional
- Whitebox / Abdeckungen
- Blackbox / Äquivalenzklassen
- Testabdeckung (EclEmma)
- Unittests (JUnit)
- Mocks (Mockito)
- WebUI-Test (Selenium)
- WebAPI-Test (SoapUI)
- nicht-funktional
- Lasttest (JMeter / SoapUI)
- Penetration Testing (Burp Suite)
- Metriken
- Bad-Smells auf Code-Ebene (findbugs, pwd)
- Bad-Smells auf Architekturebene (sonargraph)
- Coding-Conventions (checkstyle)
- Infrastrukturen / Betriebsplattform
- Typische / klassische Infrastrukturen
- Load-Balancer
- Web-Server (Apache HTTPD)
- App-Server (Tomcat)
- DB-Server (mysql, postgresql)
- Provisionierung mit Ansible
- Virtualisierung
- Docker
- Grundlegende Linux-Konzepte (cgroups, namespaces)
- Grundlegende Docker-Commands
- Container
- Images
- Kubernetes
- Pods
- Labels
- Selectors
- Controllers
- Services
Fertigkeiten
- grundlegende Werkzeuge für die Entwicklung (beispielsweise SSH und Linux-Shell) und Dokumentation (beispielsweise Markdown) großer Softwaresysteme anwenden können
- kleinere Arbeitsergebnisse systematisch durch die Anwendung des Versionverwaltungssystems Git sichern sowie verschiedene Arbeitsstände wiederherstellen können
- Arbeitsschritte (z.B. Kompilation, Unit-Test, Deployment) mittels Maven und Ansible automatisieren können
- erreichte Software-Qualität mittels SonarQube und verwandten Tools messen und nachweisen können
- entwickelte Software auf unterschiedlichen Betriebsplattformen, von dedizierter Hardware bis zu Cloud-Plattformen wie z.B. AWS, installieren und betreiben können
Begleitmaterial
- elektronische Vortragsfolien zur Vorlesung
- elektronische Übungsaufgabensammlung
Besondere Voraussetzungen
Besondere Literatur
Besonderer Kompetenznachweis
| Form |
| bÜA |
Präsenzübung und Selbstlernaufgaben |
| Beitrag zum LV-Ergebnis |
| bÜA |
unbenotet |
Intervall: 1/Jahr
Praktikum
Lernziele
Fertigkeiten
- größere Softwaresysteme systematisch und nachvollziebar im Team entwickeln
- Entwicklungsschritte größerer Softwaresysteme automatisieren
- die Qualität eines Softwaresystems automatisiert messen und belegen können
- Softwaresysteme auf unterschiedlichen Betriebsplattformen installieren und betreiben können
Handlungskompetenz demonstrieren
- Geeignete Entwicklungs- und Betriebsumgebungen für arbeitteilig entwickelte, komplexe Softwaresysteme aufsetzen und betreiben
- mit der Dynamik in realistischen Entwicklungsprojekten, beispielsweise Anforderungsänderungen oder -erweiterungen, umgehen
Begleitmaterial
Besondere Voraussetzungen
- grundlegende objektorientierte Programmierkenntnisse in Java
- grundlegende Kenntnisse in Software-Engineering
Besondere Literatur
Besonderer Kompetenznachweis
| Beitrag zum LV-Ergebnis |
| bSZ |
Testat |
Intervall: 1/Jahr

Das Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborations-Plattform sind Eigentum der Autoren.
Ideen, Anfragen oder Probleme bezüglich Foswiki?
Feedback senden