In my previous post on designing a model, I discussed the need to view a problem space broadly and via specific scenarios. Since a model is supposed to serve as a conceptualization and abstraction of a problem space, we have to be careful not to be too broad, too narrow, or to prejudice our design by bringing preconceived notions to the solution. Our perceptions affect all our thoughts and conclusions, especially when we think about the physical.
What do I mean? One example is our mental image of a computer. What usually comes to mind is a laptop, desktop or server system with monitor, keyboard, storage, etc. This is a very physical embodiment of a computer - and certainly somewhere there has to be some physical compute capabilities. But, our model perhaps should support a swarm of microbots (as in the Michael Creighton story, "Prey") as a computer, or allow a virtualized system hosted on a compute-grid to be instantiated as a computer.
Going back to the book, "General Systems Thinking", Gerald Weinberg addresses this issue. “One of the most deeply buried metaphors of science is the concept of a ’thing’ or ’part’ that can be separated cleanly from other things or parts. The metaphor is so deep that we seldom know when we are using it. … These ’things’ or ’parts’ are the possessors of ’properties’ or ’qualities’ that they carry around with them as a box carries matches or a hog carries fat. These properties can be isolated from other properties by isolating the ’thing’ from other ’things’. … Our use of the ’part’ or ’thing’ metaphor is closely allied to our experience of physical space, and particularly to our experience of ’boundaries’.”
Weinberg’s text is quite interesting and I want to analyze it a bit deeper (especially since a box holding matches is a very different thing than a hog’s fat :-)). Matches can be removed from a match box, without affecting the box. A match can be put into another box, without affecting the match. Clearly the box does not consist of what it holds – it is simply a container. On the other hand, fat can’t be removed from a hog without affecting the animal, nor can it be moved to another animal. In this case, the containment relationship is quite a big stronger (actually, it is a composition relationship). So what do we do with the fat? Depending on the problem space, all that we may need to know is the amount of fat on the hog (a property), versus the fat as an individual entity (a relationship). Or, maybe at different times, we need the ability to have both - where the amount of fat is derived from the individual "fat" entities composed into the hog. Wow, you probably never thought that hogs could be so complex. :-)
And, if something is related, can the data simply be embedded within the containing entity? Possibly, but be careful. Entities are typically embedded within other entities for expediency reasons (ease of access or storage) or because something is perceived as only a “part” of something else and never analyzed on its own. Take care that these reasons are not used to “overly simplify” a more flexible model design. Unfortunately, expediency reasons are usually not valid for more than one or two releases, and composition/decomposition analysis may lead to false conclusions.
Again, Gerald Weinberg pulls these ideas apart in his book. He says: “An example of a composition error is this: I stand on a bridge and spit in the river. Seeing that it makes no noticeable difference in the purity of the water, I go to the polls and vote against the municipal bonds for a new water-treatment plant. An example of a decompositional error, on the other hand, would be this: I stand on the bridge and notice that the river is clean, so I conclude that nobody spits in it. To warn us from these two errors, we have two laws. The Composition Law, which goes back at least to Aristotle, says: The whole is more than the sum of its parts. The Decomposition Law, on the other hand, says: The part is more than a fraction of the whole. … Why should we want to remember these? … we shall not find them very helpful at making exact predictions. … But, … general systems laws can help us avoid the grand fallacy on the way to an exact prediction.”
Well, enough deep thinking and philosophy for today! Back to work.
Andrea