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.)