I always learn more from failure than from success. In that spirit, I'll share a (small) failure with you.
In my last post (Working in the dark), I mentioned that I would be discussing the
metamodel [domain model] underlying all the things we do in operating Microsoft IT. In effect, I'm following the precepts of Domain Driven Design, and applying those concepts to the act of software development in an IT setting, from planning through requirements, development through deployment, operations through retirement. I don't know if I will end up with a federated domain model or a single unified model. That depends on a lot of things. In the spirit of agile: I forge ahead.
One of the core principles of my effort, first and foremost, is "Leverage before build" which is a fancy way of saying "don't invent what already exists." That implies that I will look to the [domain] models that exist. One of them is the Common Information Model (CIM) from the Distributed Management Task Force.
To leverage the work of the DMTF, I want to start with their highest level information model (conceptual level). From the concepts, I can understand the classes. I've used this process before, and it works. To the best of my knowledge, this is the process used by DDD.
I opened the CIM from DMTF expecting to find an Information model. After all, the name of their effort was "Common Information Model." And I found out that my nice little plan was not going to work... because the DMTF didn't publish an information model. They published a detailed class model.
(Caveat: I'm no expert on DMTF deliverables. I spent three hours perusing their site, reading docs, and viewing models. If there is a domain model there, I didn't see it. If someone does know of one, please send me a link.)
An example, from the DMTF CIM system model, looks like this (click to see the full picture):
Now for my controversial statement: This is not a good communication mechanism for information modeling, especially when sharing with people who are not already part of your project.
I love Class models. They are great! Unfortunately, they are not a domain model that business people can use. It is not a model that I, as a potential adopter of DMTF models, can use. I need the business concepts first, to make sure I can align and/or adopt.
n information [domain] model under the DMTF class model. That much is discernable. But it is not explicit. It is not exposed. Both class models and information models should exist. But if I have to choose one, I'll start with the information model.
(Caveat: I'm aware of their CIM metamodel. It is a model used to describe the CIM meta-elements, not a conceptual model that serves as the foundation for the CIM object model).
So, while I'd like to consume the DMTF work, I'm afraid that the published models of the CIM are not appropriately modeled for me to consume and leverage them. I could re-model them in my own UML environment... but what value would I gain? I'm not sure.