Can you imagine anything more exciting than reading a technical specification paper of several hundered pages?
Well, I can imagine a lot of things that are more fun, even if you are a geek like me. In order to stay motivated through my exploration of these specs, I'll publish my understanding as blog posts.
For uml we have two spec documents: The Infrastructure (external link) and the Superstructure (external link). The infrastructure is a bundle of packages that cover the core concepts. The superstructure is build on top of it and describes the uml abjects we find on the uml diagrams.
Of course we can't read them in a linear fashion like we would read a novel. There is plenty of cross-references, to understand some abstract concepts we need to refer to more concret implementations, the same classes are even defined in different sections of the documents. As far as I've reading it, I was working a lot with the search functions to collect that information. For the readers convenience I'll refer to the chapters I found useful to grasp a concept.
In addition I'll try to discuss my uml-understanding from a LabVIEW-perspective. But I'm afraid that at least in the beginning, we will be on a terrain very unfamiliar to us LabVIEW developers.
From the very beginning we will travel through a class hierarchy based on multiple-inheritance (a class can have more than one superclass). Also keep in mind that in most languages only support a by-ref implementation of objects and lack LVOOP-native by-val objects, and so does uml. And there will be several OOP concepts that are yet alien to LVOOP, such as abstract classes, multiple-inheritance and interfaces. Furthermore we will discover some mathematics, mainly from set theory (such as union).
As said, I'm not an uml guru, but just learning. Your comments, questions and corrections are always welcome.
Thanks for doing this!
A couple comments:
When I create a class on a class diagram UML doesn't tell me whether it is by-reference or by-value. I just have attributes and operations. In my experience using UML for modeling (not for code generation) this hasn't been an issue.
"And there will be several OOP concepts that are yet alien to LVOOP, such as abstract classes, multiple-inheritance and interfaces."
I would temper this a bit. UML profiles support multiple or single inheritance (for instance a Java profile only supports single inheritance). Moreover, while LabVIEW native classes do not directly support abstract classes and interfaces, these are very valuable concepts in Object-Oriented programming and I think it is essential for success to know how to implement their equivalents (or near-equivalents) in LabVIEW.