\subsection*{GraphViz}
Graphviz \cite{graphviz_article} is open source graph visualization software that provides graph visualization for tools and web sites in domains such as software engineering, networking, databases, knowledge representation, and bio-informatics. Graph visualization is a technique for representing complex data structures using visual representations of nodes and edges. In this approach, nodes represent entities or objects, while edges represent the relationships or connections between them. 

In the current applications context, a multitude of applications utilize Graphviz to create graph layouts that assist users in comprehending domain information and performing visual tasks more effectively. This is due to its layout programs which take descriptions of graphs in a simple text language, called DOT language, and make diagrams in useful formats, such as images and SVG for web pages, PDF or Postscript for inclusion in other documents, or display in an interactive graph browser. Graphviz has many useful features for diagrams, such as options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes.

In particular the DOT language, that stands for ``Graph Description Language", is a simple text-based language used for describing graphs and other network structures and it was originally developed as part of the Graphviz software package. In DOT, graphs are described using a set of statements that define nodes, edges, and other graph properties. For example, a node might be defined using a statement like ``node1 [label=``Node 1"]", while an edge might be defined using a statement like ``node1 -\textgreater  node2".

An interesting example of the use of GraphViz software in the field of cybersecurity is shown below (figure \ref{fig:Graphviz representation}) in the representation of the STIX \cite{STIX_paper} language. The STIX initiative is a collaborative and community-driven effort aimed at defining and developing a structured language for representing cyber threat information. The STIX Language is designed to capture the complete range of potential cybersecurity threats, and emphasizes expressiveness, flexibility, extensibility, and automatability. The language is also designed to be as human-readable as possible, in order to facilitate its widespread adoption and effective use in cybersecurity contexts.

\begin{figure}
     \centering
     \begin{subfigure}[h]{0.3\textwidth}
         \centering
         \includegraphics[width=6cm]{Figures/chapter4/Graphviz/Attack Pattern.png}
         \caption{figure}{Attack Pattern representation}
         \label{fig:Attack Pattern graphviz}
     \end{subfigure}
     \hfill
     \begin{subfigure}[h]{0.4\textwidth}
         \centering
         \includegraphics[width=6cm]{Figures/chapter4/Graphviz/Campaign.png}
         \caption{Campaign representation}
         \label{fig:Campaign graphviz}
     \end{subfigure}
     \hfill
        \caption{Examples of STIX model with GraphViz representation}
        \label{fig:Graphviz representation}
\end{figure}

Given its characteristics, it would be appropriate to categorize GraphViz as a generic tool which, thanks to its versatility, is able to make a contribution in cybersecurity contexts. The most positive feature probably lies in being the technical basis of several tools developed for security visualization. At the same time, however, this generality makes it limited to the use that is made of it and to the information that is to be represented, analyzed and transmitted. Other technical limitations that could be encountered using the tool are the lack of support for GUI editors, which in some environments could disadvantage its use and the maximum number of nodes and edges at 200 and 400 respectively in the DOT language version without extensions. which in cases of large-scale representations would in some cases result in a non-total representation. Complete documentation and various installation packages are available online \cite{graphviz_site}.