Red is for tomatoes, green is for peppers, blue is for ... giraffes?
In my last post, I talked about a couple of the ways I commonly use coloured pens on the whiteboard. A similar but subtly different use is for a different colour to signify a wholly different metamodel. There I go, I've used the "m" word for the first time in my blog. Now, I REALLY dislike the term metamodel, but it does seem to be in relatively common use for the concept that I'm referring to. For the uninitiated:
metamodel:
A model that defines the language for expressing a model.
So there's a metamodel for each distinct modeling dialect, stating what are the valid elements in the model, how they can be related and composed etc.
Lets look at an example. Imagine I've drawn out a UI process flow for some internet-facing web application. We have a bunch of web pages and a set of potential inter-page transitions between the structured parts of the application. I drew up all of this in black pen yesterday, working with Zak, our user-experience guy. Today, I'm starting to work with Susan, our infrastructure lead, on which parts of the application will be deployed on which servers in the DMZ. Different servers have different connectivity and Susan is very hot on keeping the minimum possible subset of the application on machines which have back-end connectivity onto our corporate LAN. Together, we add green nodes showing all the data sources that the pages need access to in order to dynamically populate themselves; perhaps a mixture of databases, corporate directories and web-services. None of these things really belong in a dialect of web-page flow - a UI interaction design tool might know what these items were but it would be a stretch - nevertheless, they're useful to Susan and I for our discussion.
Finally, in red, blue and yellow, Susan links the black pages to the green data sources. Data travelling over the public internet (from an external web service) is a yellow link (dotted if it uses SSL). Data retrieved over the internal firewall into the corporate LAN is in red and data flow within the DMZ is in blue.
I'm quite certain that your average UI interaction tool doesn't know about physical networks, but this mixed metamodel, overall big picture is useful to me as an architect and it seems essential to working collaboratively with domain experts like Susan and Zak.
Clearly I could reproduce this diagram in Visio or a similar tool if I think it has lasting value. But endowing it with any machine-readable meaning is relatively painful. Alternatively, I could extract the individual meta-layers into a variety of modeling tools. Typically though, the endpoints of physical network links would be machines or logical machine clusters rather than web pages. I'm losing some value here by having to conform to specific metamodel rules at all times.
It seems to me that it would be very nice to be able to mix and match metamodels and yet keep as much of the semantic content of each as was possible when they are combined.
Would I have to choose to explicitly combine metamodels before I started using them in my design session with Susan? Sounds heavyweight to me. In Visio I just pick another stencil and drag the shapes onto the surface. After the creative rush, in slower time, I can choose to go back to my rather ad-hoc diagram and decide what it really means in modeling terms for a web page from one metamodel to link via a connector from a second metamodel to a data source from a third. Then I could think about reasoning across the combined model and when the model changed, validating against new rules I'd created for the combination. But that's a whole 'nother topic.
Comments
- Anonymous
June 09, 2009
PingBack from http://quickdietsite.info/story.php?id=6010