Woche 3: Prinzipien des Software Engineerings / Modulbeziehungen
In dieser Woche besprechen wir wichtige Prinzipien des Software Engineerings, welche allen klassischen wie auch modernen Softwareentwicklungsmethoden zugrunde liegen. Insbesondere werden wir uns das Prinzip Modularität genauer anschauen und das Konzept der Modulgraphen kennenlernen. Wir werden auch lernen, weshalb Software altert, obwohl es sich dabei um ein digitales Konstrukt handelt.
Theorie
Vorbereitung (zu bearbeiten bis 3. Oktober)
Als Vorbereitung für die Präsenzveranstaltung in dieser Woche bearbeiten Sie bitte folgende Schritte:
- Schritt 1: Schauen Sie das Video “Prinzipien des Software Engineerings”. (Video, Slides)
- Schritt 2: Lesen Sie den Artikel “Weitere Prinzipien des Software Engineerings”. (Artikel)
- Schritt 3: Schauen Sie das Video zum Thema “Modularität”. (Video, Slides)
- Schritt 4: Lesen Sie den Artikel “Formale Aspekte von Modulbeziehungen”. (Artikel)
- Schritt 5: Lesen Sie den Artikel “Software Aging” von David L. Parnas. (Paper)
- Schritt 6: Bearbeiten Sie den Test. (Adam)
Präsenzveranstaltung vom 4. Oktober
In der Präsenzveranstaltung werden wir die im Selbststudium bearbeiteten Themen in Diskussionen und Gruppenarbeiten vertiefen. Wir werden auch praktische Anwendungen von Modulgraphen kennenlernen.
Praxis
Im praktischen Teil der Veranstaltung geben wir eine kurze Einführung in Buildsysteme, und gehen dabei insbesondere auf das Buildsystem Gradle ein. Danach arbeiten Sie selbständig an Übung 3. Das Ziel dieser Übung ist, dass Sie sich einen Überblick über die Strukturierung von JabRef verschaffen und lernen, wie Sie Code verstehen lernen können.
Hausaufgaben
- Arbeiten Sie den Selbststudiumsteil Woche 4 durch und bearbeiten Sie die dort angegebenen Aufgaben.
- Falls Sie an der Präsenzveranstaltung nicht anwesend waren, bearbeiten Sie die Theoriefragen und reichen diese bis zum 11.10. auf Adam ein.
- Bearbeiten Sie die praktische Übung und reichen Sie diese wie angegeben per Pull Request ein.
Lernziele
Die Teilnehmenden
- können den Unterschied zwischen Prinzipien, Methoden, Methodologien und Werkzeuge erklären
- kennen die Gründe, weshalb Software altert und wie man dieser Alterung entgegenwirkt. (Software Aging)
- kennen die fundamentalen Prinzipien und können diese in konkreten Beispielen erkennen und anwenden
- können Unterschiede in der Abstraktion “uses” and “is_component_of” verstehen und erklären können
- können Eingenschaften eines Modulgraphen (Hierarchie, Ebenen) erkennen.
- können die Ebene eines Moduls anhand des Modulgraphen bestimmen.
- können praktische Anwendungen von Modulgraphen nennen.