<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Optimizing the process of ER diagram creation with PlantUML</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anatolii O. Kurotych</string-name>
          <email>akurotych@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lesia V. Bulatetska</string-name>
          <email>bulatetska.lesya@vnu.edu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>PCWrEooUrckResehdoinpgs ISSNc1e6u1r-3w-0s0.o7r3g</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lesya Ukrainka Volyn National University</institution>
          ,
          <addr-line>9 Bankova Str., Lutsk, 43025</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>47</fpage>
      <lpage>57</lpage>
      <abstract>
        <p>Relational databases are widely used for storing and processing structured information, while their visualization is a key phase in the architectural design of information systems. One of the most popular tools for creating ERD is PlantUML, which implements the “diagram as code” approach for generating diagrams. This research analyzes PlantUML's capabilities for building ERD and explores tools that improve the diagrams' quality and automate their generation process. The shortcomings of PlantUML's basic functionality for creating ERD are described. Additional PlantUML features are described, such as improving the appearance and readability of diagrams by highlighting primary and foreign keys, removing unnecessary elements, and creating legends for user convenience. A plugin module has been developed to enhance the readability of PlantUML code (hereafter referred to as 'PUML code') by structuring it into functions and procedures, making diagrams easier to create and maintain. The benefits of the modular approach include standardized styles and a minimized amount of PUML code. The article also introduces the Sqlant tool, which allows PUML code to be automatically generated from a PostgreSQL relational database. The PlantUML, combined with automation tools like Sqlant and a modular approach, is an efective tool for producing high-quality ERD. It can be particularly beneficial in environments where database structures undergo frequent changes. Despite the limitations of the oficial documentation, PlantUML has significant potential to extend its functionality.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;entity relationship diagram (ERD)</kwd>
        <kwd>computer-aided software engineering (CASE)</kwd>
        <kwd>PlantUML</kwd>
        <kwd>automatization</kwd>
        <kwd>relational databases</kwd>
        <kwd>PostgreSQL</kwd>
        <kwd>command-line interface (CLI)</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Relational databases have become a standard in software development due to their ability to help solve
a wide range of tasks, especially given the popularity of web technologies. As the use of relational
databases has grown, so has the number of professionals requiring database skills. Today, SQL knowledge
is essential for software engineers, as well as technical support specialists, data analysts, business
analysts, marketers, and other IT professionals. Teams of specialists often interact through internal wiki
systems such as Confluence, Notion, etc., where information about projects and products, including
database schemas, is shared.</p>
      <p>
        ERDs are used to design databases [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ]. The process of building ERD is an important stage in
