Die "kanonische" Idee ist in Software allgegenwärtig; Muster wie das kanonische Modell , das kanonische Schema , das kanonische Datenmodell usw. scheinen in der Entwicklung immer wieder aufzutauchen.
Wie viele Entwickler bin ich oft unkritisch der herkömmlichen Weisheit gefolgt, dass Sie ein kanonisches Modell benötigen , da Sie sonst einer kombinatorischen Explosion von Mappern und Übersetzern ausgesetzt sind. Oder zumindest, ich verwendet , um vor , dass bis vor ein paar Jahren, wenn ich zuerst die etwas berüchtigten lesen EF Misstrauens :
Die Hypothesen, die einst die Verfolgung kanonischer Datenmodelle unterstützten, enthielten und konnten keine Faktoren enthalten, die entdeckt würden, wenn die Idee in die Praxis umgesetzt würde. Wir haben durch jahrelanges Ausprobieren festgestellt, dass die Verwendung separater Modelle für jeden einzelnen Kontext, in dem ein kanonisches Datenmodell verwendet werden könnte, der am wenigsten komplexe Ansatz ist, der kostengünstigste Ansatz ist und zu einer größeren Wartbarkeit und Erweiterbarkeit führt Dies ist ein Ansatz, der die Software-Entropie kanonischer Modelle nicht fördert.
Der Aufsatz enthält keinerlei Beweise für seine Behauptungen, hat mich jedoch dazu gebracht, den CDM-Ansatz lange genug in Frage zu stellen, um die Alternative auszuprobieren, und die resultierende Software ist weder wörtlich noch im übertragenen Sinne explodiert. Aber das bedeutet nicht viel für sich; Ich hätte einfach Glück haben können.
Ich frage mich also, ob ernsthafte Untersuchungen zu den praktischen, langfristigen Auswirkungen eines kanonischen Modells gegenüber kontextuellen Modellen in einem Softwaresystem oder einer Softwarearchitektur durchgeführt wurden.
Oder, wenn es zu früh ist, um danach zu fragen, haben Entwickler / Architekten dann über persönliche Erfahrungen beim Wechsel von einem CDM zu unabhängigen Kontextmodellen oder umgekehrt geschrieben und welche praktischen Auswirkungen dies auf Dinge wie Produktivität, Komplexität oder Zuverlässigkeit hatte?
Was ist mit den Unterschieden auf verschiedenen Ebenen, dh die Verwendung des gleichen Modells für eine einzelne Anwendung im Vergleich zur Verwendung für ein Anwendungssystem oder ein gesamtes Unternehmen?
(Nur Fakten, bitte; Kriegsgeschichten sind willkommen, aber keine Spekulationen.)
quelle
Antworten:
Als Antwort auf den Artikel EF Vote of No Confidence schreibt Tim Mallalieu:
Der Wikipedia-Artikel für Canonical Model verweist auf Dinge wie Enterprise Service Bus , Service-Oriented Architecture und CORBA , über die anscheinend kaum noch gesprochen wird. Sie alle wurden als Lösung für die Herausforderungen bei der Datenverbreitung und Kommunikation des Unternehmens, dem One Ring to Rule Them All, gestellt. TM Haben sie Erfolg gehabt? Oder sind sie unter ihrem eigenen Gewicht zusammengebrochen?
Sie haben nach persönlichen Erfahrungen gefragt, also gebe ich Ihnen eine. In der Luft- und Raumfahrtindustrie verwenden wir häufig Telemetrie. Eine der Herausforderungen bei Telemetriesystemen besteht darin, einen Weg für verschiedene Testbereiche zu finden, um Testdaten auf sinnvolle Weise miteinander zu kommunizieren. Dieses Problem scheint einfach zu sein, bis Sie versuchen, ein Datenwörterbuch mit allgemeinen Begriffen zu definieren.
Was bedeutet "Höhe"? Ist es die Höhe über dem Boden oder ist es die Höhe über dem Meeresspiegel? Was ist, wenn Sie über ein U-Boot sprechen? Dann seine Tiefe, nicht die Höhe. Für die Armee hat das Wort "Übertragung" eine andere Bedeutung, wenn Sie sich auf eine Radarschüssel beziehen als auf ein bodengestütztes Fahrzeug. Die Flügeloberfläche, die ein Flugzeug zum Rollen bringt, wird in einigen Flugzeugen als "Querruder" und in anderen als "Elevon" bezeichnet.
Das ist nur ein Hinweis auf den Berg der folgenden Probleme. Obwohl es Standards für die Datenkommunikation gibt, ist jeder Testbereich anders und hat unterschiedliche Anforderungen, Ziele und Prioritäten. Standards können sogar zwischen verschiedenen Projekten im gleichen Bereich unterschiedlich sein. Aus diesem Grund verstehen Testbereiche, dass die Lösung nicht darin besteht, alles durch ein einziges monolithisches System zu ersetzen, sondern einfache Kommunikationsprotokolle zu vereinbaren und Möglichkeiten zur Übersetzung von Vokabeln eines Bereichs in einen anderen bereitzustellen.
Die Probleme, mit denen große Unternehmen konfrontiert sind, sind ähnlich. Microsoft neigt dazu, monolithisch zu denken, aber das liegt daran, dass das Unternehmen im Großen und Ganzen monolithisch ist. Sobald Sie zwischen verschiedenen Unternehmen mit sehr unterschiedlichen Kulturen und Geschäftsmethoden (oder sogar zwischen unterschiedlichen Abteilungen im selben Unternehmen) kommunizieren müssen, ist der Eine Ring, um sie alle zu regieren. TM beginnt sofort zusammenzubrechen.
quelle