I would like to start describing the software architecture of my Django web site. I see on internet that the standard practice is to use UML (Unified Modelling Language). Could you please advise me what kind of a tool is suitable for Django, something similar to UML but working on MACOS? What is the common practice of Software Architecture description and common software diagramming tools?
I would not describe this as a “standard practice”. UML is a defined standard for a set of diagrams to convey information, but I’ve never seen an organization use more than about 20% of it - and at that, informally.
My “discomfort” with “UML as-defined” is that I think there’s a mismatch between the degree of formalization defined for those diagrams, and the target audience for them.
When you’re creating diagrams, the two questions you need to answer first are: “Who is the audience for these diagrams?” and “What is the information that they need to understand?” My experience has been that the C-suite of management has different concerns and interests than line-of-business managers, and have different interests than technical staff. Your diagrams need to be catered to those reading them.
I do suggest becoming generally familiar with the diagrams - you are likely to find a couple that can suitably express the information you wish to convey.
I caution against trying to get too detailed or precise with those diagrams. The only real documentation for your system is the code. The more detail embodied within your diagrams, the more work there is to ensure that those diagrams match what’s actually happening.
I tend to focus more on conceptual diagrams that serve to highlight particular aspects of a system. For example, I frequently use the diagram I posted at problem with channel_name outside from consumer - #13 by KenWhitesell . Notice that there really aren’t many details there - there are a lot of specifics omitted. But it does highlight the key components of a deployment and how those components communicate. (You might also want to look at the diagrams I posted at Testing Channels Worker processes - #7 by KenWhitesell).
I use Dia for creating my diagrams. (I detest Visio - I can never seem to get it to do what I want without a lot of pain.) But then, I’m also not concerned about specifically creating “UML-compliant” pictures.
For “internal” / “technical” diagrams, just to get some ideas of how the pieces fit together, automated tools are great. I’m not aware of a lot available in that area, but I have played around a little with the graph_models command in django_extensions. (See I'm looking for a class hierarchy diagram of classes used by Django)