UML started from the premise that software is a model of the world. But in fact what software really is, is a model of a low level program in assembler or binary we want to construct. But the proponents of UML didn't realize that either you must model the real world or you must model software. They are not the same.
"Modeling software" really means writing a program in a high-level programming language.
The failure of UML was it's schizophrenia: Was it made for modeling the world, or for modeling programs?
If it had realized that is the case its creators would have asked: "How can we create a more high-level programming language than already existing ones?
But UML creators were happy to claim that they have a great "modeling language" because then there was no real need to make it executable. The fact that some applications could produce some Java-code from a UML diagram does not mean they could create full running programs from it.
"Modeling software" really means writing a program in a high-level programming language.
The failure of UML was it's schizophrenia: Was it made for modeling the world, or for modeling programs?
If it had realized that is the case its creators would have asked: "How can we create a more high-level programming language than already existing ones?
But UML creators were happy to claim that they have a great "modeling language" because then there was no real need to make it executable. The fact that some applications could produce some Java-code from a UML diagram does not mean they could create full running programs from it.