1
votes

Quel diagramme UML dois-je utiliser pour documenter une architecture système axée sur les messages qui utilise des EIP?

Je voudrais utiliser UML pour dessiner un diagramme de haut niveau de l'architecture axée sur les messages de mon système.

J'ai du mal à identifier le bon diagramme pour dessiner un système de microservices EIP qui échangent des messages via des canaux de messagerie.

Quel diagramme UML est le plus approprié pour cela?


4 commentaires

Définissez les réceptions de signaux dans les interfaces.


Merci pour la suggestion. Mais un signal n'est-il pas un événement plutôt qu'un médium? Je veux pouvoir dessiner des microservices et les canaux de messages qu'ils publient et auxquels ils s'abonnent


Pour cela, vous pouvez câbler les ports ensemble.


Voulez-vous dire les ports entre les composants sur un diagramme de composants? Serait-il sémantiquement valide de dessiner un canal de message comme composant intermédiaire? Le plus proche que j'ai trouvé est celui-ci, qui connecte directement les microservices creately.com/diagram/ exemple / il431k3q1 /…


3 Réponses :


1
votes

Depuis l'introduction de enterpriseintegrationpatterns.com:

Le profil UML pour EAI [UMLEAI] enrichit la sémantique de diagrammes de collaboration pour décrire les flux de messages entre les composants. Cette notation est très utile comme description visuelle précise d'un système qui peut servir de base à la génération de code dans le cadre d'un architecture basée sur un modèle (MDA).

Les diagrammes de collaboration sont remplacés dans UML 2 par Diagrammes de communication

Cependant, l'introduction de enterpriseintegrationpatterns.com se poursuit en disant:

Nous avons décidé de ne pas adopter cette notation ... {parce que} ... l'UML Le profil ne capture pas tous les modèles décrits dans notre modèle langue.

Au moment de la rédaction du présent rapport (avril 2019), il semble que la dernière fois que le profil EAI pour UML a été publié était mars 2004 . Ceci est antérieur aux extraits de enterpriseintegrationpatterns.com, qui, selon le chemin du retour, a été publié pour la première fois en août 2015 .

Cela suggère que UML 2 est mal équipé pour décrire les architectures système basées sur les messages qui incarnent des EIP.


1 commentaires

enterpriseintegrationpatterns.com n'est que deux auteurs qui souhaitent vendre leur livre. D'après ce que j'ai vu des entreprises dans le passé, cela n'existe pas. Chaque entreprise est individuelle (pour une bonne raison). Et intégrer quoi que ce soit dans une entreprise n'est rien qu'un livre peut couvrir. Utiliser UML, comme venant d'une (sorte de) équipe de normalisation, est juste une approche ouverte (qui pour moi a toujours bien fonctionné). Mes 2 cents.



0
votes

Vous pouvez utiliser un diagramme de composants et / ou un diagramme de structure composite. Si, dans votre cas, chaque microservice n'est instancié qu'une seule fois, vous n'avez besoin que d'un de ces diagrammes. Sinon, il serait bon d'avoir un diagramme de composants montrant le niveau de classe et un diagramme de structure composite le niveau d'instance. Voir la question Dépendance du diagramme de composants vs assemblage .

Une file d'attente de messages peut être modélisée comme un composant séparé avec le stéréotype <>, ou comme une interface avec le stéréotype <>. La modélisation d'une file d'attente en tant que composant distinct est le meilleur choix si la file d'attente n'appartient pas à un service. Cependant, s'il est possédé (un seul service y met / publie des messages), alors un composant de file d'attente séparé encombre le diagramme et il serait préférable de le modéliser comme une interface, fournie par le producteur de messages et requise par les consommateurs de messages. .


0 commentaires

2
votes

Quand vous dites EIP, je suppose que vous voulez dire Modèles d'intégration d'entreprise , c'est-à-dire. une collection variée de modèles d'intégration d'applications d'entreprise tels que Message Router , Message Broker , Message Channel , Service Call et ainsi de suite, comme indiqué dans plusieurs livres et journaux populaires. Si tel est le cas, alors votre référence au modèle Message Channel a du sens et je pense comprendre ce que vous voulez dire.

L'UML est un ensemble de langages à usage général et peut être utilisé pour représenter de nombreux aspects différents de votre architecture, de sorte que la réponse à votre question dépend de ce que vous essayez de montrer et à quel niveau d'abstraction. Si vous vous concentrez sur la messagerie (synchronisation des messages, classement, etc.), vous devez utiliser l'un des langages comportementaux dans l'UML; si vous souhaitez représenter des messages (structure, types, contenu, etc.), vous pouvez le faire avec un langage structurel . La réponse de 8bitjunkie suggère des diagrammes de communication pour le côté comportemental, mais vous pouvez également utiliser des diagrammes de séquence, des diagrammes d'activité et des graphiques d'état en fonction de votre objectif / besoin. Les diagrammes de séquence vous permettent d'identifier les aspects de synchronisation plus clairement que les diagrammes de communication. Pour la structure du message, je recommanderais les diagrammes de classes. L'UML peut également être étendu via des valeurs marquées et des stéréotypes pour inclure une plus grande spécificité et ajouter des détails structurés si vous le souhaitez; il n'y a pas de réelle limite aux informations structurées que vous pouvez capturer dans un modèle UML.


2 commentaires

Le langage comportemental / structurel n’est pas correct. UML est le langage. Et comportemental / structurel ne sont que des phrases du langage. Utilisez simplement les diagrammes idiomes pour cela.


Assez juste, c'est vrai. Ce que j'essaie de dire ici, c'est que vous pouvez modéliser à la fois des problèmes comportementaux et structurels avec l'UML et que ce que l'on appelle EIP peut facilement être modélisé à l'aide de l'UML. À l'origine, les «langages» de l'UML dérivaient de plusieurs sources / auteurs et donc mon interprétation - de mémoire de l'époque - que l'UML est composé d'autres langages. Mais oui, tu as raison.