UML - Unified Modelling Language

Does anybody use UML when developing an app? I don’t know much about it but it seems a useful way to plan out all components and relationships of a site before you get down to coding.

Or is there a similar system people use? I imagine with apps at a certain level of complexity it will pay off in the long run in terms of development time and app efficiency.

Sometimes. Sequence diagrams in particular can be useful.

Seconding sequence diagrams, they are often v useful as they’re very quick and easy to sketch out and very easy to understand. Otherwise, YMMV, but generally no, not useful. You’re more than likely adding complexity, rather than reducing it.

There will be situations where it is useful. I guess you really want the codified high level view that UML gives if it describes how a system works if that system is something that will kill people if it goes wrong. Otherwise, probably not.

First problem here is a map/territory one. For a complex app, using UML means you now have a visual language that people need to understand as well as a programming language. The visual language, to accurately model the structure of the application, has to be quite close to the programming language, otherwise it can’t model it well. But the closer it is, the less point there is to it: you can’t actually test it or do anything useful with it, so why not just use the programming language.

Note it’s not really built primarily for individuals, it’s there for industrial teams. If you’re just using it as a tool yourself, then fair enough, but in teams, using it properly means learning and applying the rules of UML, at which point the above issue comes into play.

This is the second major issue: you don’t generally know in advance everything about an app. What you’re describing is a waterfall process, where you design everything, then move onto the building stage. This generally doesn’t work in practice, and waterfall processes make it super difficult to fix problems (this is why Agile exists, as a reaction to that). This is not to say this approach doesn’t work for everything, just that w/r/t software development it can often lead to serious quality issues.

I thought about using it. Its alot easier to just draw my idea out though.

Not in scale of freecodecamp tasks. You don’t need UML to solve any of FCC projects.
In bigger companies, playing with bigger toys - maybe. Not here.
Don’t use UML. It will slow you down.

howdy @justinh77,

Good discussion, funny you should be asking about UML, i just finished watching MPJ on YouTube were he does a talk about this. You should check it out .

MPJ makes the conclusion that UML is okay as a way to help transfer ideas between people, but it should be used at a high level, rather than attempting to describe every aspect of a program. He goes on to say that the only way to describe software in high detail, is with… code . Otherwise the most efficient way to do knowledge transfer for the purpose of requirements is with a whiteboard and or some sketches.

I largely agree with MPJ on this. Having learned and loved UML at uni (2 courses one for software development and another for business analysis), then attempting to use it to write specifications for teams - i’ve found that the UML for the most part should be used only in very specific circumstances, particularly when regular user stories and sketches just are’nt getting the idea across.

Another reason i have largely abandoned UML is that no one really (a) understands them, (b) bothers to follow them, © actual software implementation is simpler/harder than first described. And lastly, they are high maintenance for little return as they quickly become outdated as the product is fleshed out.

In the end, I think most UML diagrams are more trouble than they are worth and i think UML is a product of ‘classical’ waterfall software design thinking.

When i do use UML, i find Use Case diagrams, and Activity Diagrams to be most helpful; but i use them sparingly. The other diagram i use is called a Domain Model which resembles a Class diagram, but its purpose is to build a ‘glossary’.