How general is UML really?


I just found out for the first time about Unified Modeling Language or UML (please note I'm just a hobbyist software engineer) which according to Wikipedia is a "general purpose modeling language in the field of software engineering which is intended to provide a standard way to visualize the design of a system. "

The UML website seems to claim that UML is fairly general, stating:

You can model almost any type of application, running on any type and combination of hardware, operating system, programming language and network, in UML

You can also use UML for business modeling and modeling of other non-software systems.

However, when I look at the 14 types of diagrams in UML, I'm not sure, but it seems to me that this modeling language was first of all designed to specify particular aspects of what I would call the "specification". Clearly, UML is not suitable for literally specifying all aspects of what we need from a system, and it shouldn't be: As an extreme example, a specification language like UML cannot fully capture the specification that the user interface it should be "easily understandable" ", and obviously we shouldn't expect this from UML.

However, since (of course) UML cannot be used to model / render accurate all Aspects of what we want from our system, I wonder what are and what are not the benefits of using UML: After reading some introductions, I'm still not sure what these diagrams can be used for.

  • Is UML really as useful for non-object-oriented projects as it is for object-oriented projects?

  • What aspects (in practice) of a specification can fruitfully capture UML and what is it least useful for (in practice)?