Utilisation de ChatGPT pour créer des diagrammes système
La popularité de ChatGPT ne cesse de croître et il est maintenant utilisé dans un large éventail d’applications. En tant qu’architecte logiciel, j’ai eu l’occasion d’explorer les capacités de ChatGPT pour une utilisation dans le domaine financier, en particulier pour la gestion de patrimoine.
Je voulais confirmer si ChatGPT pouvait générer des diagrammes pour une explication de cas d’utilisation et analyser plusieurs facteurs en même temps.
Alors, je me suis connecté à chat.openai.com et voici ma conversation
Étape 1 : Définissons le cas d’utilisation
J’aurais pu définir mon propre cas d’utilisation, mais je voulais tester tous les aspects de ChatGPT, alors je lui ai demandé d’en définir un pour moi.

Étape 2 : Définissons un modèle de données pour le cas d’utilisation
Cela me semble bien, commençons par définir le modèle de données – j’ai donc demandé à ChatGPT de le faire et c’est ce que j’ai obtenu

Cela semble à peu près correct, voyons ce qu’il peut faire pour les diagrammes. Je voulais approfondir un peu le modèle de données, donc ma prochaine invite était
Invite : ChatGPT : Je peux décrire la structure du modèle de données dans un format tabulaire en utilisant le démarquage.
describe the data model in more detail or tabular format using markdown

C’est un bon début. Ensuite, j’ai demandé à définir des relations
Étape 3 : Définissons les relations — Diagramme des relations d’entité
Invite : c’est parfait, je voudrais décrire les relations dans un diagramme de sirène, pouvez-vous me donner le code de démarquage pour faire cela
ChatGPT : je m’excuse, mais en tant que modèle textuel, je ne suis pas en mesure de générer des diagrammes de sirène ou tout autre schéma visuel. Cependant, je peux vous donner un exemple de la façon dont les relations pourraient être représentées dans la syntaxe Mermaid :

Et en copiant ceci dans un éditeur de démarquage inclus dans les balises {mermaid}, j’ai obtenu

Super, on arrive à quelque chose.
J’ai un diagramme de classes / diagramme entité-relation. Voyons ce qui est possible d’autre
Étape 4 : Diagramme de séquence
Ensuite, j’ai essayé de faire des invites hypothétiques pour vérifier les réponses. Ma première intention était de créer un diagramme de séquence
Invite : comment une transaction d’achat d’un actif aurait-elle un impact sur les tableaux mentionnés ci-dessus, je voudrais décrire cela sous la forme d’un diagramme de séquence. Pouvez-vous m’aider à décrire le diagramme au format markdown pour la sirène
ChatGPT : Bien sûr, uneBuy
transaction aurait un impact sur les tableaux suivants :
Asset
table : lacurrent_value
de l’actif serait mise à jour pour refléter la valeur marchande actuelle de l’actif
Portfolio
table : lacurrent_value
du portefeuille serait mise à jour pour refléter le nouvel actif et sa valeur de marché, et laasset_allocation
serait mise à jour pour refléter le nouvel actif.
Transaction
table : une nouvelle transaction serait ajoutée avec les détails de la transaction tels que le type de transaction, la date de la transaction, l’asset_id et le portfolio_idVoici un exemple de la façon dont le processus pourrait être représenté dans un diagramme de séquence Mermaid :

et la copie est dans un éditeur de démarquage

Impressionnant. Mais je n’ai pas encore fini
Étape 5 : Diagramme de transition d’état
Permettez-moi de poser une question sur un State Transition
diagramme
Invite : le compte aura-t-il des états tels que nouveau, fermé, actif, inactif, etc. ? Je voudrais représenter les états dans un diagramme d’état en utilisant la sirène. Pouvez-vous aider à décrire le diagramme au format Markdown
ChatGPT : Il est courant que les comptes financiers aient différents états, tels que nouveau, fermé, actif et inactif, pour refléter l’état actuel du compte.
new
compte serait celui qui vient d’être ouvert et est en attente de financement ou de vérification.
active
compte serait celui qui est actuellement ouvert et utilisé pour les transactions.
inactive
compte serait celui qui n’est pas utilisé actuellement mais qui n’a pas été fermé.
closed
compte serait celui qui a été fermé par le client ou l’institution financière, et ne peut plus être utilisé pour les transactions.
Pending
state peut être utilisé pour indiquer que le compte est en cours d’examen ou en attente de vérification.
Suspended
L’état peut être utilisé pour indiquer que le compte a été temporairement suspendu, par exemple, en raison d’une activité suspecte ou du non-respect des conditions générales.
Frozen
L’état peut être utilisé pour indiquer que le compte a été gelé, par exemple, en raison d’un litige ou d’une action réglementaire.
Expired
state peut être utilisé pour indiquer que le compte a atteint sa date d’expiration et n’est plus utilisé.voici un exemple de la façon dont les états d’un compte pourraient être représentés dans un diagramme d’état Mermaid :

