I have just first heard of Unified Modelling Language, or UML (Note I am only an amateur software engineer), which wikipedia states is a "general-purpose modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system."
The UML website seems to claim that UML is quite general, stating:
You can model just about any type of application, running on any type and combination of hardware, operating system, programming language, and network, in UML
You can use UML for business modeling and modeling of other non-software systems too
However, when I look at the 14 types of diagrams in UML, I am not sure but it seems to me that this modelling language was primarily designed for specifying particular aspects of what I would call the "specification". Clearly, UML is not suited for specifying literally 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 should be "easily understandable", and we obviously shouldn't expect this of UML.
However, given that (of course) UML can't be used to model/make precise all aspects of what we want from our system, I am wondering what are and are not the benefits of using UML: After reading some introductions, I am still unsure about what these diagrams can and cannot be usefully used for.
Is UML really as useful for non-object-oriented as it is for object-oriented projects?
What (in practive) aspects of a specification can UML fruitfully capture and what is it less useful for (in practice)?