Ja, dann kommen wir zum nächsten Abschnitt über Rapping.
Wenn Sie die Gliederung anschauen, dann sehen Sie schon,
dass wir irgendwie so sehr viele Punkte hier nicht haben.
Tatsächlich ist es so, dass es wenig Reengineering-Maßnahmen gibt,
oberhalb der Ebene des Quellcodes,
die in der Praxis durchgeführt werden und dass die Ansprache,
die zieht das Vorhaben dieser Lehrvereinstaltung, ist ja,
sich damit vertraut zu machen, was gibt es hier in der industriellen Praxis.
Die Forschungsthemen spielen im Seminar dann die wichtige Rolle. Ja,
bei Rapping, Rapping, Rapper ist etwas zum Verpacken.
Ja, das ist eine der wichtigen Maßnahmen,
wenn wir auf der Architektur, auf der Strukturebene Veränderungen vornehmen.
Deswegen Lassen Sie uns kurz drüber sprechen, worum es dabei geht.
Wenn wir Strukturebenen, auf der Strukturebene Veränderungen vornehmen,
dann möchten wir möglichst sowas passiert. Zum Beispiel,
wenn es ein neues Schnittstellenformat gibt,
wenn wir mit anderen Systemen verbinden müssen,
wo wir ein anderes Protokoll einführen müssen oder wenn wir Datentypen ändern müssen,
Strukturen ändern oder Sachen zusammenfassen.
Solche Veränderungen an Schnittstellen haben normalerweise immer zur Folge,
dass man tatsächlich die Implementierung auch ändern möchte.
Rapper haben aber, die bieten diese Möglichkeit,
dass man das umgeht.
Deswegen zunächst erstmal
Etwas zum Ziel. Bei Änderungen von Schnittstellen soll die Implementierung betroffener Komponenten
Unangetastet bleiben. Zum einen wegen des Aufwands zum anderen,
wegen der Risiken, die damit verbunden sind.
Also das müssen wir so betroffene Komponenten sind dabei einerseits die,
die selber geändert sind
Und das andere Komponenten mit Abhängigkeiten dazu. Diese,
das ist eines der Ziele, das zweite Ziel ist,
wenn wir umfangreiche Änderungen durchführen, brauchen wir Zwischenlösungen,
wenn wir,
nachdem wir das eine Stück verändert haben,
damit wir zunächst erst
mal weiterarbeiten können
Inkrementelle Änderungen sind immer hilfreich, damit man nicht mit Großänderungen
mit einmal machen, sondern mit schrittweise vorgehen kann.
Und da muss man natürlich Zwischenlösungen haben und diese Zwischenlösung werden
durch solche Rapper gemacht. So, eine kurze Definition des Begriffs
möchte ich Ihnen auch nennen. Und zwar nehmen wir hier,
habe ich hier einen Begriff zu dem Object Rapper
In Object Rappern, Revides, Access to a legacy system.
Wow, das ist falsch geschrieben.
Schwulen Incapsulation Layer
Es geht also um Kapselung dabei. The Encapitulation Exposes Only. Those
attributes and operations Ähm... Desired bei The Software-Architekt. So,
diese Definition sagt uns, wir brennen uns per Kapselung,
können wir uns dabei beschränken bei der Änderung auf die Teile,
die außen sind.
Das Innere kann erhalten bleiben. Wir brauchen eine neue Seite.
Und hier gibt es zwei Möglichkeiten, die wir haben.
Und das erste, was wir mit dem ersten,
mit dem wir uns beschäftigen wollen, sind Daten-Rapper.
Dazu muss ich gleich sagen, es gibt zwei Begriffe,
Rapper und Adapter. Die sind häufig Synonym benutzt.
Verdapter, schreibt mir ÖP
So, es geht dabei, dass wir beim Datenrapper,
geht es uns um Datenzugriffe, die wir ermöglichen wollen,
obwohl sich eine Änderung an Daten ergibt.
Das Ziel ist hier, Zugriff auf Daten Veränderungen der Schnittstelle.
Also entweder ändert sich die Applikation und die Daten bleiben und wir möchten
einen Zugriff haben oder die Daten werden in neue Form gebracht
und die Applikation soll unverändert sein und wir wollen den Zugriff haben.
Solche, der Bedarf nach so etwas besteht zum Beispiel
wenn wir Migrationen von Applikationen haben.
Oder wenn wir Daten migrieren oder wenn wir synchronisierten, Synchronisation.
Zwischen modernisierten Nein, das ist ein bisschen falsch, wo irgendwie.
Und Legacy-Daten haben, also bei Daten meine ich immer
so etwas wie Datenbank, große Dateien, Datensammlungen halt.
Dann brauchen wir sowas manchmal, diese Synchronisation wird häufig
in Form von Datenreplikation durchgeführt
Ja, nee, das reicht eigentlich weiter, brauchen wir keine Punkte.
Also das sind, da sind die Ziele, die wir haben.
Es gibt unterschiedliche Möglichkeiten, die wir dazu haben und
diese Möglichkeiten sind auf der nächsten Folie dargestellt.
Wir schauen erst mal auf die Fragen, die wir dazu haben,
geben Sie unterschiedliche Arten von Rapper an, nennen Sie jeweils die Ziele.
Wir haben jetzt hier die erste Art von Rapper,
da hatten ein Rapping und das ist auch gleichzeitig die Antwort 2 und zur Frage 3,
das schauen wir uns jetzt mal auf der Folie an.
Es gibt hier also verschiedene,
ich habe hier fünf Techniken von Datenrapper dargestellt,
die wir hier gegenüberstellen,
die in der Tabelle gegenübergestellt werden
Doch bevor wir die Techniken hier in der Tabelle einzeln durchgehen,
möchte ich erst mal zwei grundsätzliche Wege darstellen,
nämlich mit Replikation der Daten und ohne Replikation der Daten.
Lassen Sie uns kurz skizzieren, wie das im Prinzip,
wie es im Prinzip aussieht.
Es geht ja immer darum, wir haben eine Applikation.
Das ist also der Zustand vorher.
Und diese Applikation hat Zugriff auf Daten
Wir schreiben mal hier Daten A. Und hier, da hatten B.
Und vielleicht gibt es noch weitere Applikationen. Vielleicht nehmen wir hier
die Applikation 1. Da gibt es noch eine weitere Applikation.
Zwei, die hier ebenfalls Zugriff braucht. Also typischerweise ist es ja so,
dass in so einem gewachsenen Umfeld, wie er dazu ist,
dazu kommt, dass die Daten mehrfach genutzt werden von verschiedenen Applikationen,
obwohl sie ursprünglich nur für eine Anwendung gedacht sind.
Das war der Zustand vorher
Und jetzt führen nachher,
also nach dem Reengineere könnte das zum Beispiel so sein,
dass wir hier die Applikation 1 hat ein neues Interface bekommen.
Ja, wir machen das Leben das mal farbig hervor.
Das ist also hier so,
die ist also jetzt in irgendeiner Form hat eine neue Schnittstelle
und wir wollen trotzdem
auf die Daten zugreifen
Und im Zusammenhang können wir vielleicht den Datensatz B,
können wir neu machen.
Und hier machen wir es auch mal farbig
So. Und dann kann es natürlich so sein,
dass die Schnittstelle hierzu in einer neuen Weise passiert.
Zum Beispiel, wir haben uns entschieden von dem alten Pfeil
basierten Zugriff auf eine relationale Datenbank zu wechseln.
Oder wir haben jetzt die Daten in der Cloud oder wie
auch immer. Jedenfalls ein neuer Ort des Zugriffs.
Der alte Zugriff funktioniert natürlich dann in dieser Weise nicht mehr.
Das Gleiche trifft zu, wenn wir hier die andere Applikation
noch haben
Applikation 2, so die Applikation 2 kann natürlich hier weiterhin in der bewährten Weise zugreifen.
Aber wir brauchen hier etwas, um auf die anderen jeweils anderen Daten zuzugreifen.
Und zwar könnten wir das so machen,
dass wir jetzt entweder hier die Daten mit einem zugreifen,
mit einem Rapper machen. Das wäre also so,
dass man hier, das packe ich jetzt mal hier drumherum,
Ja, der Rapper erlaubt den Zugriff.
Hierzu, beziehungsweise wir würden hier einen Rapper machen,
der, oder ein Adapter,
das Rapper und Adapter sind da häufig in ähnlicher Form möglich,
dass wir hier einen Adapter erlauben.
Und dann kann man
ihr Zug zugreifen
So, das wäre die eine Möglichkeit,
dass wir die Datenbestände letztlich weiterhin im Zugriff haben,
aber über eine Übersetzung in hier,
durch einen Rapper oder durch einen Adapter,
jeden Fall haben wir eine andere Art des Zugriffs.
Alle Zugriffe sind weiterhin möglich,
aber das ist nicht der einzige Möglichkeit, darauf hinzuwirken,
sondern es gibt noch eine weitere Möglichkeit,
indem wir die Daten replizieren,
indem wir alte und neue
Daten parallel halten
Lassen Sie uns, dass diese zweite Situation hier unten darstellen.
Also wir haben zunächst das erstmal genauso aus wie oben.
Applikation 1, neu. Applikation 2. Und jetzt,
wir schauen mal nur diese neuen Daten an.
Hier, da hatten wir bald und das mache ich vielleicht
jetzt mit grün
Der alte B. Neu. So, in Alter und in neuer Form,
und da kann es natürlich so sein,
dass die Applikationen eins, die neue Applikation,
die hier überarbeitet worden ist, dass die hier darauf zugreift,
ja, und der kann ganz normal Hirdraf zugreifen.
Ich hätte vielleicht die Reihenfolge gleich geschickterweise tauschen sollen,
aber naja, das können sie ja machen,
ich höre ihnen mal hier das Seequartier,
das Bildchen stört ein bisschen, ja, könnte man,
also auf jeden Fall haben wir die Datensätze letztlich zweimal und hier zwischen findet eine Replikation statt.
Das heißt, die Daten werden synchronisiert. Das Gleiche würde für die andere Seite,
könnten wir auch so machen, dass es auch für B,
für Daten A nochmal so eine Zweiarten des Zugriffs gibt.
Das Wesentliche ist jetzt hier,
dass wir die neuen Daten und die alten Daten parallel haben jeweils dafür sorgen,
dass es hier eine Synchronisation gibt, das muss ich mal hier,
das kann ich tatsächlich noch mal ein bisschen besser schieben,
dass wir, dass sie hier das besser sehen können auf dem Weg,
das schiebe ich noch ein kleines bisschen klein um,
ja, geht das ein bisschen besser.
So, die, diese beiden Wege,
ich mache das mal jetzt hier mit Rot,
damit sie das sehen
Das ist eines ohne Replikationen und das andere mit Replikationen. So,
jetzt überlassen wir uns,
nachdem diese grundsätzliche schon wieder stört, der Dozent hier,
nachdem wir diese beiden grundsätzlichen Möglichkeiten mal diskutiert haben,
möchte ich jetzt mit Ihnen gemeinsam mal die Tabelle durchgehen.
Zunächst erst mal die verschiedenen Techniken und was Sie denn für einen Einsätze haben.
Zunächst erst mal diese Abkürzung ETL, um das mal aufzulösen,
das heißt, Extract. Transformation und Load. Das ist eine Technik,
wie sie im Data Mining schon vor 20 Jahren ungefähr eingeführt worden ist.
Dabei geht es darum, dass man Daten sozusagen exportiert als Snapshot,
die dann umfrommt in jeweils, die man braucht und darauf zugreift.
Das hat damit zu tun, dass man mit Replika,
replizierten Daten arbeitet, das steht hier drin,
das wäre also diese der einen Ansatz mit Replikation,
ich schreibe mal hier, mit er hin,
da geht es also um Replikation.
Ein Data-Base-Trigger, dabei geht es darum,
dass man die Daten synchronisiert, zugreift,
indem man synchronisiert, indem jeweils eine Aktion gestattet wird,
wenn sich Daten ändern
Das würde also hier bedeuten, dass wir,
wenn sich hier zum Beispiel hier drin ändern,
sich daten, dann wird ein Trigger, also eine,
das ist ein Trigger, das ist eine Kürze der Software,
die auf der Datenbank läuft, getriggert durch einen Daten,
einen Schreibvorgang in dieser Datenbank, wird ein Änderungsentkopierprozess angestoßen,
sodass das hier drüben NB umgesetzt wird und umgekehrt auch,
wenn hier sich etwas ändert,
wird ein Schreibprozess in Gang gesetzt,
das sich hier drüben etwas ändert.
Das wäre also das, was wir hier unter Trigger haben.
Das Data Access Layer und Data Base Gateway sind beides,
diese Ansätze, die wir hier gesehen haben, wo hier Adapter steht.
Also das wäre eine sehr die Möglichkeit für so einen Adapter,
wären diese beiden Sachen und lassen sie uns kurz was zu den Unterschieden sagen.
Der Data Base Layer, also beides benötigt keine Replikation der Daten,
gearbeitet, also mit einem Maldaten und hier wird durch den Data Access Layer
, scheinen die Daten in einem anderen Format das ist ein bisschen,
man muss natürlich immer noch eine Verarbeitungsschritt dazu haben.
Deswegen steht hier, dass es nicht so effizient sei.
Man muss jeweils, das führt zu einer Verzögerung, das führt zur Rechenleistung.
Ja, und ich muss zwei Zugriffspunkte pflegen. Und der Data Bay Skateway,
das ist, das ist im Gebiet letztlich das Gleiche,
aber dass man ein Standardzugriffsprotokoll hat. Ja,
also während das hier dieser Data Access Layer,
der Begriff dazu verwendet wird, um zu kennzeichnen,
man hat etwas geschrieben, was Zugriff ermöglicht, so ist es,
Handys ist hier, um ein Standardprodukt, was man einsetzen kann.
Und ja, das hat ja ein bisschen Auswirkungen auf die
Wartung, auf die Wartbarkeit des gesamten Systems.
Der Vorteil ist hier, das ist nämlich eine Standardsoftware,
sie kostet nicht sehr viel.
Ich kann sie relativ einfach kaufen. Zum Beispiel gibt es
sowas wie JDBC, ODBC Bridge. Das wäre hier ein
Beispiel. Während hier müssen wir das selbst schreiben,
um diesen zweiten Zugriffspunkt hinzubekommen
Ja, dann gibt es hier noch als weitere Technik es noch angegeben, ein Skript,
während das erste hier, das zweite dieser Data-Based Trigger,
eine Software ist die oder ein Mechanismus ist nach Datenbank selber.
Ist das hier etwas, das man verwendet,
um die Synchronisation per selbst geschriebenem Skript zu machen?
Das braucht man, da braucht man nicht viel dafür zu tun.
Es ist also relativ leicht zu machen,
aber wenn das ein bisschen komplizierter ist,
es gibt mehrere Abhängigkeiten, es gibt da Geschäftsregeln,
die drin sind,
ist es schwierig,
die Änderungen durchzuführen
Ja, so und diese, diese erste Technik,
um da noch was zur Bewertung zu sagen,
da geht es darum, dass man diese Übersetzung letztlich auch,
dass man auch eine Synchronisation macht,
aber über dieses ETL-Werkzeug, was dann dieses,
die Veränderung darstellt und wir hängen dabei natürlich an dem Werkzeug, was die Replikation steuert.
Ja, wenn wir die beiden Möglichkeiten, die beiden grundsätzlich,
ach so, ich wollte noch dran schreiben,
wo es hier um Replikationen geht, ja,
also hier ist auch Replikation Hier unten haben wir noch Replikationen,
während die beiden Database Access Layer und Database Skateway ohne Replikation auskommen.
Also das wären diese beiden Ansätze hier oben und hier unten.
Ich möchte bei den Fragen, hatten wir dazu,
sie sollen Database Access Layer und Database, Gateway gegenüberstellen,
das werden wir kurz machen. Ich hatte schon gerade gesagt,
dass die beiden sich dadurch unterscheiden, also das grundsätzliche Schema ist das Gleiche.
Wir haben hier in so einem Fall wie so eine Art Adapter,
das Gateabase Skateway oder den Layer, Der Unterschied ist nur,
dass man hier ein Standardprodukt einsetzt und deswegen kann man das relativ preiswert kaufen.
Man muss es nicht selbst beschreiben und der Aufwand für die Wartung liegt nicht bei einem selber,
aber natürlich hängt man Wendt bei Änderungen natürlich an diesem Hersteller,
während der Data Access Layer, der Begriff wird dafür verwendet,
dass ich selber etwas schreibe und dieses selber schreiben,
braucht natürlich einen höheren Aufwand.
Das ist nun der Unterschied. Ich möchte,
obwohl die Frage nicht dabei ist, noch was zu dem Unterschied,
ohne Replikationen und Mitreplikationen bezeichnen
Wenn wir hier einen Zugriff und hier die beiden vergleichen oder hier beiden und hier durch den Rapper,
so ist das natürlich jedes Mal hier noch ein,
es sind Rechenprozesse, Kopierprozesse, die da beteiligt sind,
dazu zu führen,
dass wir höheren Rechenaufwand haben und dass wir eine Zeitverzögerung haben für die Antwort.
Das Gleiche, das würde hier nicht zugreifen. Wir haben sofort
einen Zugriff, wenn wir, solange wir lesend zugreifen.
Also im Fall von Lesen zugriffen,
ist das hier auf jeden Fall schneller,
weil ich greife sofort auf die Daten zu
In diesem Fall ist es beim direkten Zugriff natürlich gar kein Problem.
Aber hier ist es egal, ob lesend oder schreibend,
wir haben diesen Umsetzungsaufwand, wenn wir über Rap-Up bzw. Adapter gehen.
Hier haben wir beim Schreiben Zugriff jeweils den Nachteil,
dann muss die Synchronisation, die Replikation in irgendeiner Form angestoßen werden.
Und dann erfordert das Schreiben erfordert also einen höheren Zugriff.
Wir können also ganz klare Entscheidungshinweise geben,
die Stärken des unteren Ansatzes mit Replikationen liegen darin,
wenn wir sehr viel mehr Leseoperationen als Schreiboperationen haben,
Denn dann ist das auf jeden Fall für einen Vorteil.
Die Schreiboperationen brauchen ja Arbeit, die Leseoperationen brauchen keine.
Dann, wenn wir selten schreiben, ist selten Replikationen,
beziehungsweise Synchronisationen notwendig und wir haben dann einen guten,
insgesamt einen geringen Leistungsmehrbedarf. Hier ist es so,
dass wir auf der Schiene, wo wir den Adapter haben,
also entweder auf diesem Weg oder auf diesem Weg einen zusätzlichen Aufwand,
sowohl beim Lesen als auch beim Schreiben haben.
Das heißt, wenn wir die Wahl haben,
wir machen, wenn wir die Applikation 1.0 machen,
wir aus dem Datensatz A oder den Datensatz B erneuern,
es sollten wir davon abhängig machen, welcher mehr Zugriffe hat.
Also der, der mehr Zugriffe hatte, sollte möglichst direkt zugreifbar sein.
Also den sollten wir gleich übersetzen und umformen in einen neuen,
in eine neue Form. Und der mit Rapper oder der mit Adapter,
also hier in dem Fall,
wenn Applikation zwei auf Daten A direkt zugreift,
dann ist das so richtig und Applikation eins auf Daten
B, dann ist das so richtig,
dass wir diese umgeformt haben,
dass also hier ein Direktorzugriff passiert.
Soweit zu den Daten Rapper
Als weitere Form, also wir haben jetzt hier über Datenrapper
gesprochen, als weitere Form möchte ich über Control-Rapper sprechen.
Largic, die heißen Largic Adapto. Neue Seite,
das ist dann die, der Gliederungspunkt 5, 2, 2.
Da sind dabei, da geht es darum,
nicht die Daten zu kapseln, sondern die Zugriffe auf die Geschäftslogik
. . . . Wir wollen also die Geschäftslogik,
die in einer Komponente ist,
auch trotz Veränderung der Schnittstelle
zugreifbar machen
Halt, Bripper. Ich will es einfach nochmal aufschreiben.
Rapper. Es mag in verschiedenen Spezialfällen oder im Detail dann Unterschiede geben,
ob man zu einem etwas Rapper oder Adapter sagt,
in unserem Fall, ist die Auswirkung die gleiche.
Deswegen betrachten wir sie durchaus als Synonym oder beziehungsweise als
gleichwertige Lösung
Ich möchte kurz, also es geht darum, dass wir eine Komponente...
Jetzt ist mein Kasten zu klein, ich starte nochmal neu.
Komponente mit Geschäftslogik. Wenn ich diese Komponente erneuere und wird
schon an, sie wird für einen anderen Zug gegriffen.
Also das kann durchaus zum Beispiel ein Service sein,
dass das jetzt in den Service überführt wird und wir wollen gerne die eigentliche Implementierung erhalten,
dann könnten wir das durchaus so machen,
dass wir hier diese Komponente Nachher Komponente mit Geschäftslogik,
dass wir die,
und ich mache das wieder mit Grün,
dass wir die entweder durch einen Rapper zugreifbar machen,
zum Beispiel in einem serviceorientierten System oder in dem
wir ein Adapter bereitstellen
Und das Gleiche. Mit Geschäftsmodik. Ja,
und hier wieder schön mit Grün die neuartigen Zugriffe.
Also wenn wir jetzt zum Beispiel eine Komponente haben,
die die ganzen Zollregelungen von verschiedenen Ländern implementiert hat und
diese Komponente wollen wir weiterhin erhalten,
weil sie sehr konkurrierbar ist und
wunderbare Eigenschaften hat
Dann wird er diese, dann wollen wir diese Komponente vielleicht,
und wir wollen sie in einem serviceorientierten System zur Verfügung stellen,
dann könnten wir entweder so einen Rapper haben,
sodass sie, dass sie dann Serviceanfragen bearbeiten kann,
oder sie bekommt einen Adapter, der vorgeschaltet,
der diese Serviceanfragen bearbeitet.
In beiden Fällen ist es uns damit möglich,
die eigentliche Implementierung dieser Komponente unangetastet zu lassen,
und können sie trotzdem in einem neuen Umfeld oder mit
neuen Schnittschellen zur Verfügung stellen
Es gibt verschiedene Möglichkeiten, die man dabei machen kann.
Ich möchte die nur nennen, weil ich möchte nicht weiter ins Detail gehen.
Wir machen trotzdem eine neue Folie, ein neues Blatt.
Umsetzung von Mergic Adeptors. Objekte und hier ist Rapping,
Objekt Rapping, stellt solche Schnittstellen in der Objektorientierten Welt
Das würde man vor allen Dingen dann machen,
wenn man sowieso in der objektorientierten Welt unterwegs ist.
Wenn wir eher in der konventionellen Welt unterwegs sind oder mit
Services arbeiten, wird mir... Würden wir eine Zerlegung,
das auf in Komponenten erhalten wollen, Zum Beispiel,
es gibt verschiedene Komponenten, Standards, die sich da,
die in einem System oder in einem Unternehmen eben üblich sind,
als von mir im Standard soll das heißen.
Zum Beispiel EJB Enterprise Java Beans, Service, Schnittstellen,
sowas wie Westful Services. Oder ganz verschiedene andere Arten von Stichstellen,
Standardschichtstellen, die man eben in einem System,
in einer Systemlandschaft hat, die können wir zur Verfügung stellen.
Und dabei ist es sinnvoll, diese als Komponenten zu betrachten.
Jeweils können wir sagen, dass es dabei darum geht,
dass man
das Verhalten darstellt
Sie können sich vorstellen, wenn die Datenformate solcher Schnittstellen sich unterscheiden,
dann muss ich in irgendeiner Form zum Beispiel,
manche Daten werden nicht ausgefährdet oder ich brauche zusätzliche Daten.
Zum Beispiel, wir haben eine Datenbank oder wir haben einen Service,
der internationale Daten verarbeiten kann, aber das,
was wir benötigen in dem umgebenden Feld, ist nur für Deutschland.
Da wird mir einfach das Datenfeld, zum Beispiel Länderkennzeichen,
fest programmieren. Bei jeder Abfrage wird nur mitgegeben,
49 für Deutschland damit, obwohl der Service das international kann,
würde er halt nur, dass die Daten für Deutschland weitergeben.
Das wäre relativ einfach. Schwieriger wird es schon, wenn wir
zusätzliche Zustände haben. Dann möchte ich Sie nur darauf aufmerksam machen,
wenn wir die Menge, wenn wir weitere Zustände haben,
dann müssen wir irgendwie sicherstellen,
dass das Verhalten der eingepackten oder hinterm Adapter geplatzierten Komponente,
dem von außen beobachtbaren Verhalten entspricht,
sodass wir irgendwie zusätzliche Zustände brauchen oder so etwas.
Doch dabei wäre ich nicht weiter drauf eingehen,
nur so als Information für sie,
dass das ein wichtiger kritischer Punkt ist