38 votes

DCI - Data, Context and Interaction - Successeur de MVC ?

Quelle est la meilleure description de Données, contexte et interaction (DCI) pour le présenter à une organisation ?

Il est créé par Trygve Reenskaug le créateur de la Modèle MVC .

Est-ce vraiment le successeur de MVC ou simplement un autre modèle ? Et quels sont ses avantages et ses inconvénients ?

47voto

Guge Points 3761

Trygve fait une présentation de DCI en https://vimeo.com/8235394

L'ICD a été créé pour résoudre un problème de l'orientation objet : il est trop difficile de réviser du code OO.

Le code pour un cas d'utilisation en OO est typiquement réparti entre de nombreuses classes. Pour comprendre comment le code fonctionne, vous devez également connaître les relations entre les objets en cours d'exécution. Ces relations ne sont pas définies dans le code, elles dépendent de la situation.

L'ICD propose que le code pour un cas d'utilisation donné soit séparé des classes et placé dans un artefact différent appelé contexte. Des objets de classes différentes peuvent entrer en relation dans ce contexte et prendre part à une interaction où ils ont des rôles différents.

L'objectif de l'ICD est de rendre le code OO plus lisible !

C'est comme ça que je le présenterais.

2 votes

Yep +1 pour le lien. J'étais en fait en train de le chercher

2 votes

Bonne réponse, je voulais ajouter un peu que l'un des rôles est de faciliter le changement de la logique d'entreprise car le contexte représente la logique d'entreprise réelle et les interactions entre les objets du modèle DUMB. Il serait donc facile de modifier la logique métier si elle est présente à un seul endroit, ce qui réduira également le nombre de bogues introduits.

17voto

Tim Points 499

L'impression que j'ai eue est que ce n'est pas un successeur à MVC autant qu'un complément par exemple la figure 5 dans l'article d'artima sur DCI a les deux. Je pense que c'est censé aider à rendre la distinction entre modèle et contrôleur plus saine, ou peut-être entre différentes parties du contrôleur ou différentes parties du modèle.

L'idée de base semble être de séparer la logique d'actions particulières de vos classes de données et de la déplacer vers des traits/mixtes/autres, un par action (utilisateur). Vous aurez de nombreux petits morceaux de code, au lieu de quelques gros morceaux. De plus, il semble que l'ajout de nouveaux mixins soit censé être "meilleur" que l'ajout de fonctionnalités à vos classes de base. Le code pour les actions individuelles sera probablement (je pense ?) plus étalé, mais le code pour les différentes actions devrait être plus clairement et évidemment séparé.

2 votes

Le code des actions individuelles sera moins dispersé, car il sera placé dans les contextes.

2 votes

La dernière partie de la réponse est en contradiction avec les objectifs de DEI. Un objectif explicite de l'ICD est de conserver les parties d'un algorithme en un seul endroit. Cela est généralement illustré par le fait de conserver l'implémentation d'un cas d'utilisation en un seul endroit.

5voto

Rune FS Points 13350

Une bonne question et une question qui revient souvent. La réponse courte est que c'est un paradigme à part entière basé sur les idées fondatrices de l'OO par Kay, Dahl et d'autres. Il a été créé par Trygve Reenskaug, comme vous le notez, avec plusieurs objectifs en tête. L'un d'entre eux était de faire des opérations d'entrée/sortie des citoyens de première classe du programme. (pas IO comme dans les opérations de disque mais toute communication entre deux objets différents). Un autre objectif important de l'ICD est de séparer ce que le système fait (fonctionnalité/comportement) de ce qu'il est (données).

1voto

Eric Steen Points 198

Je pense que l'amélioration de la compréhension du système est une grande victoire pour n'importe quelle organisation, mais vous pourriez également faire valoir que DCI est une amélioration par rapport à MVC en raison des facteurs supplémentaires suivants :

  1. La séparation nette du comportement du système et des données présente de nombreux avantages pour les activités d'agrégation de données, notamment des analyses en temps réel plus performantes grâce à la réduction de l'empreinte des objets du domaine.
  2. La réutilisation des objets de données et des objets de comportement est beaucoup plus facile à travers les divisions fonctionnelles lorsqu'ils ont leur propre lieu de vie plutôt que d'être des particules comme si elles étaient placées au hasard dans un sous-ensemble d'objets mixtes de données/comportement dans un système.
  3. Comme le BDD est en train de devenir la méthodologie agile de facto, l'organisation aura des années d'avance sur le reste du secteur dans cette pratique et sera peut-être un modèle pour d'autres organisations partageant les mêmes idées.

0voto

Gabriel Ščerbák Points 7982

Il me semble que la conception basée sur les politiques d'Andrei Alexandrescu dans Modern C++ design, mais ce travail est plus bas niveau, DCI ressemble à une architecture avec des parties de méthodologie (les cas d'utilisation dirigent la conception).

3 votes

Vous n'avez pas répondu à la question.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X