Giter Site home page Giter Site logo

svlad-90 / dma_plantuml Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 1.0 394 KB

Tiny C++ library, which allows your application to build plantuml class diagrams regarding its own entities

License: Apache License 2.0

CMake 1.26% C++ 98.74%
cpp-to-plantuml plantuml uml class-diagrams

dma_plantuml's Introduction

DMA_Plantuml logo

Build linux Build windows Build clang-tidy



Brief

Where am I?

You are on the page of the DMA_Plantuml project - the poor man's C++ to platuml converter

What it does? It allows you to declare a metadata of your classes, which is then used to produce plantuml class diagrams. In other words, with DMA_Plantuml your application starts to contain information regarding its own design.

Motivation:

Firstly, as a developer I want documentation of my source code to be located as near as possible to the code itself. Additionally, I do not want to maintain multiple non-connected diagrams, but rather a one single model.

Secondly, I do not want to use existing tools, which are generating the diagrams during the build. Integration of such tools usually needs a lot of efforts to configure them properly, and, at final point, the result diagram is representing either the whole application ( which is overloaded with classes ), or only a single class ( which is not informative ).

Thirdly, when user states, that there is an issue in some version of the SW, I want to be able to get class diagrams from the SW itself, without referring to a specific base-line in git.

Fourthly, from time to time I want to be able to review and adjust the design of my application. When I'm doing this, I want to be able to instantly see the result of code modification in a diagram, without the need to refer to a thirdparty tools or files.

Fifthly, currently existing plugins for IDE-s, which allow to visulize plantuml comments in the source code are not sufficient, as I want to review not only the diagram of a specific single class, but also connections between multiple classes, interfaces, packages, etc. Current concept supports filtering out the diagram based on certain package. You are able to request creation of diagram for the specified package and its nearest connections.

As of now, this concept is manual, but, for sure, later on it can be used as a core module for a generator, which will produce the metadata macro-definitions on the fly.

General idea of this concept is to allow you to have UML data ( mainly class diagrams ) of your app at your fingertips. From my previous experience, the more overhead you have to create the documentation, the poorer it would be, mainly due to lack of capacity to support it. With this small lib I try to have a proper tool, which I will use at least for my own projects โ˜บ

Where is it actually used?

At least in this project: https://github.com/svlad-90/DLT-Message-Analyzer


How to


Repo size:


How do result diagrams look like?

Full diagram

full_diagram

Package diagram with external dependencies

package_diagram_with_external_dependencies

Package diagram without external dependencies

package_diagram_without_external_dependencies


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.