Anwendungsentwicklung mit 100 % kundenspezifischer Anpassung. Anpassungsgetriebene Entwicklung (CDD) / Sudo Null IT-News

In diesem Artikel möchte ich meine Erfahrung in der Entwicklung von Schnittstellen mit einem Anpassungsgrad von bis zu 100 % (echte 100 %) teilen. Gleichzeitig bleiben die Abwärtskompatibilität und die Möglichkeit von Updates erhalten. Magie? – Nein, es ist CDD!

Alles begann im Jahr 2018 in einem großen internationalen Unternehmen. Ich wurde ins Hauptbüro eingeladen, um dem Top-Management zu erklären, wie wir das Problem der Anpassung unseres Produkts und insbesondere des UI-Teils lösen werden. Kunden mussten es für sich selbst leicht ändern und etwas hinzufügen. Es war notwendig, die Abwärtskompatibilität aufrechtzuerhalten, damit Kunden Produktaktualisierungen erhalten konnten. Damals wusste ich nur von der Möglichkeit, „Löcher“ im Code (Slots) hinzuzufügen, in denen man beliebige Funktionalität hinzufügen kann. Nun, auch über die API, um die Funktionalität bereits zu ändern. Es ist klar, dass von einer Möglichkeit der Anpassung zu 100 % keine Rede war, denn dann muss der Quellcode geändert werden, und dies allein ist ein Verlust der Abwärtskompatibilität.

Natürlich braucht nicht jeder eine CDD. Diese Technik ist äußerst nützlich, wenn Sie ein Produkt entwickeln, dessen Kunden eine umfassende Anpassung benötigen. Ich meine, ändere nicht nur das Logo und den Namen, sondern ändere absolut alles, was dein Herz begehrt. Und gleichzeitig die Möglichkeit zukünftiger Updates des Produkts nicht zu verlieren.

Wie erreicht man eine nahezu 100%ige Anpassung und ohne eine einzige Unterbrechung, ohne die Abwärtskompatibilität zu verlieren?

CDD verwendet “deklarative Anpassung”, d.h. Die gesamte Ansicht mit Logik muss für eine vollständige Anpassung nach außen gedreht werden. Wenn es notwendig ist, bestimmte Teile einer ziemlich komplexen Komponente anzupassen, rendern wir einfach ihre einfacheren internen Komponenten. Diese Komponenten können in eine sogenannte “Black Box” mit einer reichhaltigen API und “Löchern” (Slots) verpackt oder auch mit noch einfacheren Komponenten gerendert werden. Die Ansicht mit der Logik beliebiger Komponenten (außer primitiven) kann immer nach außen gedreht werden, um 100% Zugriff zu erhalten.

Und hier kann man einwenden: „Aber warum, denn wenn wir die internen Inhalte verwenden, dann verlieren wir die Möglichkeit von Updates!“. Nein, das ist nicht ganz richtig, und hier ist der Grund:

  1. Eine Komponente beliebiger Komplexität (mit Ausnahme einer primitiven) ist nur ein Satz einfacherer Komponenten, der immer frei verfügbar ist, und wenn er aktualisiert wird, sehen wir deutlich, was und wo sich in diesem Satz geändert hat, und können ihn sehr einfach und schnell aktualisieren manuell (falls erforderlich). );

  2. Eine komplexe Komponente besteht aus weniger komplexen Komponenten, die wir in ihrer standardmäßigen, verpackten Form belassen können, wenn wir ihre tiefgreifende Anpassung nicht benötigen, und wir erhalten ihre Aktualisierungen natürlich automatisch;

Gut. Aber wie kann dies erreicht werden? Was sind die Schritte?

Zuerst müssen Sie die primitivsten Komponenten entwickeln. Sie können, und einige von ihnen sollten sogar, zwei Möglichkeiten haben:

  1. Die Standardkomponente, eine „Blackbox“ mit einer reichhaltigen API und „Löchern“ (Slots), ist einfach zu verwenden, hat aber begrenzte Anpassungsmöglichkeiten;

  2. Die Wrapper-Komponente erweitert die Möglichkeiten des Inhalts, den Sie einfügen. Weniger bequem zu bedienen, aber viel anpassbarer, bis zu 100 %. Erforderlich für Standard-HTML-Elemente: