Ho creato diagrammi trascinando e rilasciando strumenti insieme. Sembravano andare bene, ma non restavano mai sincronizzati con il codice. Ogni aggiornamento del codice mi costringeva a sistemare i visuali. Poi ho capito—il problema principale era che i miei diagrammi non appartenevano al codice stesso. Non potevo metterli sotto controllo versione né aggiornarli automaticamente.

Ho iniziato a cercare un metodo migliore. Questa ricerca mi ha fatto conoscere i migliori strumenti per generare diagrammi dal codice. Questi strumenti funzionano come la scrittura del codice. Restano ben organizzati, facili da tracciare e semplici da riutilizzare. Potevo salvarli su Git, aggiornarli tramite pipeline CI/CD e condividerli senza dover cliccare ovunque.

I vecchi programmi di diagrammazione come Visio o Lucidchart sembravano ingombranti e antiquati. Non crescono bene con i progetti e difficilmente riflettono il funzionamento reale del sistema.

Dopo aver provato i migliori strumenti per la diagrammazione basata sul codice, ne ho scelti cinque che si sono distinti. Le mie scelte si sono concentrate su quanto fosse semplice la loro sintassi è, il funzionalità di integrazione che offrono, e come coinvolti i loro comunità di utenti sono. Per creare facilmente diagrammi con il codice, dovresti provare questi strumenti.

In questo articolo
  1. Top 5 strumenti
  2. Tabella di confronto
  3. Suggerimenti professionali
  4. Limitazioni del Diagramming as Code e perché considerare le opzioni GUI?
  5. La mia conclusione

Top 5 strumenti

PlantUML

PlantUML è uno strumento semplice e open-source che crea diagrammi da un linguaggio di scripting di base. Non si basa su strumenti GUI e funziona su browser, IDE e pipeline. Puoi modificare, visualizzare e salvare diagrammi senza dover installare software. La sua forte compatibilità con Git e la capacità di gestire vari tipi di diagrammi all'interno del tuo editor di codice lo rendono unico.

Esempio
@startuml

class User {
  +String name
  +String email
  +login()
  +logout()
}

class Admin {
  +manageUsers()
  +accessReports()
}

class Guest {
  +browseContent()
}

User <|-- Admin
User <|-- Guest

@enduml
plantuml-examples
Vantaggi
  • Supporta oltre 10 tipi di diagrammi: Disegna diagrammi di classe, di stato, di sequenza, di distribuzione o di attività tutto in un unico posto.
  • Perfetto per il controllo delle versioni: utilizza testo semplice per i diagrammi. Questo rende facile archiviare, confrontare e revisionare le modifiche in Git.
  • Funziona con pipeline CI/CD: si integra con GitHub Actions o pipeline simili. Questo aiuta a creare diagrammi auto-generati dopo ogni commit.
  • Editor basato sul web disponibile: nessuna installazione necessaria. Puoi accedere direttamente all'editor online per creare o condividere diagrammi.
Contro
  • Richiede tempo per imparare: comprendere la sintassi personalizzata può essere difficile quando si realizzano diagrammi dettagliati.
  • L'aspetto predefinito sembra datato: i temi di base possono risultare noiosi a meno che tu non dedichi tempo a modificarli.
Il mio verdetto

PlantUML mi ricorda un coltellino svizzero. Offre versatilità e strumenti utili in un unico pacchetto. Lo uso quando voglio creare diversi tipi di diagrammi insieme. Ma la sintassi complessa spesso causa problemi. Mi è capitato di dover correggere piccoli errori che rovinano i diagrammi. Usarlo non è sempre facile.

Mermaidchart.com

Mermaidchart.com funziona alla grande per creare diagrammi ordinati e organizzati da una sintassi simile a Markdown. Permette agli utenti di creare flowchart, diagrammi di Gantt e diagrammi di sequenza con l’anteprima online. Puoi modificare i diagrammi in tempo reale, raggrupparli in progetti e salvarli come file PNG, SVG o PDF. Tutto avviene direttamente nel tuo browser.

Esempio
flowchart TD
  A[User Login] --> B{Is Email Valid?}
  B -- Yes --> C[Check Password]
  B -- No --> D[Show Error Message]
  C --> E{Password Match?}
  E -- Yes --> F[Redirect to Dashboard]
  E -- No --> G[Show Error Message]
mermaid-examples
Vantaggi
  • Nessuna configurazione richiesta in GitHub/GitBook: puoi aggiungere blocchi di codice Mermaid nei file markdown senza bisogno di plugin extra.
  • Anteprima live con VS Code: le estensioni supportate ti permettono di vedere gli aggiornamenti dei diagrammi mentre modifichi file .md o .mmd.
  • Funziona nel tuo browser: puoi progettare e gestire più diagrammi online senza installare nulla.
