Woche 5: Modularität und Design
In dieser Woche beschäftigen wir uns mit der Architektur und dem Design von Software. Im Zentrum stehen dabei der Begriff der Modularität und das Ziel, eine Tiefe Koppelung und hohe Kohäsion zu erreichen. Wir werden verschiedene Modulbeziehungen diskutieren, und uns dann verschiedene Wichtige Architekturpatterns anschauen. Zum Schluss führen wir ein erstes Design Pattern ein.
Lernziele
Die Studierenden
- wissen, was wir unter einem Softwaredesign verstehen
- können erklären, weshalb sich Architektur und Design nicht klar abtrennen können
- kennen die Vorteile, die durch Zerlegung eines Systems in Module erreicht werden können.
- können Modulbeziehungen formal beschreiben und können Hierarchien, Transitive Abhängigkeiten und Ebenen anhand des entsprechenden DAGs erklären.
- kennen das Prinzip des Information Hiding und wissen wie es in Java umgesetzt werden kann.
- können designs anhand von Kriterien wie Bindung, Kopplung, Fan-In, Hierarchien, etc. analysieren.
- kennen die Architekturmuster Layering, Pipeline, Blackboard und MVC, MVVM und können diese erklären.
- kennen das Design Pattern Observer und können erklären, wie es bei der Blackboard und MVC Architektur eingesetzt werden könnte.
Übungsstunde:
Im praktischen Teil der Veranstaltung werden Sie eine erste Erweiterung für Jabref implementieren, die sich durch die ganze Software zieht. Zudem werden wir Ihnen Feedback zum Pflichtenheft geben.
Vorlesungsslides
- Modularität und Design
- Slides (Auf Adam): pdf
Hausaufgaben
- Bearbeiten Sie die praktische Übung und reichen Sie diese wie angegeben per Pull Request ein.
- Überarbeiten Sie Ihr Pflichtenheft und reichen Sie die verbesserte Version bis spätestens 22. Oktober ein.
- Beginnen Sie einen Prototypen Ihrer Erweiterung zu implementieren und machen Sie sich Gedanken zum Design. Orientieren Sie sich an dieser Anleitung Design Doc.