Modul Softwareengineering und Verteilte Systeme 2, Informatik (Bachelor) (SPO 5)

Englische Sprache
Kompakte Schrift

Farbschema

Modulübersicht

Softwareengineering und Verteilte Systeme 2

INFB510

Prof. Dr. Thomas Fuchß

/

5. Semester

Mensch-Maschine-Kommunikation, Praxistätigkeit, Verteilte Systeme 1 und Theoretische Informatik 2, Informatik 2, Betriebssysteme und Systemnahes Programmieren, Datenbanken und Kommunikationsnetze 1

Vorstudium

Nach erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, produktiv und selbstständig in Softwareprojekten unterschiedlicher Größenordnung mitzuwirken. Sie können anfallende Aufgaben analysieren, strukturieren sowie eigenständig Lösungen erarbeiten, ihre Entscheidungen begründen und nachvollziehbar dokumentieren. Zudem erklären sie allgemeine Konzepte von Architekturen, insbesondere für verteilte Software-Systeme, und wenden diese konstruktiv an. Die Studierenden erkennen zentrale Anforderungen und Herausforderungen solcher Systeme und entwickeln geeignete Lösungsansätze. Sie sind in der Lage, Konzepte wie Modularität, Kommunikation, Fehlertoleranz und Sicherheit zu erklären und konstruktiv in die Entwicklung umfassender Software-Systeme einzubringen.

Darüber hinaus haben die Studierenden ihre technischen, sozialen und persönlichen Kompetenzen sowie ihre Kommunikationsfähigkeit und ihr Selbstmanagement gezielt weiterentwickelt und gelernt, diese neuen Fähigkeiten im Kontext größerer Softwareprojekte effektiv einzusetzen.

Klausur 120 Min. (benotet)
Lehrveranstaltung Softwareengineering

INFB512.b

Vorlesung

Prof. Dr. Thomas Fuchß

deutsch

2/2

60 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Modulprüfung

Die Lehrveranstaltung „Software-Engineering“ baut auf den praktischen Erfahrungen der Studierenden aus ihrer Praxistätigkeit auf und vermittelt Techniken sowie Methoden für die strukturierte Entwicklung von groß angelegten Softwaresystemen. Zu Beginn der Veranstaltung werden elementare Konzepte wie Objekt, Klasse, Assoziation, Methode, Vererbung und Polymorphie wiederholt und gefestigt, um ein gemeinsames Verständnis der Grundlagen sicherzustellen. Anschließend liegt der Fokus auf den Herausforderungen moderner Softwareentwicklungsprozesse und deren strukturierter Bewältigung.

Die Studierenden lernen, wie agile Methoden wie Scrum mit etablierten Prozessmodellen, beispielsweise dem Unified Software Development Process, kombiniert werden können, um anspruchsvolle Entwicklungsprojekte erfolgreich umzusetzen. Dabei wird UML als zentrale Beschreibungssprache eingeführt, um Entwicklungsentscheidungen zu dokumentieren und klar zu kommunizieren. Ein besonderer Schwerpunkt liegt darauf, die Komplexität großer Softwareprojekte zu verstehen und durch die Anwendung strukturierter Methoden und Prozesse zu bewältigen.

Im Rahmen der Veranstaltung erwerben die Studierenden die Fähigkeit, selbstständig in agilen Umfeldern zu agieren, fundierte Entwicklungsentscheidungen zu treffen und diese methodisch zu dokumentieren. Die theoretischen Inhalte werden durch praxisorientierte Beispiele ergänzt, die den Transfer der vermittelten Methoden in reale Anwendungsfälle erleichtern.

