IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

D2 : un nouveau langage déclaratif pour convertir du texte en diagrammes,
Il prend en charge les extraits de code et la syntaxe Markdown

Le , par Bill Fassinou

17PARTAGES

7  0 
D2 (Declarative Diagramming) est un langage dédié à un domaine (domain-specific language -DSL). C'est un langage déclaratif permettant de générer des diagrammes à partir d'un texte. Développé par une entreprise américaine appelée Terrastruct, D2 est actuellement en version alpha. Pendant cette période, il sera uniquement hébergé sur Terrastruct, qui fournit l'environnement de développement intégré. L'entreprise a déclaré qu'une fois que D2 aura atteint la première version stable, il publiera et continuera son développement en open source et rendra les options locales disponibles.

Terrastruct explique que D2 a été conçu dans un seul but : faire de la création de diagrammes une expérience agréable pour les ingénieurs. Alors pourquoi D2 ? Selon l'entreprise, de nombreux outils peuvent prétendre le faire pour des diagrammes simple, mais les choses se compliquent dès que vous arrivez à des diagrammes même légèrement complexes. Il estime que la plupart des outils de création de diagrammes existants sont des outils de conception, et non des outils de développement. Ils offrent un canevas vierge et une barre d'outils de glisser-déposer, et traitent le flux de travail prévu comme un processus de conception.



Cependant, Terrastruct pense que les ingénieurs ne sont pas des concepteurs visuels, et le manque de capacité à architecturer spatialement un système ne devrait pas bloquer la création d'une documentation précieuse. « Chaque glisser-déposer ne devrait pas nécessiter de planification, et les mises à jour ne devraient pas être un exercice frustrant de déplacement et de redimensionnement pour faire de la place à la nouvelle pièce. Le diagramme déclaratif élimine cette friction », explique-t-il. En somme, D2 est présenté comme un outil de création de diagrammes conçu pour visualiser l'architecture logicielle. Voici quelques-unes de caractéristiques :

  • D2 vous permet d'éditer des diagrammes avec du texte ou une interface graphique, avec des changements synchronisés entre les deux ;
  • D2 supporte les icônes personnalisées ;
  • D2 n'a pas de types de diagrammes. Dans d'autres outils, vous spécifiez "ceci est un diagramme de classe", ou "ceci est un diagramme d'état". L'un des objectifs de la conception de D2 est d'avoir une syntaxe minimale avec laquelle vous composez. Terrastruct explique qu'elle évite la mode "DSL dans un DSL" qui consiste à déclarer des diagrammes spéciaux et à avoir une syntaxe spéciale pour chacun ;
  • Terrastruct note que D2 est plus lent à compiler, car les algorithmes de mise en page sont lourds en recherche heuristique sur les règles. Pour créer des diagrammes de classes dans D2, vous créez des objets comme n'importe quels autres et leur donnez une forme : classe ;
  • D2 supporte actuellement moins de types de diagrammes. Si vous avez besoin de faire des camemberts, des "diagrammes de temps" ou des cartes heuristiques, il faudra du temps, si jamais Terrastruct le prend en charge. L'entreprise a déclaré qu'elle se concentre sur les diagrammes d'architecture logicielle ;
  • D2 supporte les extraits de code et le texte Markdown ;
  • D2 supporte entièrement les diagrammes de classe UML.


Exemple de déclaration en D2 et de formes

Code : Sélectionner tout
x -> y: hello world

Ceci déclare une connexion entre deux formes, "x" et "y", avec l'étiquette, "hello world". Le résultat obtenu est le suivant (image) :



Vous pouvez également utiliser des points-virgules pour définir plusieurs formes sur la même ligne :

Code : Sélectionner tout
SQLite; Cassandra

Par défaut, l'étiquette d'une forme est la même que la clé de la forme. Mais si vous voulez qu'elle soit différente, attribuez une nouvelle étiquette comme suit :

Code : Sélectionner tout
pg: PostgreSQL

Par défaut, le type d'une forme est rectangle. Pour spécifier autre chose, fournissez la forme du champ :

Code : Sélectionner tout
1
2
3
4
pg: PostgreSQL
Cloud: my cloud
Cloud.shape: cloud
SQLite; Cassandra

Le résultat obtenu est le suivant (image) :



Réaliser des connexions avec le langage D2

Les connexions définissent les relations entre les formes. Les traits d'union/flèches entre les formes définissent une connexion. Si vous faites référence à une forme non déclarée dans une connexion, elle est créée. Il existe 4 façons valides de définir une connexion, notamment avec les symboles : "--" , "->", "<-" et "<->". En outre, les étiquettes de connexion peuvent être définies de la manière suivante :

Code : Sélectionner tout
Read Replica 1 -- Read Replica 2: Kept in sync

