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

  • Bachelor

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)

Aufwand [h]
sMP 10

Intervall: 2/Jahr


Lehrveranstaltungselemente

Vorlesung / Übung

Lernziele

Lerninhalte (Kenntnisse)
  • Grundlagen
    • Tools
      • SSH
      • GitLab
      • Markdown
    • Prozesse
      • Scrum
      • Kanban
  • 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
      • Playbooks
      • Inventories
    • 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

  • keine

Besondere Literatur

  • keine

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

  • keine

Besonderer Kompetenznachweis

Form
bSZ Präsenztermine

Beitrag zum LV-Ergebnis
bSZ Testat

Intervall: 1/Jahr

Diese Seite läuft auf FoswikiDas Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborations-Plattform sind Eigentum der Autoren.
Ideen, Anfragen oder Probleme bezüglich Foswiki? Feedback senden