L'idée «canonique» est omniprésente dans les logiciels; des modèles comme modèle de Canonical , Canonique schéma , modèle de données Canonique et ainsi de suite, semblent venir encore et encore dans le développement.
Comme de nombreux développeurs, j'ai souvent suivi, sans réserve, la sagesse conventionnelle selon laquelle vous avez besoin d' un modèle canonique, sinon vous serez confronté à une explosion combinatoire de mappeurs et de traducteurs. Ou du moins, je l' habitude de le faire jusqu'à quelques années il y a quand je lis le peu tristement célèbre EF Vote de confiance :
Les hypothèses qui soutenaient autrefois la poursuite de modèles de données canoniques ne comprenaient pas et ne pouvaient pas inclure des facteurs qui seraient découverts une fois l'idée mise en pratique. Nous avons constaté, à travers des années d'essais et d'erreurs, que l'utilisation de modèles distincts pour chaque contexte individuel dans lequel un modèle de données canonique pourrait être utilisé est l'approche la moins complexe, l'approche la moins coûteuse et celle qui conduit à une plus grande maintenabilité et extensibilité. des applications et des points de terminaison à l'aide de modèles contextuels, et c'est une approche qui n'encourage pas l'entropie logicielle que font les modèles canoniques.
L'essai ne présente aucune preuve d'aucune sorte pour étayer ses affirmations, mais m'a fait remettre en question l'approche CDM assez longtemps pour essayer l'alternative, et le logiciel résultant n'a pas explosé, littéralement ou au figuré. Mais cela ne veut pas dire beaucoup de choses isolément; J'aurais pu avoir de la chance.
Je me demande donc si des recherches sérieuses ont été effectuées sur les effets pratiques à long terme d'un modèle canonique par rapport à des modèles contextuels dans un système logiciel ou une architecture?
Ou, s'il est trop tôt pour demander cela, faites-vous écrire des développeurs / architectes sur des expériences personnelles passant d'un MDP à des modèles contextuels indépendants, ou vice versa, et quels ont été les effets pratiques sur des choses comme la productivité, la complexité ou la fiabilité?
Qu'en est-il des différences à différents niveaux, c'est-à-dire en utilisant le même modèle sur une seule application ou en l'utilisant sur un système d'applications ou une entreprise entière?
(Faits seulement, s'il vous plaît; les histoires de guerre sont les bienvenues mais pas de spéculation.)