Il est important de noter que les connexions doivent faire référence à la clé d'une forme, et non à son étiquette

Code : Sélectionner tout
1
2
3
4
5
6
7
8
be: Backend
fe: Frontend

# This would create new shapes
Backend -> Frontend

# This would define a connection over existing labels
be -> fe

Exemple

Code : Sélectionner tout
1
2
3
4
5
6
7
8
Write Replica Canada <-> Write Replica Australia

Read Replica <- Master

x -- y

super long shape id here --\
  -> super long shape id even longer here


Terrastruct associe D2 et une interface graphique

D2 permet de créer des diagrammes à partir de texte, mais Terrastruct propose aussi une interface graphique avec des formes préconstruites. Bien que D2 soit une fonctionnalité remarquable, l'entreprise ne la voit pas remplacer entièrement l'interface graphique. « Nous aimons utiliser le clavier pour piloter nos machines, mais parfois la souris est l'outil le plus approprié, comme lorsque nous faisons défiler un site Web, que nous pinçons pour zoomer ou que nous redimensionnons un objet pour qu'il soit parfait. Terrastruct vous offre l'interface la plus optimisée pour la création de diagrammes », a-t-il déclaré.

Ainsi, vous avez la possibilité de passer de l'éditeur de texte à l'interface graphique de manière transparente. L'interface graphique, contrairement aux lignes de texte, permet un balayage facile et un retour visuel rapide. « Nous avons l'intention de continuer à tirer parti de ces avantages pour vous offrir l'expérience de diagramme la plus fluide », explique l'entreprise. Par exemple, vous pouvez utiliser votre souris pour double-cliquer sur une zone problématique, au lieu de parcourir des centaines de lignes pour la trouver. Choisissez une couleur de manière interactive au lieu de taper le code hexadécimal.

En outre, vous pouvez cliquer et faire glisser une boîte de sélection pour supprimer certaines entités obsolètes au lieu de rechercher les lignes exactes où elles sont définies. Tout est bidirectionnel, de sorte que tout ce que vous faites sur l'interface graphique est répercuté dans vos déclarations.

Feuille de route

D2 est actuellement en version alpha avec un ensemble minimal de fonctionnalités pour être utile. Terrastruct a déclaré qu'il continue de travailler pour l'enrichir de fonctionnalités et d'intégrations dans l'application. L'entreprise prévoit d'ajouter les fonctionnalités suivantes :

  • pour les relations entre tables SQL, les connexions doivent pointer vers la ligne exacte ;
  • fractionnement d'un seul diagramme D2 en plusieurs fichiers qui peuvent être importés et réutilisés ;
  • intégrer des métriques et des variables dynamiques dans le texte (par exemple, $vars.aws.cpu) ;
  • support du développement local ;
  • diagrammes de séquence ;
  • transpilation à partir de Mermaid, Graphviz et PlantUML ;
  • ouvrir le code source ;
  • prise en charge des connexions courbes ;
  • personnalisation et création de thèmes ;
  • fonctions LSP, par exemple liste autocomplète de formes, choix d'objets à partir de la portée, etc. ;
  • classes pour agréger les styles ;
  • raccourcis clavier sur le sélecteur d'icônes ;
  • etc.


D2 est semblable à d'autres outils comme Mermaid et PlantUML. Mermaid est un outil de création de diagrammes et de graphiques basé sur JavaScript qui utilise des définitions de texte inspirées de Markdown et un moteur de rendu pour créer et modifier des diagrammes complexes. L'objectif principal de Mermaid est d'aider la documentation à rattraper le développement. Mermaid permet aux utilisateurs de créer des diagrammes facilement modifiables, qui peuvent également être intégrés aux scripts de production (et autres morceaux de code). Mermaid est un outil open source.

De son côté, PlantUML est un outil open source permettant aux utilisateurs de créer des diagrammes à partir d'une description textuelle. PlantUML vous permet de dessiner à peu près n'importe quel diagramme architectural dont vous avez besoin lors de la conception d'un système. Outre les diagrammes UML, il prend en charge plusieurs autres formats liés au développement de logiciels (Archimate, BPMN, C4, Gantt chart et WBD), ainsi que la visualisation de fichiers JSON et YAML. D2 est jeune, contrairement à Mermaid et PlantUML qui sont des produits bien établis. Il reste à savoir si D2 pourra les concurrencer à l'avenir.

Source : D2

Et vous ?

Quel est votre avis sur le sujet ?
Que pensez-vous du langage D2 ?
Pourrait-il faire de l'ombre à Mermaid et PlantUML à l'avenir ?

Voir aussi

JetBrains annonce la sortie de la version 2021.3 de MPS (Meta Programming System) : un aperçu des nouveautés de l'environnement de développement de langages DSL

