Im letzten Abschnitt möchte ich Ihnen Adapter und Rapper vorstellen.
Und zwar vor allen Dingen als Mittel für inkrementelles Vorgehen bei der Migration.
Diese Adapter und Rapper sind gleichzeitig ein Entwurfsmuster. Dieses Entwurfsmuster
gehört zu denen der Gang of Vorgamaham Johnson flieht sie das.
Wir hatten das in verschiedene Entwurfsmuster ja behandelt.
Sie ändern sich, Entwurfsmotor sind Muster,
sind wiederkehrende Lösungen oder Lösungen für wiederkehrende Probleme
Und hier ist das Problem, dass Schnittstellen passend gemacht werden müssen.
Das ist eine häufige Aufgabe bei den Zwischenlösungen,
die wir brauchen, bei inkrementellem Vorgehen für Migration.
Und was wir dazu machen können,
ist zum Beispiel ein Adapter zu bauen, ein Adapter zu bauen,
wenn wir ein neues Teil in eine alte Umgebung einbauen,
dann brauchen wir für jede Verbindung ein Adapter.
Oder umgekehrt ein altes Teil verwenden wollen in einer neuen Umgebung.
Und dieser Adapter stellt die Kommunikation zwischen alt und neu her,
also quasi über Generationen, Grenzen hinweg,
nimmt Anpassungen von Anfragen und Rückgabewerten vor.
Das Ganze ist nicht ohne Kosten, das heißt,
wir haben etwas auf der Nachteileseite, das Ganze braucht natürlich Rechenleistung.
Diese Rechenleistung kann, äußert sich in Ressourcenbedarf,
das kann entweder Zeit oder Speicherplatz sein.
Ja, in jedem Fall zum Beispiel müssen wir für Daten,
die wir irgendwie weitergeben, manchmal Kopiervorgänge machen.
Und dass wir diese Adapter in den meisten Fällen immer wieder neu machen,
wenn sich etwas Kleines ändert an den Beteiligten,
So, ich gehe hier an dieses Entwurfsmuster. Ja,
also ich sage Ihnen, dass es eins gibt.
Ansonsten muss ich Ihnen das leider aus Zeitgründen überlassen, da noch mehr nachzulesen.
Ich will Ihnen nur noch sagen, dass es da verschiedene Varianten dazu gibt,
dass mit Delegation haben wir hier unten mal dargestellt.
Dann gibt es noch die Adapter mit Vererbung,
also der Nachteil dieses Adapters hier, das Objektadapters ist halt,
dass er für vererbte Elemente nicht funktioniert,
sondern dass ich da einen Neuen schreiben muss.
Adapter, die Mitvererbung funktionieren, Klassenadapter wäre eine andere Version oder zu Beispiel
für primitive Typen in Java, könnte ich eine Böllenklasse einführen.
Auf all diese Sachen gehe ich nicht weiter ein.
Natürlich fragen wir sie auch nicht in der Prüfung danach,
dass es mehr so ein Hinweis für sie,
wenn sie interessiert sind, wenn sie das brauchen können,
scheuen sie sich nicht da mal nachzulesen.
Die Objektadadapter zeigt uns hier ein Beispiel,
und zwar sei die Kommunikation diese Schnittstelle, die nicht passt,
ist die zwischen Client, der eigentlich etwas aufrufen will,
was Operation heißt, und der Dienst,
der aber nicht Operation zur Verfügung stellt,
sondern der stellt Service zur Verfügung.
Dazwischen muss eine Passung hergestellt werden und das macht man so,
dass man hier ein Interface bildet, was der Alltapter implementiert.
Ja, und dieses Interface ruft dann den Service auf.
Das heißt, hier im Adapter steckt im Quelltext,
was ist mit den Parametern zu tun,
was ist mit der Reihenfolge von Aufrufen zu tun,
was sind was für Daten sind zu konvertieren.
Ja, und dieser Konversionsschritt wird hier dargestellt.
Also so funktioniert er prinzipiell. Ich möchte kurz darstellen,
wie wir das in einem Beispiel der Migration
machen könnten
Nehmen wir mal an, wir haben ein Altsystem,
das ist, es muss nicht unbedingt so alt sein wie Kobol,
es ist auf jeden Fall so, wir haben Funktionen,
die irgendetwas tun,
das könnt euch das auch objektorientierte Funktionen sein,
wenn sie denn mögen,
aber sie haben jedenfalls dann in irgendeiner Form greifen die auf eine Bildschirmmaske zu,
haben eine eigene Bildschirmmaske, sie greifen auf Daten zu.
Und nun ist es so, dass die Funktion 1
ersetzt werden muss. Zum Beispiel,
weil wir ganz viel ändern müssen oder weil wir das Ändern nicht mehr können,
sie erinnern sich an das Stage Model,
wir sind vielleicht im Zustand Closed Down,
dass wir schon nichts mehr machen können
Aber Funktion 2 ist gut. Funktion 2 soll weiter genutzt werden,
wo es gibt keinen Bedarf, die neu zu schreiben.
Funktion 1 würden wir gerne neu schreiben. Und das Ganze soll
eingesetzt werden in einem neuen, so ein Bestandteil eines neuen Systems sein.
Stellen Sie sich vor, wir haben eine,
unsere Firma wurde von einer anderen gekauft und die haben ein,
war ein Wirtschaftssystem, Buchhaltungssystem, Personalführungssystem, Auftragsverfolgungssystem,
was auch immer, ja, und deren System ist halt,
das hat gewonnen in dem Auseinandersetzung zwischen unseren und ihrem System.
Eins kann man nur nehmen, wir nehmen Denius,
ja, und dann muss bitte uns was angepasst werden.
Das heißt, funktional Eins wollten wir sowieso wegschmeißen, die schreiben wir neu.
Aber Funktion 2 soll bitte hier drin laufen.
Und das ist ein System mit Cloud, mit Services,
mit einem Service-Poker in einer relativ zeitgerechten, zeitgemäßen Architektur.
Was können wir tun? Wir wollen also Funktion 1 sowieso ersetzen.
Das ist nicht das Problem. Aber Funktion 2 wollen wir
weiter nutzen. Wir können die ja nicht einfach hier rüber nehmen.
Nehmen wir mal in, das wäre Visual Basic. Ja,
es gibt schreck erschreckend große Anwendungen,
teilweise in den Firmen, sowie die heutigen JavaScript-Anweise,
Software,
dann später vielleicht
ein Problem darstellt
Ja, und jetzt, das nächste Bild zeigt,
was wir da machen, wir nehmen einen Rapper.
Sie mögen Fragen, in der Rebisch hat doch eben vernannt,
da habt ihr gesprochen, jetzt spricht er für einen Rapper,
was ist denn da der Unterschied?
Wenn wir es so betrachten, wie wir es jetzt betrachten,
Mittler zwischen Schnittstellen, gibt es keinen Unterschied.
Rapper betont mehr den Aspekt, dass etwas gekapselt ist,
dass es nicht nach außen trinkt, dass es eine geschlossene Umgebung vorfindet.
Ja, also dann würden wir das Altsystem so kapseln,
dass wir also uns um die Datenspeicherung nicht von außen kümmern müssen.
Ja, also hier ist es so,
die Funktion 1, die lassen wir weg,
dafür gibt es einfach
einen neuen Service
Aber die Funktion zwei, die wir wollen,
die wird durch den Adapter, durch den Rapper, adaptiert.
Sie wird, kriegt andere, gibt andere Ausgabeparameter, Eingabeparameter werden irgendwie umgerechnet.
Jedenfalls so, dass es passt. Und dann kann das
von der Geschäftslogik in einem neuen System angesprochen werden.
Natürlich gibt es da auch irgendwelche Rückwege, die ich jetzt weggelassen habe.
Also dieser, das soll als Beispiel dienen,
was wir hier mit einem Rapper einen Adapter brauchen.
Und das ist jetzt diese Stelle,
die wir nur einmal brauchen, nämlich nur so lange,
wie das neue System,
nur die Funktion zwei nutzt
Weil es uns vielleicht nicht gelingt,
diese Funktion zwei hier komplett rauszuschneiden und zu sagen,
okay, ich übersetze die woanders hin,
weil halt die Beziehung nicht so ganz einfach sind,
wie sie in meinem Bild sind, sondern weil sie komplizierter sind.
Und damit hätten wir die Möglichkeit, alt und neu
zu kombinieren. Bis dahin, dass wir sagen,
okay, Funktion zwei ist in Kobold geschrieben, wunderbar,
wir haben noch sieben Kumpel-Programmierer, die können daran weiterarbeiten,
wir müssen die nicht rausschmeißen, weil es gibt noch genug Kobol.
Und trotzdem haben wir das insgesamt ein serviceorientiertes System,
was bessere Eigenschaften hat bezüglich Skalierbarkeit, Operating oder was auch immer.
Also soweit wäre das ein Beispiel für einen Rapper und um die Frage
noch direkt zu beantworten, den Rapper brauchen wir,
weil wir immer solche Zwischenschritte brauchen. Für jeden,
der Zwischenschritte zwischen alt und neu, die wir bei inkrementell,
von dem wir bei inkrementell viel brauchen, brauchen wir Adapter.
Und zwar jedes Mal neue und nach jedem Zwischenschritt wird dieses,
wenn die zweite Seite dann auch neu ist,
wenn alt und neu gegenüber steht,
brauchen wir einen Adapter,
aber wenn das erledigt ist,
dann können wir
ihn wieder wegschmeißen
Soweit. Dazu vielen Dank, das war's zum Thema Migration.
Sie sind herzlich eingeladen in der Software, in der Vorlesungssoftware,
Re-Engineering, die Sie im Master als wahlapplikatorische Veranstaltung buchen können,
vielmehr noch dazu zu erfahren.
Vielen Dank