Models are powerful, powerful things. They're ubiquitous. They guide our thoughts. But mostly they're intangible and we often don't realize their existence.
Probably my favourite part of my job is collecting intangible models and crafting them into tangible ones. It's also the most difficult part. My second favourite part, also difficult but for different reasons, is metamodeling: creating a model of a model -- or, to put it a bit more usefully, figuring out in general terms what kind of model you need in order to model a given something.
Tonight I'm doing both. The tool of my trade, Metastorm Provision, fills one of the five monitors that surround me. A dozen or so amber boxes, carefully arranged, occupy the canvas. I've called the model "Enterprise Business Classes"; it is in turn part of a model (to me, the "model" is always recursive: models are made of models) called "BC.09 Enterprise Model". The goal of the latter, immodestly, is to elucidate a multibillion dollar corporation. The goal of the former is to present, suggestively, some of the most important types of data said corporation uses.
It's done, at least for now, which is good because I'd really like to pack it in and start my holidays. But there's one more model I have to deliver, and I don't even have a good metamodel for it. Ironically, it's a metadata model.
I thought I was over the hump when I finished the EBC model. I'd figured out how to show a class that has a single conceptual existence but multiple physical (within software) realizations. I'd even managed to show, if not precisely model, synonymous and semi-synonymous classes without using complex notation (the Unified Modeling Language, UML, is wonderful but sometimes adds visual complexity that is best avoided for the sake of communication). But now I'm stuck.
If metadata is data about data, then the metadata for a given class of data is an attribute, right? But not really, semantically, because the metadata doesn't really live within the object.
Even Google isn't helping tonight. Search terms become difficult. I decide to work in reverse: start with metadata repository tools and see what kind of modeling tools they reference.
I'll let you know whether that strategy works out...
