Urheberrechte liegen bei monkeyuser.com

In der Privatwirtschaft werden Software-Produkte unter hohem, marktwirtschaftlich bedingtem Zeitdruck entwickelt. Der dabei stetig wachsende Source Code verteilt sich dabei auf verschiedene Teams/Unterprojekte und wird immer schwieriger zu warten, weiterzuentwickeln und zu testen - in langlebigen Projekten entwickeln sich dabei so große Unzulänglichkeiten, dass die Arbeitszeit der Teams immer ineffizienter genutzt wird und Bugfixes sowie neue Features immer länger dauern und teurer werden, während gleichzeitig die Qualität des gesamten Produkts leidet. Die Entwicklungsprozesse vieler Firmen führen ebenfalls regelmäßig zu Frustration bei Fachkräften.

Ziele

In diesem Modul lernen die Studierenden, wie und welche Probleme bei Software-Entwicklung entstehen, wenn man in großen Teams in der Privatwirtschaft unter Release-Druck an Software-Produkten arbeitet. Bekannte Themen wie "Test-Driven Development" werden dabei nicht von Grund auf im Detail erklärt, sondern eher angerissen und im Gesamtzusammenhang betrachtet, um aufzuzeigen, welche enormen Kosten in Firmen weltweit wiederholt entstehen, wenn man Software-Entwicklung nicht von vorne herein mit Testing, Continuous Integration/Deployment und automatischer Infrastruktur kombiniert.

Vergleich

Der Vergleich verschiedener open source Technologien vermittelt den Studierenden dabei einen breiten Horizont, der sie dazu befähigt, den passenden Umfang und Aufwand zur Auswahl und zum Setup von Toolchains, Testsuites und Automatisierungsinfrastruktur abzuschätzen, zu planen, und in die Tat umzusetzen.
Ferner werden die Studierenden dazu befähigt, in der Privatwirtschaft den Bedarf für entsprechende Prozesse und den Aufwand zum Aufbau und der Pflege solcher vor Vorgesetzten wirtschaftlich zu begründen, um Software mit realistischen und wirkungsvollen Prozessen mit hoher Geschwindigkeit zu entwickeln, die hohen Qualitätsstandards genügt. Zusätzlich werden Erwartungen vermittelt, die man bereits bei der Bewerbung um Jobs an "gute" Firmen haben darf.

Die folgenden Inhalte werden besprochen und mit kleinen Beispielprojekten angewendet:

Regressionsfreie Software-Entwicklung mit hoher Geschwindigkeit durch Tools und Testing

  •  Test-Driven-Development
  •  Sanitizers - Statische Analyse, linter tools
  •  Fuzzing, QuickCheck

Entwicklung im Team mit Versionskontrollverwaltungssystemen (VCS) am Beispiel von "git"

  •  Synchronisation von dezentralen Repositories
  •  Pullrequest-Workflows mit Code-Review

Reproduzierbare Builds - Vermeiden von "versteckten" Build Dependencies durch totale Isolation

  •  Die zentrale Rolle von Hashing fuer Code und Dependencies
  • Frustrationsfreies Setup von komplexen Toolchains pro Entwickler
  •  Automatisierte, perfekt reproduzierbare Integrationstests
  •  Definition von Build Environments mit Docker und Nix, Vergleich der Vor- und Nachteile

Die Wichtigkeit von CI/CD für planbare und zügige Product Releases

  •  Aufbau einer komplexen CI/CD Chain für das automatische Produkt-Deployment. Blick auf Produkte/Technologien wie Github, Gitlab, Nix Hydra. 
  • Vergleich der Vor- und Nachteile von Docker vs. Nix

Zielgruppe

  • Master-Studenten in Informatik
  • Master-Studenten in E-technik
  • ähnliche technische Studiengänge
  • Bachelor 5. Sem.

Prüfungsform

mündliche Prüfung

Kursform

Teils Vorlesung, teils Laborpraxis mit Programmieraufgaben, auch in der Gruppe.

Die Termine bestehen aus vier Bloecken die jeweils aus zwei Tagen bestehen. 

Termine werden noch bekannt gegeben.

Kontakt


Jacek Galowicz M.Sc.

jg943598fh-muensterde

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Weitere Informationen und die Möglichkeit zum Widerruf finden Sie in unserer Datenschutzerklärung.
Seite drucken