ppls
ppls
ppls
-
- 1 / 58
-
Cartes-fiches
Erzähle was zu serverseitigen Komponentenmodellen.
- auf Application Server eingesetzt
- oft hohe Sicherheitsanforderungen
- Entwickler kann sich auf Geschäftslogik konzentieren
- Qualitätsanforderungen: hohe Skalierbarkeit, hohe Möglichkeit der Anpassung
- Transaktionsverarbeitung; Daten-Persistenz
- Bekannte Modelle: EJB, CORBA, .NET, OSGi
Wie lassen sich clientseitige Komponentenmodelle unterscheiden, was zeichnet die Unterscheidungen aus?
Thin-Client
- Darstellungs-Komponenten realisieren interaktive UI
- oft webbasiert
- Deployment auf Presentation Server; reine Darstellungs- und Interaktionslogik
- Bekannte Vertreter: Java Server Pages, Java Server Faces, AngularJS
Fat-Client
- ClientKomponenten realisieren interaktive UI; zum Teil mit Geschäftslogik
- Komponenten werden in Client-Umgebung eingesetzt
- Desktop-Anwendungen, Entwicklungsumgebungen
- Bekannte Vertreter: OSGi, JavaBeans, Active X, Adobe Flex, W3C Web Components, Rich Internet Applikation (RIA)
Wie lassen sich Schnittstellen differenzieren?
- required vs provided Interfaces
- operation vs port based
- drei Interface Levels zur Verifikation
- Kommunikation: Request-Response und Pipe & Filter
Differenziere Required und Provided Interfaces
- Required Interface (Halbkreis)
- Definiert Schnittstellen, welche die Komponente verwendet
- Wird zur Laufzeit ausgelesen und übergeben (Dependency Injection)
- Alternativ: aktive Einholung der Dependency
- Provided Interface (Lolipop)
- Was wird bereitgestellt
Differenziere operation und Port based Interfaces
- Operation-based
- Schnittstelle wird durch Reihe von Operationen mit Eingabe- und Ausgabeparametern definiert
- Port-based
- Ports sind Eintrittspujnkte für das Versenden und Empfangen von Daten
- Anwendung: Verarbeiten von Sensor-Daten in eingebetteten Systemen
Welche drei Interface Levels zur Verifikation der Kompatibilität kennst du?
- Syntaktisch (Signatur des Interface, Datentypen)
- Semantisch (Werte innerhalb entsprechenden Rahmen)
- Verhalten (Angabe über Reihenfolge, wie Operationen aufgerufen werden)
Differenziere zwischen Request-Response und Pipe&Filter
- Request Response (bidirektional)
- Sub-Varianten: Synchron vs Asynchron
- Pipe & Filter (unidirektional)
- Koponenten sind Filter, welche Daten verarbeiten
- Verbindungen sind die Pipes, welche Daten zur nächsten Komponente transportieren
- Vor allem für datenfluss-basierte Architekturen
Was weißt du zur JAR Hell?
- JAR kann nicht ausdrücken, zu welchen JARs Abhängigkeit existiert
- zu viele JARs säumen Classpath
- Fehlende Abhängigkeiten erst zur Laufzeit bekannt
- Überdeckung (Shadowing) Typ-gleicher Klassen aus verschiedenen JARs
Was weißt du zum Binding von Komponenten?
Vertical Binding: Verbindung von zwei Interfaces vom gleichen Typ
Horizontal Binding: Verbindung von Required und Provided Interface
First-Party: Verbindung durch Entwickler
Third-Party: wird vom Anwender verbunden
Differenziere Exogenous und Endogenous Composition
Exogenous
- explizite Verwendung von Konnektoren zur Interaktion zwischen Komponenten
Endogenous
- Binding ohne Konnektoren
- Binding, Interaktionsprotokolle und Fehlerhandling sind Bestandteil der Komponente
Welche Eigenschaften hat eine Laufzeitumgebung?
- Grundlegende Kommunikation zwischen Komponenten
- Konfiguration von einzelnen horizontalen Services (bspw. Datenbanken)
- Konfiguration von sicherheitstechnischen Einstellungen
- Konfiguration von Qualitätsanforderungen an die LZU
- Kontrolle des Lebenszyklus der eingesetzten Komponenten
Was macht die Management Schnittstelle einer LZU?
- Dynamisches Deployment
- Definition von Bindungen
- Testen von Komponenten
- Status-Anzeige von Komponenten
- Konfiguration der LZU
Welche Phasen gibt es bei der Entwicklung einer komponentenbasierten Applikation?
- Requirements Specification
- Component Analysis
- Requirements Modification
- System Design with Reuse
- Development and Integration
- System Validation
Erzähle etwas zu den einzelnen Phasen der Entwicklung einer komponentenbasierten Applikation
- Requirements Specification
- Component Analysis:
- Suche nach Komponenten, die (Teile) der Anforderungen erfüllen
- meistens kein exakter Match möglich
- Requirments Modificatoion: Überarbeitung der Anforderungen; Berücksichtigung der gefundenen Komponenten
- System Design with Reuse: Entwicklung Software-Architektur; Berücksichtigung der gefunden Komponenten; Auswahl Komponentenmodell und LZU
- Development and Integration: Integration der Software-Komponenten (mit Entwicklung)
Welche Variationen bei der Auswahl von Komponenten gibt es?
- In-House (Eigenentwicklung)
- Commercial off the shelf (vorgefertigt; kein Sourcecode)
- Open Source Components
- Outsource
Welche vier Sichten kennst du aus der Vorlesung?
- Kontextsicht
- Laufzeitsicht
- Bausteinsicht
- Verteilungssicht
Erzähle etwas zur Kontextsicht
- abstrakte Darstellung als Blackbox; logische Zusammenfassung von Systemen
- Schnittstellen werden nicht berücksichtigt, aber Abhängigkeiten
- Beim Datenfluss lediglich DTOs angeben (fachliche Sicht)
Umsetzung mit Paketdiagramm
Erzähle etwas zur Bausteinsicht
- zeigen Ekemente des Systems, Subsystem, Komponenten, Klassen und deren Schnittstellen
- Darstellung von Abhängigkeiten
Nimmt etwa 60% der Architekturmodellierung in Anspruch
Komponenten-, Kompositionsstruktur-, Klassen-
Erzähle etwas zur Verteilungssicht
- beschreibt Hardware-Komponenten (Server, Netzwerk, Firewall) mit beteiligten Protokollen
- Darstellung auch von LZU
Verteilungsdiagramm
Erzähle etwas zur Laufzeitsicht
- Welche Bestandteile des Systems zur Laufzeit existieren und wie diese zusammenwirken
- Modellierung von Boundary-Conditions: Systemstart, Shut-Down
Wie lässt sich eine Software Architektur dokumentieren?
- Modellbasierte Modellierung
- Architecture Description Language (ADL)
- Textuelle Architektur- Templates
Erzähle etwas zur modellbasierten Modellierung
- semi-formal (unpräzise, mehrdeutig)
- dient zur Kommunikation: Entwickler <-> Kunde
- UML
Erzähle etwas zur Architecture Description Language
- Textuell, formal
- weniger Kommunikation, eher Umsetzung / Analyse
- ACME, Darwin, C2, PeerCAT
Erzähle etwas zu textuellen Architektur Templates
- freisprachliche Beschreibung der Architekturelemente
- keine formale Vorgaben
- wenige Standards (arc42)
Was ist Arc42?
- Beschreibung wesentlicher Aspekte (gemäß 4-Sichten Modell)
- Architekturziele, Qualitätsanforderungen, Sichten, Entwurfsentscheidungen, Muster
Welche Muster können unterschieden werden?
- Erzeugende Muster
- Strukturierende Muster
- Verhaltensorientierte Muster
Was ist das Facade Pattern?
- einheitliche Schnitstelle, Delegation an die interne Komponente
- Zentraler, konsistenter Einstiegspunkt
- Realisierung: Front Controller, Session Facade
Was heißt ORM und was weißt du dazu?
Object-Relation Mapping
- Datenbank: relational, Programmierung: objektorientiert -> nicht kompatibel
- Abbildung ist eine Herausforderung
- Technologien: Hibernate, Java Persistence API (JPA)
Was weißt du über Database Access Layer?
- Persistenz Schicht, zwischen Applikation und relationaler Datenbank
- Notifizierungsmechanismus zum konsistenten Abgleich
- Anforderungen:
- CRUD Methoden
- Transaktionen (ACID)
- Lazy Loading (nur laden was benötigt wird)
- Cursor - Prinzip
Was ist die Idee von Lazy Loading?
- Lade (große) Objekte erst, wenn sie wirklich benötigt werden
- kann auch mit Virtual Proxy umgesetzt werden
Wie kann Dependency Injection umgesetzt werden?
- Umsetzung per Resource File, Java Annotations, Reflections, Methoden Signaturen
- Field Injection, Constructor Injection, Setter Injection
- Problem: Wie lang kann übergebende Referenz in Objekt bestehen? Unter welchen Bedingungen kann Referenz injiziert oder ausgetauscht werden?
Wie ist die Definition von MicroServices?
- eigene Laufzeitumgebung, unabhängig von anderen Microservices
- eigenes Domain Model
- Kommunikation mit anderen (REST, HTTP)
- flexibles Deployment (Docker)
- Nanoservice (wenige Zeilen Code)
- eigenes Datenbanksystem
Was heißt Bounded Context?
- kein universelles Datenmodell zwischen Microservices
- vertikale Aufteilung von Funktionen und Daten
Wie ist die Architektur von JEE?
- Web Browser kommuniziert mit Web Container (HTTP)
- Web Container besteht aus Servlet und Java Server Faces
- Web Containter kommuniziert mit EJB Container
- Java Application kommuniziert mit EJB Containter (RMI)
Was weißt du zu Enterprise Java Bean? Und welche Arten davon gibt es?
- serverseitiges Komponentenmodell zur Realisierung der Geschäftslogik
- realisieren
- skalierbare
- transaktionale
- sichere
- und wiederverwendbare Applikationen
- Entity (Bean) - persistentes, fachliches Object
- Session Bean
- Stateless Session Bean
- Stateful Session Bean
- Singleton Session Bean
- Message-driven Bean (asynchrone Kommunikation)
Wie ist das Packaging bei JEE?
- Enterprise Archive (ear) - enthält .war .jar .rar
- EJB-JAR (Enterprise Java Bean Archive, jar) - enthält EJBs
- Web Application Archive (war) - Web-basierten Komponenten
Erzähl was über Session Beans. Wie lauten die Annotationen?
- Session Bean implementiert Use Cases
- musste bis Version 2.x eine Reihe von Interfaces implementieren
- ab 3.0 durch POJO realisiert, Annotations werden verwendet
Entfernter Zugriff erfolgt mehr RMI (Remote Method Invocation).
Annotationen (Folie 28ff)
- @Stateless für Stateless Bean
- @Remote für das Interface welches Remote verwendet werden soll (die EJB implementiert dann das Interface)
- @Local für das Interface welches Lokal verwendet werden soll
- @EJB an eine Variable injiziert dann die lokale EJB in die Variable
Erzähle was über Stateless Session Beans.
Wie lauten die Zustände?
- beliebige Zuweisung aus Pool
- Instanzvariablen können, sollten aber besser nicht belegt werden
- Geschäftslogik sollte in einem Methodenaufruf erledigt werden
- Vorteile Pooling:
- kleine Anzahl Beans kann theoretisch größere Anzahl von Clients bedienen
- benötigen weniger Server Ressourcen
- Hohe Skalierbarkeit
- Auslastung des Application Server sinkt
Erzähle was über Singleton Seassion Bean
Sowie über die Zustände
- es existiert nur eine Session
- Einsparung von Ressourcen
- nicht thread-safe
- Methoden zur Unterbindung nicht performant
- gut für gleichzeitige Lesezugriffe mit wenigen Updates
Lösung (Folie 30)
- synchronized -> inperformant
- Alternativ `@ConcurrencyManagement?
- Vorteil: Read-Lock und Write-Lock
- Read-Lock beliebig viele, aber nicht wenn Write-Lock vorhanden
- Write-Lock nur genau einmal