OK ?, le langage de programmation moderne, dynamiquement typé, élimine la complexité inutile des langages de programmation actuels

Microsoft lance Power Fx, un nouveau langage de programmation low-code open source basé sur Excel

Python est le langage de programmation le plus utilisé et il ne montre aucun signe de ralentissement, selon l'index TIOBE de janvier 2022

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de archqt
Membre chevronné https://www.developpez.com
Le 01/09/2022 à 14:19
C'est pas mal, cela fera gagner du temps sur de la documentation. J'avais déjà testé un truc dans le genre peut être étais ce cela, faut que je regarde
2  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/09/2022 à 16:49
Oui les langage du genre, c'est pas ce qui manque, l'article en site parmi les plus connus, je vois pas vraiment ce que celui la a à apporter.
1  0 
Avatar de Fagus
Membre chevronné https://www.developpez.com
Le 01/09/2022 à 23:27
ça ressemble vite fait au langage de https://graphviz.org/ . Ce dernier n'est pas hyper-beau, ni personnalisable à souhait, mais en quelques lignes le rendu est très correct (et c'est mature).
1  0 
Avatar de petitours
Membre expérimenté https://www.developpez.com
Le 07/09/2022 à 21:35
Pour ma part je suis content de voir cet outil arriver parce que PlantUML a un langage bien moins lisible je trouve que ce que nous offre D2 et surtout D2 génère par defaut des trucs simples et élégants là ou PlantUML fait des trucs surchargés, très moches et oldmade.
1  0 
Avatar de naoweb
Candidat au Club https://www.developpez.com
Le 08/09/2022 à 8:45
Bonjour,

J'ai comme l'impression que le projet D2 revient à tenter de refaire le monde car il existe par exemple les langages DPIC et PostScript. On peut aussi s'appuyer sur Tikz/PGF, se pencher sur le format PDF, sur les nombreuses extensions graphiques autour de LaTeX.

Il me semble préférable d'intégrer des langages existants dédiés aux graphiques ou de les compléter que de vouloir tout refaire. On peut aussi améliorer les extensions graphiques ou la surcouche applicative; le travail ne manque pas !

Ceci dit, vouloir repartir de zéro est un bon exercice pédagogique même si cela ne dure généralement pas trop longtemps car on se rend vite compte avec l'expérience que c'est assez chronophage.
1  0 
Avatar de petitours
Membre expérimenté https://www.developpez.com
Le 08/09/2022 à 22:34
Citation Envoyé par naoweb Voir le message
par exemple les langages DPIC et PostScript.
Je ne partage pas du tout. DPIC et comme les pires des extensions LaTex (et j'adore LaTex), après avoir regardé la doc on ne sait même plus ce que c'est sensé faire. On a notamment vu des montagnes de descriptions de commandes immangeables sans avoir ne serait ce qu'un aperçu de ce que ça fait.
PostScript c'est un langage vectoriel fait pour représenter tout et n'importe quoi. Un langage comme D2 ne fait pas la même chose, il pourrait exploiter un langage bas niveau comme PostcScript.

Le but c'est de générer du contenu à valeur ajouté, pas d'être capable d'afficher tout absolument tout en passant 5ans à tout construire, c'est en fait pas du tout la même chose.

Citation Envoyé par naoweb Voir le message
On peut aussi s'appuyer sur Tikz/PGF, se pencher sur le format PDF, sur les nombreuses extensions graphiques autour de LaTeX.
Tout pareil du super bas niveau, on pourrait faire du beau et du compliqué avec mais en y passant une vie.

J'ai tenté de faire des illustrations avec Tikz, c’était super beau tout comme je voulais mais le temps que j'y ai passé a fait que j'en ai plus jamais refait et que ce qui avait été ait n'a jamais été mis à jour et finalement supprimé parce que pas à jour. Je suis passé sur des Visio, libreOffice Draw et autres trucs comme D2 qui sont fait pour générer des choses utilises sans s'intéresser au bas niveau.

Ce n'est pas l'acte de faire un diag qui a de la valeur, c'est l'information synthétisée dans le diag, tant mieux s'il faut 1/2 seconde pour le faire.
1  0 
Avatar de TheGuit
Membre régulier https://www.developpez.com
Le 02/09/2022 à 15:13
Il reste à savoir si D2 pourra les concurrencer à l'avenir.
Reste à savoir si on a besoin d'un autre truc qui fait exactement la même chose mais en moins bien ? Ben non !

PlantUML marche très bien, supporte de nombreux types de diagramme. Aucune raison d'en faire un nouveau.

Le fait que Mermaid s'intègre un tout petit peu plus simplement dans Markdown est déjà un argument très faible ...
1  1