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