Type Diagrams (like UML Class Diagrams for OOPs)

I am developing a moderately complicated system in Julia. There will be a lot of modules that can be plugged in and off; various combinations of these modules will result in various algorithms. The modules are mostly type-dispatched functions. So there will be a few Types too that dictate module behaviour. (Some of the types would be singletons.)
Before I start coding I want to draw a huge diagram so that I get my abstractions right. So is there something like UML Class Diagrams for languages like Julia. Or is there a good example of a document that has a bunch of boxes and lines representing, types, methods, etc.

7 Likes

I know this is a late reply and probably not relevant for you anymore, but I think it was a good question that others may have an interest in.

The language you use really should not limit what sort of diagrams you use, because diagrams should be about abstractions and not the details of the language.

Personally I do use UML a lot when writing Julia code. Conceptually you still have hierarchies of types in Julia with properties and abilities associated with them. After all OOP is a paradigm and not a language feature. It is a way of thinking.

Depends on the problem you are solving. I often use data flow diagrams, because I want an overview of how data flows through my program. Personally I find UML is mostly useful for libraries/packages. If you are actually building a whole system/application with users. Then Something like C4 created by Simon Brown would be better. It is higher level than UML and more flexible. It is more detached from language features and thus can easily be applied to something like Julia.

In C4 e.g. you draw boxes corresponding to components, but a component in C4, is not an actual type. It is more like a collection of types and functions which offers a clearly defined service.

It is worth nothing that I’ve never been of the school that thought UML should be made with tools which could generate code. If the UML is so close to your code abstraction that it can generate it, then I don’t think the UML is at a practical level of abstraction. I mostly sketch UML on paper or occasionally use pretty free form tools like OmniGraffle (macOS specific)

7 Likes