Im zugehörigen Labor wenden die Studierenden das erlernte Wissen an wechselnden Beispielprojekten an, indem sie die erste Iteration eines Softwareentwicklungsprozesses durchführen. Dabei üben sie sowohl die Arbeit im Team als auch die Nutzung agiler Methoden und die professionelle Dokumentation mithilfe von UML.

  • Foliensammlung und Videos
  • Arlow, J.; Neustadt, I.: UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design, 2. ed. - Addison-Wesley Professional, 2005.
  • Shimp, D. and Rawsthorne, D. Exploring Scrum: The Fundamentals – CreateSpace, 2011.
  • Jacobson, I.; Booch, G. and Rumbaugh, J.: The unified software development process - Reading, Mass.: Addison-Wesley, 1999.
  • Kim, G.; Humble, J.; Debois, P. und Willis, J.: Das DevOps-Handbuch: Teams, Tools und Infrastrukturen erfolgreich umgestalten - Heidelberg: O'Reilly; Heidelberg: dpunkt.verlag, 2017.
  • Larman, C.: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3. ed. - Upper Saddle River, NJ : Prentice Hall, 2004.
  • Larman, C. und Vodde, B.: Large-Scale Scrum: Scrum erfolgreich skalieren mit LeSS - Heidelberg: dpunkt.verlag, 2017.
  • Oestereich, B.: Developing Software with UML: Object-Oriented Analysis and Design in Practice 2. ed. - Addison-Wesley Professional, 2003.
  • Oestereich, B.: Analyse und Design mit UML 2.1: Objektorientierte Softwareentwicklung, 8. ed. - München; Wien : Oldenbourg, 2006.
  • OMG Object Management Group. Unified Modeling Language (OMG UML) Version 2.5.1 – OMG, 2017.
  • Seidl, M.; Scholz, M. and Huemer, C.: UML @ Classroom: An Introduction to Object-Oriented Modeling, Springer, 2015.
  • Schwaber, K. and Sutherland, J. The Scrum Guide: The Definitive Guide to Scrum – Scrumguides.org, 2020.
  • Sommerville, I.: Software Engineering, 10. Auflage - Pearson, 2018.
  • Wintersteiger, A.: Scrum: Schnelleinstieg, 4. Auflage - Frankfurt am Main: entwickler.press, 2018.

Seminaristischer Unterricht; Übungsblätter

Lehrveranstaltung Softwareengineering Labor

INFB511

Labor

Prof. Dr. Thomas Fuchß

deutsch

3/2

90 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Übung 1 Semester (nicht benotet)

Im Software-Engineering Labor durchlaufen die Studierenden einen vollständigen iterativen Softwareentwicklungsprozess in einem Team. Sie beginnen mit der Anforderungsanalyse, entwickeln darauf basierend ein Analyse- und Designmodell und setzen dieses schließlich in Java um. Dabei setzen sie sich aktiv mit Konzepten wie use-case-driven Entwicklung, Architekturorientierung, iterativen und inkrementellen Vorgehensweisen sowie komponentenbasierter Softwareentwicklung auseinander.


