


The second issue with WYSIWYG editors is that diffing of the produced plain text files in version control is difficult, because these produced files are huge, and even small changes (e.g. the name of a class) present in both diagrams only in one of the diagrams. At some point, you change an element (e.g. You copy and paste certain elements from diagram #1 to #2 to save time. Suppose you first build diagram #1 for your model, e.g. Let’s understand that by looking at an example. The first one is inconsistency of elements whose details diverge in different views. Consequently, you are still building views, but on a semantic level, using the concise markup language.Īs you can imagine, each approach has a few problems. They define a syntax for each diagram element, including generic elements like boxes and connections, but also domain-specific elements like an UML class. Asciidoc or Markdown), which I presented in the Plain text documentation article. These kinds of markup languages work just like textual markup languages (e.g. This is done using constraints, rather than letting you assign specific coordinates to elements. Typically, these tools do layouting for you, but offer means to influence the layout. They let you define a little bit of both model and view-related aspects. In the middle of the spectrum there are markup languages like Mermaid or PlantUML.whether a box uses rounded corners, object coordinates, or line widths. The produced plain text files are rather verbose and long, because they include presentation aspects, e.g. It lacks meaning regarding what the lines, boxes and other elements really mean – they are just boxes and lines. Their data format (their internal “model”) starts on the view level right away. yEd which stores Graphml files, or Excalidraw which creates JSON files. WYSIWYG editors exist which store diagrams in plain-text formats (rather than binary files), e.g.
#GENERIC SEQUENCE DIAGRAM TOOL GENERATOR#
The corresponding generator tool will then render the diagrams for you, and compute a best-efforts layout of all its elements. class diagram), references to a set of model elements to be included into the diagram, and further configuration parameters (e.g. The definition of a view includes the type of the diagram (e.g. Model languages like Structurizr DSL let you define both the model and a set of views.Let’s now re-examine the three types of markup languages I introduced above: It often makes sense to create multiple views for a specific model, where each view illustrates different aspects, answering a specific question about the model. A view also incorporates all kinds of graphical details, such as the background color of each box or the canvas, the line widths, the coordinate, margin or padding of each box, the font type and size, etc. For instance, for a class model, it would decide that each class is represented by a box, and relations are drawn as arrows.
#GENERIC SEQUENCE DIAGRAM TOOL SOFTWARE#
At this level the software producing the view decides (or lets the user decide) how the graphical representation of the model looks like, to minute detail. A concrete example would be a class model that models the different (souce-code-level) classes, including their name, description, attributes, and methods.Ī view makes a model tangible, by visually expressing it.