Contro
  • Difficoltà nella gestione della logica annidata: i diagrammi dettagliati diventano confusi e difficili da gestire.
  • Difficoltà nel controllo del layout: posizionare i nodi e gestire gli spazi può diventare caotico in flussi dettagliati o stratificati.
  • Poche opzioni di stile disponibili: cambiare font, colori o frecce richiede modifiche CSS esterne allo strumento.
Il mio verdetto

Mermaidchart.com funziona benissimo come strumento di riferimento per includere semplici diagrammi nei file markdown. Lo utilizzo ogni volta che ho bisogno di visualizzazioni facili da leggere. È rapido da usare e mantiene le cose semplici per attività di base. Tuttavia, quando si tratta di gestire workflow complessi o diagrammi di sistemi più grandi, mostra i suoi limiti.

Graphviz

Graphviz è ottimo per creare grafici algoritmici e gerarchici con il linguaggio DOT. Si basa su motori di layout precisi per posizionare i nodi in strutture come alberi, flowchart o mappe decisionali. Gli sviluppatori possono usarlo per ottenere visualizzazioni chiare e precise. Queste possono essere utilizzate per articoli di ricerca, simulazioni o per mostrare strutture dati.

Esempio
digraph DecisionTree {
  rankdir=TB;
  node [shape=box, style=filled, color=lightgray];

  Start -> "Check Email Format";
  "Check Email Format" -> "Invalid Email" [label="No"];
  "Check Email Format" -> "Check Password" [label="Yes"];
  "Check Password" -> "Login Success" [label="Match"];
  "Check Password" -> "Wrong Password" [label="Mismatch"];
}
graphviz-examples
Vantaggi
  • Strumenti di layout a livello professionale: include motori come DOT, NEATO e simili. Questo aiuta a creare layout puliti e ben organizzati.
  • Accessibile tramite Python/Java/Rust: può essere integrato in script o applicazioni personalizzate utilizzando diversi linguaggi.
  • Output accurato e dettagliato: utile per studiare concetti di grafi, progettare compilatori e mappare i flussi logici.
Contro
  • Capire i problemi dei file DOT è difficile: tracciare errori di sintassi o problemi di layout risulta complicato. Diventa difficile senza nulla di visivo che ti guidi.
  • Difficile da imparare e utilizzare: anche se il linguaggio sembra semplice, la sua rigidità rende difficile correggere gli errori.
  • Nessun aggiornamento in tempo reale: bisogna eseguire il rendering ogni volta per controllare le modifiche. Questo rende gli aggiornamenti più lenti di quanto dovrebbero essere.
Il mio verdetto

Graphviz funziona bene quando hai bisogno di grafi dettagliati e organizzati. Mi affido a questo strumento per creare visualizzazioni strutturate, spesso per progetti accademici o compiti incentrati sul backend. Tuttavia, scrivere un file DOT richiede impegno e può diventare fastidioso da fare il debug. Se stai realizzando piccoli diagrammi o progetti approssimativi, sembra uno sforzo maggiore del valore restituito.

Diagrams

Diagrams funziona al meglio per creare visualizzazioni di architetture cloud tramite script Python. Ti permette di utilizzare icone da AWS, GCP, Azure e Kubernetes. Questo facilita la descrizione dell'infrastruttura tramite codice. Lo strumento genera diagrammi di sistema chiari e dettagliati, utili per pianificare configurazioni cloud e supportare attività DevOps.

Esempio
# diagram.py
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb")
$ python diagram.py
diagrams-examples
Vantaggi
  • Compatibile con Python e icone cloud: scrivi codice Python per visualizzare servizi cloud usando icone dall’aspetto autentico. Le ottieni da AWS, GCP o Azure.
  • Facile da tenere traccia delle modifiche: archivia i diagrammi come script Python. Questo si adatta ai sistemi di controllo versione come Git.
  • Diagrammi coerenti e riutilizzabili: esegui lo stesso script per creare visualizzazioni corrispondenti in qualsiasi team o piattaforma.
  • Allineamento automatico: la struttura del diagramma regola i nodi. Non devi disporre tu stesso gli elementi.
Contro
  • Funziona con tipi di nodi specifici: include componenti basati su cloud. Non puoi creare forme o oggetti personalizzati.
  • Manca il controllo sul layout visivo: il layout è generato e non puoi regolare la posizione dei nodi.
Il mio verdetto

I diagrammi funzionano come un’arma segreta per gli ingegneri cloud. Uso Diagrams per creare visualizzazioni dell’architettura cloud. Scrivere tutto in Python è naturale dato che già programmo. Mi piace poter versionare il mio lavoro e creare diagrammi di nuovo quando voglio. Non è adatto per realizzare diagrammi generici.

