Klassen
Assoziationen
Assoziationen mit Kardinalität .z.b (a...b -> mindestens a und hächstens b), (1..1 -> genau 1), (0..1 -> 0 oder 1), (0..* -> beliebig viele), (1..* -> beliebig viele aber min 1)
Aggregation und Komposition
Spezielle Art von Assoziationen: "Teil-Ganzes" Beziehung
Abhängigkeitsbeziehungen z.b. A hängt von B ab oder "Client" hängt von "Server" ab
Generalisierung bzw Vererbung
Interfaces
Komponenten (1)
Komponenten (2)
Nachrichten
Wir verwenden Sequenzdiagramme im folgenden, um beispielhafte Nachrichtenflüsse darzustellen
Allgemeiner werden Sequenzdiagramme im Systementwurf dazu eingesetz, Nachrichten und Objektkommunikation beispielhaft und abstrakt darzustellen
Eine klare Schnittstelle zwischen den Teilsystemen ist die Basis für
bzw. Vertragsprinzip (rely-guarantee) auf die jeweils anderen Komponenten (Verfügbarkeit, Funktionalität)
Vorteile der Komponentenbildung
Code Conventions for the Java Programming Language
Google Java Style Guide
Hungarian Notation
Linux Kernel Coding Style
Checkstyle
Probleme:
Zentrale Versionsskontrolle z.b. svn, cvs
Dezentrale Versionskontrolle z.b. git
CVS Concurrent Versions System
SVN Subversion
GIT
Git Zyklus
Intern funktionieren branches wie pointer
Git Workflow
Einsatzzwecke
Vagrantfile
Provider
Provisioning
Workflow
Jene Prinzipien sind nicht an die Programmiersprache gebunden
Welche Klassen gehöhren zu welchen Komponenten? Diese Entscheidung wird leider oft Spontan und rein kontext bezogen getroffen!
Auflösen möglich auf 2 Arten
Stabilitätskriterien:
${I={{1} \over {3+1}}} = {{1}\over{4}}$
Bemessung der Abstraktion
Der I/A Graph
Interpretation
Streu Diagramm
Klassen von Design Patterns
Weiter Muster
Beteiligte Akteure
Zusammenspiel: der konkrete Iterator verwaltet das traversieren und kann den Nachfolger des aktuellen Elements berechnen
Zusammenspiel
Vorteile:
Nachteile:
Beteiligte Akteure:
Zusammenspiel
Architekturmuster beschreiben den Grundaufbau eines Systems (Makroarchitektur)
Kategorien:
Beschreiben dei Verwendung von internen und externen Ressourcen durch Softwareelemente zur Laufzeit
Es gibt 3 Arten von Allokationsstrukturen
Schichten können auch nach rechts oder unten verwendet werden
Präsentationsschicht
Typische Fehler der Präsentationsschicht
Typisch verwendete Entwurfsmuster in der Präsentationsschicht
Anwendungsschicht
Entwurfsziel
Anforderungen an die Anwendungsschicht
Typische Fehler der Anwendungsschicht
Typisch verwendete Entwurfsmuster in der Anwendungsschicht
Presistenzschicht
Vorteile der 3-Schichten Architektur
Beispiel OSI-Modell
Transmission Controll Protocol
In Java Socket und Serversocket
User Datagram Protocol
In Java Datagram Socket und Datagram Packet
Elemente
7 Kategorien von Designentscheidungen
Spring ist streng modular aufgebaut mit möglichst wenig Abhängigkeiten zwischen den einzelnen Modulen
Wichtige Module:
Spring Container
Configuration Metadata
Spring Container Instanziierung
Spring Boot
Annotationen
Scope Annotation
OR Mapping Schritte
DB Synchronisationszustände
Vererbung
Persistenzschicht Spring garantiert
JPA Java Persistene API
Java Persistence Annotations
H2 Datenbank
Java Server Faces
XHTML
Lebenszyklus einer http anfrage in JSF
Grundlagen
Überblick
Einführung und Ziele
Randbedingungen
Kontextabgrenzung
Lösungsstrategie
Bausteinsicht
Laufzeitsicht
Verteilungssicht
Querschnittliche Konzepte
Entwurfsentscheidungen
Qualitätsanforderungen
Risiken und technische Schulden
Glossar
Volatile vs Bleibende Dokumentation