Anhand eines konkreten Beispielprojekts erleben die Studierenden die praktische Anwendung dieser Methoden und erlernen, wie sie eigenständig Entwurfsentscheidungen treffen und diese im Einklang mit vorgegebenen Anforderungen umsetzen können. Das Labor legt besonderen Wert auf die Förderung von Teamarbeit und Selbstständigkeit, sodass die Teilnehmenden befähigt werden, effektiv in einem agilen Entwicklungsteam mitzuwirken und die Herausforderungen komplexer Softwareentwicklungsprojekte zu meistern.

  • Foliensammlung und Videos
  • Aufgabenbeschreibungen und Vorlagen
  • Arlow, J.; Neustadt, I.: UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design, 2. ed. - Addison-Wesley Professional, 2005.
  • Shimp, D. and Rawsthorne, D. Exploring Scrum: The Fundamentals – CreateSpace, 2011.
  • Jacobson, I.; Booch, G. and Rumbaugh, J.: The unified software development process - Reading, Mass.: Addison-Wesley, 1999.
  • Kim, G.; Humble, J.; Debois, P. und Willis, J.: Das DevOps-Handbuch: Teams, Tools und Infrastrukturen erfolgreich umgestalten - Heidelberg: O'Reilly; Heidelberg: dpunkt.verlag, 2017.
  • Larman, C.: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3. ed. - Upper Saddle River, NJ : Prentice Hall, 2004.
  • Larman, C. und Vodde, B.: Large-Scale Scrum: Scrum erfolgreich skalieren mit LeSS - Heidelberg: dpunkt.verlag, 2017.
  • Oestereich, B.: Developing Software with UML: Object-Oriented Analysis and Design in Practice 2. ed. - Addison-Wesley Professional, 2003.
  • Oestereich, B.: Analyse und Design mit UML 2.1: Objektorientierte Softwareentwicklung, 8. ed. - München; Wien : Oldenbourg, 2006
  • OMG Object Management Group. Unified Modeling Language (OMG UML) Version 2.5.1 – OMG, 2017.
  • Seidl, M.; Scholz, M. and Huemer, C.: UML @ Classroom: An Introduction to Object-Oriented Modeling, Springer, 2015.
  • Schwaber, K. and Sutherland, J. The Scrum Guide: The Definitive Guide to Scrum – Scrumguides.org, 2020.
  • Sommerville, I.: Software Engineering, 10. Auflage - Pearson, 2018.
  • Wintersteiger, A.: Scrum: Schnelleinstieg, 4. Auflage - Frankfurt am Main: entwickler.press, 2018.

Betreutes Labor, Gruppenarbeit

Lehrveranstaltung Verteilte Systeme 2

INFB512.a

Vorlesung

Prof. Dr. Christian Zirpins

deutsch

3/3

90 Stunden gesamt, davon 45 Stunden Kontaktstudium.

Modulprüfung

Die Vorlesung vermittelt sowohl grundlegende als auch erweiterte Prinzipien verteilter Systeme und veranschaulichen diese in praktischer Form anhand konkreter Paradigmen und Technologien. Das Spektrum behandelter Prinzipien umfasst grundlegende Aspekte der Zielsetzungen und Klassen verteilter Systeme sowie deren Architekturen, Prozesse, Kommunikation und Namenssysteme. Erweiterte Prinzipien beinhalten Koordination, Konsistenz und Replikation, Fehlertoleranz sowie Sicherheit. Die behandelten Prinzipien werden anhand verschiedener Paradigmen exemplarisch vertieft. Dabei werden beispielhafte Umsetzungen einzelner Prinzipien vorgestellt. Zudem erfolgt eine Einführung in die Entwicklung entsprechender Systeme anhand konkreter Technologien.

Nach Abschluss der Vorlesung werden die Studierenden ein umfassendes Verständnis der Prinzipien verteilter Systeme erlangen, die von ihren grundlegenden Zielen und Architekturen bis zu fortgeschrittenen Konzepten wie Koordination, Konsistenz, Replikation, Fehlertoleranz und Sicherheit reichen. Sie erhalten Einblicke in die praktische Anwendung dieser Prinzipien durch die Untersuchung spezifischer Paradigmen und Technologien und verbessern so ihre Fähigkeit, verteilte Systeme zu analysieren und zu entwerfen. Darüber hinaus wird die Einführung in die Entwicklung dieser Systeme unter Verwendung konkreter Softwaretechnologien die Studierenden mit den praktischen Fähigkeiten ausstatten, die für die Implementierung robuster, effizienter und sicherer verteilter Systeme in verschiedenen Computerumgebungen erforderlich sind.

  • Andrew S. Tannenbaum, Marten van Steen, "Verteilte Systeme, Prinzipien und Paradigmen", 2. aktualisierte Auflage, Pearson Studium, 2008, ISBN 978-3-8273-7293-2
  • George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, "Distributed Systems, Concepts and Design", Fifth Edition, Addison-Wesley, 2012, ISBN 978-0-13-214301-1
  • Weitere Literatur wird in der Vorlesung bekanntgegeben.

Eigenständige Arbeitsanteile betreffen Vor- und Nacharbeit der Vorlesungsinhalte, Laborarbeit und Klausurvorbereitung.