Structurizr

Structurizr funziona bene per creare diagrammi di architettura C4 a livello aziendale utilizzando il suo DSL. Usa un unico modello per fornire molteplici viste, tra cui System Context, Container, Component e Deployment. I team possono usare l’editor basato su browser che supporta il versioning e organizza gli spazi di lavoro. Questo rende la gestione più semplice per gruppi più grandi.

Esempio
workspace {

    model {
        user = person "User" {
            description "A user of the system."
        }

        softwareSystem = softwareSystem "Example System" {
            description "An example software system."

            webApp = container "Web Application" {
                description "Allows users to interact with the system via a browser."
                technology "Java + Spring Boot"
            }

            database = container "Database" {
                description "Stores user data and system info."
                technology "PostgreSQL"
            }

            user -> webApp "Uses"
            webApp -> database "Reads from and writes to"
        }
    }

    views {
        systemContext softwareSystem {
            include user
            autolayout lr
        }

        container softwareSystem {
            include user
            autolayout lr
        }

        theme default
    }

}
structurizr-examples
Vantaggi
  • Modello C4: puoi lavorare con tutti e quattro i livelli dei diagrammi C4 senza bisogno di strumenti o formati aggiuntivi.
  • Opzioni di esportazione: crea diagrammi in un formato DSL di facile lettura e salvali in formati strutturati come JSON o YAML.
  • Genera diagrammi direttamente dal codice: collega il CLI o il server DSL di Structurizr per creare diagrammi dai tuoi file di codice.
Contro
  • Costoso per piccoli gruppi: quando i piani a pagamento non vengono utilizzati su larga scala, i costi crescono rapidamente.
  • Richiede conoscenza del Modello C4: i nuovi utenti devono comprendere il modello C4 per capire i diagrammi.
Il mio verdetto

Structurizr sembra fissare standard elevati per gli architetti professionisti. Quando devo documentare un sistema complesso e mantenerlo gestibile nel tempo, fornisce tutto ciò che potrei desiderare. Il suo DSL facilita la gestione delle versioni e il supporto C4 è il migliore che abbia mai visto. Tuttavia, non è né economico né ideale per i principianti.

Tabella di confronto

Strumento Punti di forza Curva di apprendimento Qualità dell’output
PlantUML Versatilità Moderato 4/5
Mermaid Integrazione nei documenti Facile 3/5
Graphviz Layout algoritmici Difficile 5/5
Diagrams Diagrammi cloud Moderato 4/5
Structurizr Scalabilità aziendale Da moderato a difficile 5/5

Raccomandazioni:

Ho provato tutti e cinque gli strumenti nei flussi di lavoro reali e ho iniziato a vedere dove ciascuno si adatta meglio. Quando lavoro da solo, preferisco usare Mermaid per creare documentazione rapida e PlantUML per realizzare diagrammi dettagliati. Mi aiuta a rimanere efficiente e flessibile.

Per i progetti basati su cloud, Diagrams mi ha fatto risparmiare moltissimo tempo. Scrivere infrastrutture in Python con Diagrams è naturale. Nei grandi progetti di team, spicca Structurizr. Offre modellazione C4 e spazi di lavoro condivisi che funzionano bene per pianificare progetti di sistemi a livello aziendale.

Suggerimenti professionali

Ecco cosa ho imparato mentre scoprivo come creare UML dal codice. Questi consigli possono aiutarti a semplificare il lavoro, evitare le frustrazioni comuni e sfruttare al meglio qualsiasi strumento tu scelga.

  • Usa l'automazione per i diagrammi: Evita di perdere tempo ad aggiornare i diagrammi manualmente. Configura PlantUML con GitHub Actions per generare i diagrammi ogni volta che carichi aggiornamenti al tuo codice. Così tutto rimane aggiornato e risparmi tempo.
  • Sperimenta con stili personalizzati: I grafici standard potrebbero sembrare monotoni. Prova a modificare Mermaid utilizzando CSS personalizzato o cambiando le opzioni di Graphviz come font, spaziatura o forme dei nodi. Piccole modifiche possono fare una grande differenza e rendere i diagrammi più professionali.
  • Prova un approccio misto: Comincio con Mermaid per abbozzare rapidamente le idee di base. Quando i diagrammi diventano più complessi, passo a Graphviz per avere un controllo migliore sul layout. Puoi provare questo metodo per organizzare il lavoro più velocemente e migliorare la chiarezza.
  • Salva le versioni dei tuoi diagrammi: Gestisco i miei diagrammi come se fossero codice. Archiviarli su Git mi permette di monitorare i progressi e collaborare meglio con altri. Questa abitudine renderà le cose più semplici in futuro.