Il semble que ce format est plus ancien et peut se casser en raison de dépendances cycliques. J’ai donc demandé à ChatGPT d’améliorer cela
Invite : pouvez-vous essayer de donner la syntaxe de démarquage du diagramme d’état dans un nouveau format en utilisant
[*]
ChatGPT : Bien sûr, voici un exemple de la façon dont un diagramme d’état pour le composant de gestion de compte d’un système de gestion de patrimoine pourrait être représenté dans Mermaid en utilisant le nouveau format avec[*]
:

Représentation de l’éditeur Markdown

Ce diagramme montre les différents états d’un compte et les transitions possibles entre eux.
- L’état initial est
[*]
qui dénote l’état de départ. - Le compte peut passer d’
New
un état àActive
l’autre en l’activant. - Le compte peut passer d’
New
un état àClosed
l’autre en le fermant. - Le compte peut passer d’
Active
un état àInactive
l’autre en le désactivant. - Le compte peut passer d’
Active
un état àClosed
l’autre en le fermant. - Le compte peut passer d’
Inactive
un état àActive
l’autre en l’activant. - Le compte peut passer d’
Inactive
un état àClosed
l’autre en le fermant.
Maintenant, nous arrivons quelque part. Étendons cela davantage pour inclure d’autres États également
Invite : veuillez également inclure les états expiré, gelé et autres états pertinents
ChatGPT : bien sûr, voici un exemple de la manière dont un diagramme d’état pour le composant de gestion de compte d’un système de gestion de patrimoine pourrait être représenté dans Mermaid, y compris des états supplémentaires tels que , ,Expired
etc.Frozen
:Description :
Ce diagramme montre les différents états d’un compte et les transitions possibles entre eux.L’état initial est
[*]
qui dénote l’état de départ.
Le compte peut passer d’New
un état àActive
l’autre en l’activant.
Le compte peut passer d’New
un état àClosed
l’autre en le fermant.
Le compte peut passer d’Active
un état àInactive
l’autre en le désactivant.
Le compte peut passer d’Active
un état àFrozen
l’autre en le gelant.
Le compte peut passer d’Active
un état àClosed
l’autre en le fermant.
Le compte peut passer d’Inactive
un état àActive
l’autre en l’activant.
Le compte peut passer d’Inactive
un état àFrozen
l’autre en le gelant.
Le compte peut passer deInactive
état àClosed
état en le fermant.
Le compte peut passer d’Frozen
un état àActive
l’autre en le dégelant.
Le compte peut passer d’Frozen
un état àClosed
l’autre en le fermant.
Le compte peut passer d’Closed
un état àExpired
l’autre si le compte a expiré.

Et représentation schématique

C’est génial. Vraiment impressionnant sur ce qui peut être réalisé avec ChatGPT et Mermaid
Dans la continuité de mon post précédent , je voulais me concentrer sur le modèle de diagramme C4 . Pour empêcher ChatGPT de s’écarter de l’intention, j’ai commencé par une invite ci-dessous
Invite : À l’avenir, je souhaite que vous agissiez en tant qu’architecte logiciel et que vous construisiez des diagrammes C4 à l’aide de mermaid.js. Conservez les réponses à la syntaxe de démarquage et gardez toujours à l’esprit les aspects fonctionnels et non fonctionnels du logiciel, y compris, mais sans s’y limiter, l’évolutivité, la disponibilité, la redondance, la conteneurisation, la sécurité et la reprise après sinistre.
ChatGPT : Bien sûr, en tant qu’architecte logiciel, je peux vous aider à créer des diagrammes C4 à l’aide de Mermaid.js qui prennent en compte les aspects fonctionnels et non fonctionnels tels que l’évolutivité, la disponibilité, la redondance, la conteneurisation, la sécurité et la reprise après sinistre.
Les diagrammes C4 sont un moyen de représenter l’architecture d’un système logiciel, et il est divisé en quatre niveaux principaux :
- Niveau de contexte, qui représente les facteurs externes qui interagissent avec le système
- Niveau conteneur, qui représente les unités de déploiement et leurs dépendances
- Niveau composant, qui représente les différents composants du système
- Niveau de code, qui représente les détails de mise en œuvre du système
Bon, commençons
Le diagramme de contexte
Invite : Commençons par créer un diagramme de contexte des services dans Wealth Management
ChatGPT : Bien sûr, voici un exemple de diagramme de contexte au format Mermaid pour un système de gestion de patrimoine :

et dans l’éditeur de démarquage

Ce diagramme montre les principaux acteurs qui interagissent avec le système de gestion de patrimoine et les principaux services fournis par le système.
- Le
User
interagit avec lesAccount Management Service
,Portfolio Management Service
,Asset Management Service
etTransaction Management Service
. - Le
Financial Institution
interagit également avec lesAccount Management Service
,Portfolio Management Service
,Asset Management Service
etTransaction Management Service
. - Le
Market
interagit avec leMarket Data Service
.
Ce diagramme donne un aperçu des principales interactions entre les acteurs et les services, et il pourrait être utile pour comprendre l’architecture de haut niveau du système.
Le diagramme du conteneur
Ça a l’air bien jusqu’à présent. Ensuite, construisons un diagramme au niveau du conteneur pour l’un des services
Invite : Prenons le service Portfolio et décomposons-le en créant un diagramme de conteneur pour ses sous-fonctionnalités
ChatGPT : Bien sûr, voici un exemple de diagramme de conteneur au format Mermaid pour le service de gestion de portefeuille d’un système de gestion de patrimoine :

