UML and MermaidJS: A Guide for Effective Software Visualization

Paul Hackenberger
Axel Springer Tech
Published in
5 min readApr 23, 2024

Introduction

In the realm of software development, effective visualization plays a pivotal role in ensuring that everyone is on the same page. This is where Unified Modeling Language (UML) and MermaidJS come into play. Let’s dive into what these tools offer and how they can transform the way you document and design software systems.

Let’s start with a fun story about UML (just 40s excerpt from his speech about Agile is Dead) by Dave Thomas, one of the creators of the Agile Manifesto.

Understanding UML

UML is a standardized modeling language that provides a way to visualize a system’s architectural blueprints. It comprises various diagrams to represent systems structurally and behaviorally.

UML Diagram Types (Learn 14 types of UML diagrams in one article)

Structural Diagrams

These diagrams illustrate the static aspects of the system, representing elements such as classes, objects, and their relationships.

Behavioral Diagrams

In contrast, behavioral diagrams depict the dynamic aspects, showcasing interactions and data flow within the system.

While UML is standardized, it’s essential to be pragmatic. Knowing when and how to apply UML principles to practical scenarios is crucial rather than sticking rigidly to standards.

Pros and Cons to consider when using UML

Personally I think, UML diagrams are best to bring people on the same picture fast: From idea, to understanding to commitment.
But you should be aware of the advantages and disadvantages, depending on your current context.

UML Pros & Cons

Use and Avoid of UML Diagrams

Especially in situations to bring people on the same page quickly, diagrams can help a lot, meanwhile trying to document code with UML or other data that changes fast, should be avoided, even though UML round-trip tools might help even there.

MermaidJS: Bringing Ease to UML Diagrams

MermaidJS is a JavaScript-based diagramming and charting tool that allows for rapid creation of diagrams through simple textual descriptions.

It uses a descriptive language and is very easy to use. In a nutshell you describe the diagram you want to be generated with defining the links between two nodes.

FlowChart with link between Start and Stop

MermaidJS Advantages

  • Standardization: Adheres to a degree of standardization without the rigidity of traditional UML tools.
Supported MermaidJS Diagrams
  • Ease of Use: Simple syntax and real-time rendering make it user-friendly — CLI based image generation possible also
MermaidJS Live Editor
  • Integration: Works seamlessly with GitHub and other markdown-based platforms.
Include diagrams in your Markdown files with Mermaid
  • Customization: Offers the ability to tailor diagrams with colors, shapes, and interactions.
  • Chronology of changes: Since MermaidJS syntax is descriptive language, you can see any code changes of it in the GitHub history and put the diagrams under Pull Request review easily as well!

Practical Application of UML and MermaidJS

When it comes to using UML, there’s a time and place for everything. For quick drafts and conceptualization, UML diagrams are invaluable. They’re also excellent for providing an overarching view of a project. However, when it comes to documenting code, consider the maintenance overhead and whether a diagram will become outdated quickly.

Tips for Using MermaidJS Effectively

  • Use MermaidJS’s live editor for immediate feedback on your diagrams.
  • Explore the extensive documentation available on GitHub for advanced features and tips.
  • Understand that while auto-layout can be helpful, you may need to adjust your diagrams manually for optimal visualization.

Conclusion

MermaidJS simplifies the process of creating UML diagrams, making it accessible for developers and teams to quickly get up to speed with complex system designs. By combining the formalism of UML with the ease of MermaidJS, you can streamline your software documentation and design processes efficiently.

References

By embracing these tools, you can significantly improve the clarity and quality of your software design documentation, making it easier for teams to collaborate and understand complex systems.

Disclaimer

This article was created with the assistance of ChatGPT 4.0, and I would love to share how it was done:

  1. Create presentation
  2. Interactive presentation with live recording and transcription with MS Teams
  3. Feed the transcript into ChatGPT, and instruct ChatGPT to create a technical Medium.com article
  4. Re-format a bit
  5. Add images from the presentation

I really like the result, since the transcript catches everything I said, PLUS all questions and hints from the audience! A little refactoring of the article was still required, but saved a lot of work!

I am pretty sure using Gemini, and explicitly referencing the presented images of the presentation, will result in even a better result!

--

--