Limitazioni del Diagramming as Code e perché considerare le opzioni GUI?

Diagrammare come codice è positivo, ma tutt’altro che perfetto. Ecco alcuni svantaggi della diagrammazione come codice:

  • Curva di apprendimento ripida: Non puoi semplicemente iniziare a creare diagrammi subito. Strumenti come PlantUML o DOT richiedono di imparare la loro sintassi specifica. Anche un piccolo errore nel codice può compromettere l’intero diagramma.
  • Poco controllo sul design: Vuoi spostare una casella a sinistra o modificare l’aspetto di una freccia? È difficile da fare. Lo strumento ti dà ciò che vuole, e modificare layout o stili richiede lavoro extra, o a volte non è proprio possibile.
  • Casi d’uso limitati: Questi strumenti funzionano meglio quando si creano diagrammi organizzati e pianificati. Tuttavia, non sono adatti quando hai bisogno di abbozzare rapidamente delle idee o pensare durante una sessione di brainstorming. Richiedono più sforzo nello scrivere che nel concentrarsi sulle idee.

Punti di forza degli strumenti GUI

edrawmax-online

Creare diagrammi con il codice può sembrare inizialmente un metodo intelligente, ma diventa frustrante quando sono necessarie modifiche rapide. Scrivere codice riga per riga non è sempre la scelta migliore per ogni idea. Ci sono momenti in cui il trascinamento e rilascio risulta più veloce. Strumenti con interfacce grafiche, come EdrawMax, aiutano proprio in quei momenti.

EdrawMax è uno strumento tutto-in-uno per la creazione di diagrammi costruito per velocità e semplicità. Non richiede competenze di programmazione, ma offre comunque funzioni potenti, simili agli strumenti di diagrammazione più strutturati. Puoi creare flowchart, organigrammi, diagrammi ER e altro. L'interfaccia è pulita e le opzioni sono abbastanza flessibili sia per i principianti che per gli utenti avanzati.

Perché ti piacerà

  • Modifica senza codice:Puoi creare e organizzare diagrammi semplicemente trascinando e rilasciando gli elementi.
  • Design con intelligenza artificiale:Il sistema offre idee di layout intelligenti, allinea gli elementi e formatta tutto con un solo clic.
  • Esportazione in più formati:Puoi salvare i tuoi diagrammi come PNG, SVG, PDF, HTML e file modificabili per poterli condividere.

Come scegliere?

Quando creo documentazione tecnica, inizio sempre con un diagramma come codice. Questo mantiene tutto sotto controllo delle versioni e garantisce coerenza. Successivamente, passo a uno strumento GUI per migliorare l'aspetto visivo.

Ma per lavori che svolgo per clienti o per presentazioni creative, non mi preoccupo del codice. Invece, vado direttamente su uno strumento GUI come EdrawMax. È più veloce, produce risultati più puliti e rende più facile implementare i feedback.

La mia conclusione

La maggior parte dei software eccelle in un compito specifico: o ti aiutano a creare diagrammi come se stessi programmando, oppure ti permettono di trascinare le forme nella posizione desiderata. Tuttavia, i progetti reali richiedono spesso entrambe le capacità. Dopo aver testato numerose opzioni, questi cinque strumenti principali basati sul codice si sono distinti. Offrono affidabilità, efficacia e utilità nei progetti reali.

I migliori strumenti per creare diagrammi dal codice fanno molto più che risparmiare tempo. Mantengono la coerenza, facilitano la condivisione e semplificano gli aggiornamenti. Strumenti come PlantUML, Mermaid e Graphviz aggiungono struttura e controllo. I diagrammi rendono più semplici le visualizzazioni cloud per gli utenti Python. Structurizr affronta in profondità i grandi sistemi aziendali.

Tuttavia, non è sempre necessario iniziare programmando. Per modifiche veloci o visualizzazioni più curate per i clienti, EdrawMax si distingue come un'opzione intelligente quando vuoi risultati rapidi senza compromettere la qualità.

Hai appreso cosa funziona, in quali situazioni e per quali motivi. Ora tocca a te: scegli uno strumento e inizia a creare diagrammi più intelligenti. Scegline uno e prova!

edrawmax logoEdrawMax Desktop
Crea oltre 210 tipi di diagrammi
Windows, Mac, Linux (funziona in tutti gli ambienti)
Risorse e modelli integrati professionali
Software on-premise per le aziende
Sicurezza dei dati a livello aziendale
edrawmax logoEdrawMax Online
Crea oltre 280 tipi di diagrammi online
Accedi ai diagrammi ovunque e in qualsiasi momento
Comunità di modelli
Gestione e collaborazione del team
Integrazione con Personal Cloud e Dropbox

advertise