et diagramme de démarque

Ce diagramme montre les conteneurs qui composent le service de gestion de portefeuille et leurs dépendances.
- Le
Portfolio Management API
est le point d’entrée permettant aux utilisateurs et aux autres systèmes d’interagir avec le service. - Le
Portfolio Management Worker
est chargé d’effectuer des tâches en arrière-plan, comme la mise à jour du portefeuille en fonction des évolutions du marché. - Le
Portfolio Management Database
stocke les données relatives aux portefeuilles, comme les actifs détenus dans chaque portefeuille, leur valeur actuelle, etc. - Le
Load Balancer
distribue le trafic entrant entre les instances de s’exécutantPortfolio Management API
dans leKubernetes Cluster
. - Le
Kubernetes Cluster
est responsable de la gestion de la mise à l’échelle, de la disponibilité et du déploiement des conteneurs.
Le diagramme des composants
Invite : Créons ensuite le diagramme au niveau des composants pour l’API de gestion de portefeuille avec tous les détails pertinents
ChatGPT : Voici un exemple de diagramme de composants au format Mermaid pour l’API de gestion de portefeuille

et le diagramme de sirène correspondant

et voici la description
Ce diagramme montre les différents composants qui composent l’API Portfolio Management et leurs dépendances.
- Le
API Gateway
composant de l’API de gestion de portefeuille est le point d’entrée pour les demandes entrantes. - Le
Authentication
composant est responsable de l’authentification des utilisateurs. - Le
Authorization
composant est chargé de vérifier les droits d’accès des utilisateurs. - Le
Request Validator
composant est responsable de la validation des requêtes entrantes. - Le
Business Logic
composant est responsable du traitement des demandes et de l’exécution de la logique métier. - Le
Response Formatter
composant se charge de formater les réponses avant de les renvoyer aux clients. - Le
Portfolio Service
composant est responsable de l’exécution des opérations liées à la gestion des portefeuilles telles que la création, la lecture, la mise à jour et la suppression des portefeuilles, et il communique avec lePortfolio Management Database
pour conserver les données relatives aux portefeuilles.
Cela a l’air génial. La plupart des détails correspondent à ma compréhension. Essayons de construire la même chose pour Portfolio Management Worker
Invite : pouvons-nous faire la même chose pour le conteneur Portfolio Management Worker
ChatGPT : Bien sûr, voici un exemple de diagramme de composants au format Mermaid pour le conteneur Portfolio Management Worker d’un système de gestion de patrimoine :

et le schéma de la sirène

Ce diagramme montre les composants qui composent le conteneur Portfolio Management Worker et leurs dépendances.
- Le
Task Scheduler
composant est responsable de la planification des tâches de fond de mise à jour des portefeuilles. - Le
Portfolio Updater
composant est responsable de la mise à jour des portefeuilles en fonction des évolutions du marché, il communique avec leMarket Data Service
pour obtenir les dernières données du marché. - Le
Market Data Service
composant est chargé de fournir les données de marché pour la mise à jour du portefeuille. - Le
Portfolio Service
composant est responsable de l’exécution des opérations liées à la gestion des portefeuilles telles que la création, la lecture, la mise à jour et la suppression des portefeuilles, et il communique avec lePortfolio Management Database
pour conserver les données relatives aux portefeuilles.
Le diagramme de code
Faisons le dernier bit et créons également le diagramme de code pourPortfolio Management API
Invite : Pouvez-vous également faire le diagramme de code pour l’API de gestion de portefeuille
ChatGPT ? Bien sûr, voici un exemple de diagramme de code au format Mermaid pour l’API de gestion de portefeuille d’un système de gestion de patrimoine :

Cependant, lorsque j’essaie de le créer dans l’éditeur de démarquage avec Mermaid.js, il ne parvient pas à indiquer les dépendances cycliques. Tout ce que nous devons faire ici, supprimez-les, comme indiqué ci-dessous

et le schéma de la sirène

Ce diagramme montre les différents packages qui composent l’API Portfolio Management et leurs dépendances.
- Le
api
package est le point d’entrée de l’application, il définit les routes, et le middleware. - Le
auth
package est responsable de l’authentification et de l’autorisation des requêtes. - Le
config
paquet est responsable du chargement des fichiers de configuration. - Le
controllers
colis se charge de traiter les demandes et d’appeler les services. - Le
errors
package définit les erreurs personnalisées. - Le
middleware
package est chargé de fournir un middleware pour les requêtes telles que la gestion du CORS, la validation des requêtes, etc. - Le
models
package définit les modèles ORM pour les entités de la base de données. - Le
services
package est responsable de l’exécution de la logique métier et de la communication avec la base de données. - Le
utils
package fournit des fonctions utilitaires