software development, as it provides structured data visualization that contributes to the creation of
high-quality information systems. Computer-aided software engineering (CASE) tools are often used to
create ER diagrams. CASE tools support the automation of the database modeling process and allow
the model to be changed flexibly during the development process. Many companies prefer open-source
software tools that allow them to adapt to specific needs and integrate with other systems. However,
choosing the right CASE tool can be dificult due to the large number of options available. Database
modeling tools can be divided into two main categories based on how users interact with them to create
diagrams: GUI-oriented or code-as-diagram.
      </p>
      <p>
        Tools such as Lucidchart [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], ER/Studio [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], SQL Developer Data Modeler [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], draw.io (diagrams.net)
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], MySQL Workbench [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], Microsoft Visio [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and DBeaver [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] are GUI-oriented. They provide a
graphical interface for creating diagrams, which better suits less technical users. Tools that use textual
descriptions (code-as-diagram approach) allow users to create database models using a specialized
code-like language [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. One of the biggest advantages of this approach is how easily it integrates with
version control systems such as Git. It allows storing diagrams directly with the code, greatly facilitating
the process of tracking changes, managing versions, and ensuring efective team collaboration [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. In
addition, changes can be made by editing the text directly, without the need to manipulate graphical
elements.
      </p>
      <p>
        PlantUML is one such tool. PlantUML is an open-source tool for generating diagrams based on
text descriptions (PUML code) that allows simplifying the process of visualizing the physical model
of relational databases [
        <xref ref-type="bibr" rid="ref12 ref13 ref14 ref15 ref16">12, 13, 14, 15, 16</xref>
        ]. It is available both as a plugin for many development
environments (IDEs) [
        <xref ref-type="bibr" rid="ref17 ref18 ref19">17, 18, 19</xref>
        ] and as standalone software [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. This makes it an ideal choice for
engineers who value the flexibility, speed, and simplicity of a text-based approach. In contrast, tools
focused on graphical interfaces do not ofer the same degree of automation and integration [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        Despite its wide functionality, PlantUML is insuficiently documented at the oficial level, which
creates dificulties in its use. Therefore, the issues of improving the quality of diagrams and optimizing
the process of their generation require additional research [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. The relevance of this work lies in the
need to expand the study of PlantUML capabilities to more efectively display the physical model of
databases and explore ways to improve methods for generating ERD, especially in large projects with
frequent changes in database structure. In addition, automating the creation of PUML code directly from
the database will not only reduce the time required to develop diagrams, but also increase their accuracy
and relevance, allowing you to instantly reflect changes. This approach will make PlantUML even
more eficient for development teams, providing integration with existing databases and documentation
systems.
      </p>
      <p>The research aims to explore the capabilities of PlantUML, develop improved approaches to creating
ERDs to provide more convenient and accurate modeling of relational databases and develop an
automated system for generating PUML code directly from an existing database.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Methods and tools</title>
      <p>PUML code was tested on the oficial PlantUML website (https://www.plantuml.com/plantuml/uml).
GitHub (developer platform) was used to host the PlantUML module. SQL queries were checked using
RDBMS PostgreSQL version 15.0.</p>
      <p>Docker (version 27.3.1) was used to spin up the local PlantUML server (version 1.2024.8) in the
section 7.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Improving the PlantUML diagram appearance</title>
      <p>
        The study is based on PlantUML diagram types such as the “Entity Relationship Diagram” which, as
stated in the documentation, is an extension of the “Class Diagram” with support for relationship
descriptions like “Information Engineering Relations”. Figure 1 shows an example of an ERD, taken
from the documentation [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>Let’s take a PostgreSQL database and create the “customer” and “customer_order” tables, which are
connected using a foreign key. Additionally, define and use the enumerated type “shipping_method”
(figure 2).</p>
      <sec id="sec-3-1">
        <title>3.1. Entity</title>
        <p>
          According to the PlantUML documentation [
          <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
          ], the “customer_order” entity for the ER diagram
can be described in the PlantUML language as shown in figure 3.
        </p>
        <p>
          The PlantUML documentation suggests using the “*” symbol as a visibility modifier to indicate
mandatory attributes [
          <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
          ]. In our case, these are all fields that have the “NOT NULL” constraint.
        </p>
        <p>Since “Entity Relationship Diagram” (in PlantUML) is intended not only for displaying schemes of
relational databases, such a view (Figure 3) has a number of disadvantages:
• A circle with the letter “E” to the left of the table name has no information value in our case.
• Foreign keys are weakly highlighted, they are usually distinguished by colors or additional
symbols.
• “*” symbol, which indicates that a field is mandatory (NOT NULL constraint) and depicted as a
black circle to the left of the variable name, may be confusing to a diagram user unfamiliar with
PlantUML.</p>
        <p>• The same font style for the variable name and its type makes them dificult to distinguish.</p>
        <p>
          According to the authors’ studies [
          <xref ref-type="bibr" rid="ref22 ref23">22, 23</xref>
          ], syntax highlighting plays an important role in working
with source code. Therefore, a number of the shortcomings described above are considered to be fair.
        </p>
        <p>Using the additional features of PlantUML, the following result can be achieved (figure 4). In figure 4(b),
the following rendering flaws have been fixed:
• Deleted letter (E) near the name of the table (using the command “hide circle”).
• The primary key is represented by the “golden key” symbol.</p>
        <p>• The foreign key is represented by the “gray key” symbol.</p>
        <p>Among the disadvantages, it should be noted that the PUML code in figure 4(a) has become more
‘disorganized’ and less readable.
3.2. Enum
Most SQL databases (MySQL, PostgreSQL, Oracle, etc.), as well as most programming languages, support
the enum data type. Using the “entity” keyword creates an unwanted artifact during rendering the
diagram (figure 5, marked with a red arrow).</p>
        <p>To remove this artifact, the ‘object’ keyword should be used. Additionally, highlighting the name of
the list by adding the identifier ‘(E)’ can help make it easier to distinguish from other objects (figure 6).</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.3. Legend</title>
        <p>Since some symbols (as mentioned above in disadvantages) may not be clear to the end user, a “legend”
can be used to explain their meaning. As the diagram becomes more complex, the legend can be
expanded. For example, in figure 7 shows four objects in the legend: Foreign Key, Primary Key, Not
NULL, and Enum.</p>
        <p>(a)
(b)</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.4. Overview of types of relationships</title>
        <p>PlantUML uses the relationship description based on the Information Engineering notation. Figure 8
shows the types of relationships that are supported.</p>
        <p>Also, it is worth mentioning that it is possible to add a comment text to each relationship (figure 9).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Improving the quality of PlantUML code</title>
      <p>
        The readability of the PUML code is an important characteristic because it is responsible for rendering
the diagrams and can be read and edited by diferent team members. To improve the readability and
convenience of writing PUML code, it’s worth reducing its volume. This can be achieved by using
built-in functions (!function) and procedures (!procedure) or by creating your own, which are organized
into plugin modules. It is important to note that there are built-in functions beginning with the symbol
’%’. You can find their brief descriptions on the oficial PlantUML website in the ‘Builtin functions’
section [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. One such function, ‘%splitstr’, which splits the text into an array of strings, was used in
the following example for the ‘enum’ procedure. In PlantUML, functions difer from procedures in that
functions must return a result. Additionally, as in other programming languages, both functions and
procedures can accept parameters. Figure 10 shows two functions (column, table) and their usage. The
result of this code is shown in figure 4.
      </p>
      <p>Figure 11 shows the enum procedure and its usage. The result of this code is shown in figure 6(b).</p>
      <p>As can be seen from figures 10 and 11, the amount of code has increased rather than decreased
because the example only shows one entity that uses custom functions. However, when there are more
tables, this approach will be more eficient.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Designing a plugin module for PlantUML</title>
      <p>Procedures and functions that are used for the design of ERDs should be placed in a separate file with
the .puml extension and included in the main file using the “!include” command. This approach provides
modularity and improves code organization. The module file db_ent.puml was created with the next
content:
• Functions: table($name), column($name, $type, $pk=false, $fk=false, $nn=false);
• Procedures: enum($name, $variants), add_legend().</p>
      <p>To use the module, it must be placed on any web resource so that it has a permanent HTTP(s) address
and is available to users. In this study, a public GitHub repository was used to host the PlantUML
module. It can be accessed at the following address: https://raw.githubusercontent.com/kurotych/
sqlant/b2e5db9ed8659f281208a687a344b34f38129cd/puml-lib/db_ent.puml After the PlantUML module
is hosted on web resource there is a possibility to include it in PUML code (figure 12).</p>
      <p>This approach gives us the following advantages:
• PUML code file contains only the logic of the diagram without unnecessary code-specific details,
which improves the code readability.
• Generic code can be reused in other files without the need for repetition.
• Changes in the PlantUML module are automatically reflected in all related diagrams, which is
useful for fixing bugs.</p>
      <p>• The standardization of styles and procedures for all project participants simplifies teamwork.</p>
      <p>This approach makes it easy to scale projects and keep code clear and organized. Designing functions
(and procedures) in a module will provide an advantage even in the case with a single entity in a
diagram.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Automation of PlantUML code generation for PostgreSQL RDBMS</title>
      <p>
        A software tool called Sqlant (https://github.com/kurotych/sqlant, [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]) was developed to automate
the generation of PlantUML code. Starting from version 0.4, it implements the diagram generation
approach described in this study. It can be installed using Cargo (a package manager for Rust projects)
[
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. For users of the GNU/Linux operating system, a statically compiled binary can be downloaded at
https://github.com/kurotych/sqlant/releases [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Sqlant is a CLI (command-line interface) tool that
generates PUML code (mermaid generation is also supported [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]) based on a connection string. The
result is output to stdout, which can be redirected to a file. Figure 13 shows the sequence diagram of the
engineer’s workflow with the Sqlant tool. Sqlant requires one mandatory parameter: the connection
string (CON_STRING), which contains the database address and authentication data. The database
must be accessible for connection from the Sqlant runtime.
      </p>
      <p>The internal Sqlant workflow operates as follows:
1. Retrieve information about the database schema, including table names, columns, foreign keys,
and other related metadata.
2. Generate PUML code based on the retrieved information.
3. Output the PUML code to standard output, which can be redirected to a file using standard OS
utilities.</p>
      <p>After that, the user executes the received code on the PlantUML server side and receives the result
in the form of a diagram. The generated diagram can be downloaded in several formats: PNG, SVG,
ASCII Art. This tool supports several options for customizing the result. After installation, users can
familiarize themselves with these options by using the --help argument (figure 14).</p>
    </sec>
    <sec id="sec-7">
      <title>7. Data security: installing the PlantUML server locally</title>
      <p>It is worth noting that in the above examples, the plantuml.com site was used to convert PUML code into
PNG/SVG format. This site may (potentially) save these diagrams, as PlantUML generation occurs on the
server side. This could be unacceptable for many companies, as it may expose the internal architecture of
the database to third parties. Since PlantUML is an open-source product, its source code can be reviewed,
and it can be installed locally. One option for installation is using the Docker containerization system.
The following command will launch the PlantUML server (https://github.com/plantuml/plantuml-server)
with a web interface accessible locally at the address: http://localhost:8080 (figure 15).</p>
      <p>docker run -d -p 8080:8080 plantuml/plantuml-server:jetty</p>
      <p>
        When replacing the use of plantuml.com with a locally installed plantuml.jar file (https://plantuml.
com/download) or a locally installed Docker container running the PlantUML server, this approach
becomes easily automatable. As a result, some engineers integrate this process into their bash scripts,
which can then be used in the CI (Continuous Integration) workflow (figure 16) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
    </sec>
    <sec id="sec-8">
      <title>8. Conclusions</title>
      <p>
        During the study of PlantUML capabilities, the main functions of this tool for creating ERDs were
analyzed. An approach is proposed, which includes the development of a plugin module to simplify the
process of modeling the physical structure of databases. The module allows you to standardize code,
improve readability, reduce duplication, and facilitate teamwork. In addition, automation of the PUML
code generation process from the PostgreSQL relational database was implemented. The Sqlant tool
was developed for automation purposes [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Sqlant retrieves information about the database schema,
generates PUML code that can be used to visualize the ERDs in the PlantUML environment. Despite
the lack of oficial documentation, PlantUML has shown significant potential for integration into the
work of development teams due to its flexibility, modularity, and open-source nature.
Declaration on Generative AI: During the preparation of this work, the author used ChatGPT in order to: Grammar
and spelling check. After using this tool/service, the authors reviewed and edited the content as necessary and take full
responsibility for the publication’s content.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Martínez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Po</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R. R.</given-names>
            <surname>Trillo-Lado</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.</surname>
          </string-name>
          <article-title>and Viqueira, A conceptual data modeling framework with four levels of abstraction for environmental information</article-title>
          ,
          <source>Environmental Modelling and Software</source>
          <volume>183</volume>
          (
          <year>2025</year>
          )
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.envsoft.
          <year>2024</year>
          .
          <volume>106248</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hettiarachchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sugandhika</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kathriarachchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ahangama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. T.</given-names>
            <surname>Weerasuriya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Scenariobased</given-names>
            <surname>ER</surname>
          </string-name>
          <article-title>Diagram and Query Generation Engine</article-title>
          , in: B. H.
          <string-name>
            <surname>Sudantha</surname>
          </string-name>
          , R. D. Wageeshani (Eds.),
          <source>Proceedings of the 4th International Conference on Information Technology Research (ICITR)</source>
          ,
          <source>Information Technology Research Unit Faculty of Information</source>
          Technology University of Moratuwa Sri Lanka, IEEE, Moratuwa, Sri Lanka,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          . doi:
          <volume>10</volume>
          .1109/ICITR49409.
          <year>2019</year>
          .
          <volume>9407793</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Lucid</given-names>
            <surname>Software Inc</surname>
          </string-name>
          .,
          <source>Documentation and Implementation Level</source>
          <volume>1</volume>
          |
          <string-name>
            <surname>Lucidchart</surname>
          </string-name>
          ,
          <year>2025</year>
          . URL: https: //www.lucidchart.com/pages/templates/documentation-and
          <article-title>-implementation-level-1.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>ER</given-names>
            <surname>/Studio Data Architect Product Documentation - Embarcadero Technologies</surname>
          </string-name>
          ,
          <year>2024</year>
          . URL: https: //docs.embarcadero.com/products/er_studio/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Oracle</surname>
          </string-name>
          ,
          <source>SQL Developer Data Modeler Documentation Release 18.1</source>
          ,
          <year>2025</year>
          . URL: https://docs.oracle. com/database/sql-developer
          <source>-data-modeler-18</source>
          .1/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>JGraph</given-names>
            <surname>Ltd</surname>
          </string-name>
          , draw.
          <source>io Documentation</source>
          ,
          <year>2023</year>
          . URL: https://www.drawio.com/doc/.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Oracle</surname>
          </string-name>
          , MySQL :: MySQL Workbench Manual,
          <year>2025</year>
          . URL: https://dev.mysql.com/doc/workbench/ en/.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Microsoft</surname>
          </string-name>
          , Visio help &amp; learning,
          <year>2025</year>
          . URL: https://support.microsoft.com/en-us/visio.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>DBeaver</given-names>
            <surname>Documentation</surname>
          </string-name>
          ,
          <year>2024</year>
          . URL: https://dbeaver.com/docs/dbeaver/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Terrastruct</surname>
          </string-name>
          , Text to diagram,
          <year>2025</year>
          . URL: https://text-to-diagram.com/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <article-title>The Mibex Software team, Optimizing documentation with PlantUML - Integration</article-title>
          , Eficiency, and Best Practices,
          <year>2024</year>
          . URL: https://mibexsoftware.com/blog/plantuml/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Drawing UML with PlantUML: PlantUML Language Reference</surname>
          </string-name>
          <article-title>Guide (Version 1</article-title>
          .
          <year>2023</year>
          .
          <volume>11</volume>
          ),
          <year>2023</year>
          . URL: https://pdf.plantuml.net/PlantUML_Language_Reference_Guide_en.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <article-title>Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams</article-title>
          ,
          <year>2025</year>
          . URL: https://plantuml.com/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>The Hitchhiker's Guide to PlantUML documentation</article-title>
          ,
          <year>2020</year>
          . URL: https://crashedmind.github.io/ PlantUMLHitchhikersGuide/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E.</given-names>
            <surname>Gosselin</surname>
          </string-name>
          , PlantUML for database modeling,
          <year>2024</year>
          . URL: https://medium.com/@elvis.
          <article-title>gosselin/ plantuml-for-database-modeling-1b71e6d4622d.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>R.</given-names>
            <surname>Léger</surname>
          </string-name>
          , SQL + PlantUML: Generate Automatic Database Diagrams,
          <year>2020</year>
          . URL: https://tinyurl. com/2bm52k8j.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Akundi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ontiveros</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Luna</surname>
          </string-name>
          ,
          <string-name>
            <surname>Text-</surname>
          </string-name>
          to-
          <source>Model Transformation: Natural Language-Based Model Generation Framework, Systems</source>
          <volume>12</volume>
          (
          <year>2024</year>
          )
          <article-title>369</article-title>
          . doi:
          <volume>10</volume>
          .3390/systems12090369.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. B.</given-names>
            <surname>Jensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Battle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. G.</given-names>
            <surname>Larsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. D.</given-names>
            <surname>Macedo</surname>
          </string-name>
          ,
          <article-title>Bidirectional uml visualisation of vdm models</article-title>
          ,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .48550/arXiv.2304.06618. arXiv:
          <volume>2304</volume>
          .
          <fpage>06618</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>V.</given-names>
            <surname>Krása</surname>
          </string-name>
          ,
          <string-name>
            <surname>PlantUML Integration - IntelliJ IDEs Plugin | Marketplace</surname>
          </string-name>
          ,
          <year>2024</year>
          . URL: https://plugins. jetbrains.com/plugin/7017-plantuml-integration.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Appmus</surname>
          </string-name>
          , Best PlantUML Alternatives &amp; Reviews,
          <year>2021</year>
          . URL: https://appmus.com/software/ plantuml.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Rouabhia</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Hadjadj</surname>
          </string-name>
          , Enhancing Class Diagram Dynamics:
          <string-name>
            <given-names>A Natural</given-names>
            <surname>Language Approach with ChatGPT</surname>
          </string-name>
          ,
          <year>2024</year>
          . doi:
          <volume>10</volume>
          .48550/arXiv.2406.11002. arXiv:
          <volume>2406</volume>
          .
          <fpage>11002</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Beelders</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-P. L. du Plessis</surname>
          </string-name>
          ,
          <article-title>Syntax highlighting as an influencing factor when reading and comprehending source code</article-title>
          ,
          <source>Journal of Eye Movement Research</source>
          <volume>9</volume>
          (
          <year>2016</year>
          ).
          <source>doi:10.16910/jemr. 9.1.1.</source>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sarkar</surname>
          </string-name>
          ,
          <article-title>The impact of syntax colouring on program comprehension</article-title>
          ,
          <source>in: Proceedings of the 26th Annual Conference of the Psychology of Programming Interest Group, PPIG2015</source>
          , Bournemouth,
          <year>2015</year>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>58</lpage>
          . URL: https://ppig.org/files/2015
          <string-name>
            <surname>-PPIG-</surname>
          </string-name>
          26th-Sarkar1.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kurotych</surname>
          </string-name>
          , GitHub - kurotych/sqlant: Generate PlantUML/
          <article-title>Mermaid ER diagram textual description from SQL connection string</article-title>
          ,
          <year>2024</year>
          . URL: https://github.com/kurotych/sqlant.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>The</given-names>
            <surname>Cargo Book</surname>
          </string-name>
          ,
          <year>2025</year>
          . URL: https://doc.rust-lang.org/cargo/.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Mermaid</surname>
          </string-name>
          | Diagramming and charting tool,
          <year>2025</year>
          . URL: https://mermaid.js.org/.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27] hoopoe/scripts/setup.sh at 3ac947c657ec989bc36eea897f1a5061518a8429 · wildonion/hoopoe,
          <year>2024</year>
          . URL: https://github.com/wildonion/hoopoe/blob/3ac947c657ec989bc36eea897f1a5061518a8429/ scripts/setup.sh#
          <fpage>L16</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>