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.)
la source
Réponses:
En réponse à l'article EF Vote of No Confidence , EF Mallalieu écrit:
L'article de Wikipedia pour Canonical Model fait référence à des choses comme Enterprise Service Bus , Service-Oriented Architecture et CORBA , des choses qui semblent ne plus être parlées. Ils étaient tous posés comme la solution aux défis de la prolifération des données et de la communication de l'entreprise, le One Ring to Rule Them All. TM Ont-ils réussi? Ou se sont-ils effondrés sous leur propre poids?
Vous avez demandé des expériences personnelles, je vais donc vous en donner une. Dans l'industrie aérospatiale, nous utilisons beaucoup la télémétrie. L'un des défis des systèmes de télémétrie est de trouver un moyen pour différentes plages de test de communiquer les données de test entre elles de manière significative. Ce problème semble assez simple, jusqu'à ce que vous tentiez de définir un dictionnaire de données de termes courants.
Que signifie «altitude»? Est-ce la hauteur au-dessus du sol ou la hauteur au-dessus du niveau de la mer? Et si vous parlez d'un sous-marin? Puis sa profondeur, pas l'altitude. Pour l'armée, le mot «transmission» a une signification différente lorsque vous faites référence à une antenne radar par rapport à un véhicule au sol. La surface de l'aile qui fait rouler un avion est appelée "aileron" sur certains avions et "elevon" sur d'autres.
Ce n'est qu'un indice de la montagne de problèmes qui suit. Bien qu'il existe des normes pour les communications de données, chaque plage de test est différente et a des besoins, des objectifs et des priorités différents. Les normes peuvent différer même entre différents projets sur la même gamme. Pour cette raison, les gammes de tests comprennent que la solution ne viendra pas en remplaçant tout par un seul système monolithique, mais en convenant de protocoles de communication simples et en fournissant des moyens de traduire du vocabulaire d'une gamme à l'autre.
Les problèmes auxquels sont confrontées les grandes entreprises sont similaires. Microsoft a tendance à penser en termes monolithiques, mais c'est parce que leur entreprise est, dans l'ensemble, monolithique. Dès que vous avez besoin de communiquer entre différentes entreprises avec des cultures et des façons de faire très différentes (ou même entre des départements disparates au sein d'une même entreprise), le One Ring to Rule Them All. TM commence immédiatement à se décomposer.
la source