pdf: 600KB - Potsdam Institute for Climate Impact Research
pdf: 600KB - Potsdam Institute for Climate Impact Research
pdf: 600KB - Potsdam Institute for Climate Impact Research
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
13<br />
into the correct order. In some cases, however, such models could not be implemented in a componentbased<br />
framework in which each submodel corresponds to one component: it is not possible to carve the<br />
model up into independent 'black box' submodels.<br />
Example: consider a model containing a farmer component and a crop component, with crop<br />
harvesting being influenced by farmer labour input and influencing farmer revenue. The crop<br />
component cannot be called first, because it depends on labour input; but the farmer component<br />
cannot be called first, because it depends on crop harvesting.<br />
The only way around this is to split the 'rate' calculations in the component into several steps. However,<br />
the programmer needs to know the precise pattern of influence links in the external components in order<br />
to know how to do this. This violates a key principle of the component-based approach, that<br />
components can be programmed without regard to the other modules they may be combined with.<br />
This may sound an esoteric criticism, but in fact we have found that a number of the submodels in the<br />
FLORES model [see URLs] have such influence linkages, leading to the view that this is a practical as<br />
well as a theoretical criticism.<br />
Opacity and rigidity of the component interface<br />
Paradoxically, the biggest weakness of the component-based approach is put <strong>for</strong>ward by its proponents<br />
as its major strength. Components are delivered as black boxes: indeed, in COM they are provided in<br />
compiled binary <strong>for</strong>m. The only way in which the outside world (other components or input/output<br />
tools) can communicate with them is through a fixed, pre-defined interface. This is claimed as a virtue<br />
because all that the user of the module needs to know is the interfacing: how the module does its job is<br />
irrelevant.<br />
Now, this approach is fine in the software engineering world. If I want to use a text window component<br />
in a program, then it's great if all I need to know is how to call it. But models are designs - not just at<br />
the model level (in terms of components), but also at the inside-component level as well. Why<br />
deliberately hide the contents of a submodel from the modeller?<br />
On top of this, imagine that the international ecosystem modelling community does actually standardise<br />
on a particular component-based approach. Scientists around the world start developing components<br />
according to the standard. Plant models, soil water and nutrient models, animal grazing models, and so<br />
on. Others want to start building ecosystem models from these components. What are the chances of<br />
these components being interfaceable: in other words, that the soil water output provided by the soil<br />
water submodel will match the soil water input required by the plant submodel? In a very controlled<br />
situation (a particular research team, having spent considerable ef<strong>for</strong>t defining the interfacing between<br />
the components of their ecosystem model), the components will indeed interface. But choosing<br />
components, developed without regard to each other, off the web, and one can virtually guarantee that<br />
they will not interface. In contrast, submodels in a declarative modelling approach do not have rigid,<br />
opaque 'shells', so it is easier to make connections between arbitrary pairs of submodels.<br />
The conclusion is that a component-based approach might well work at a local level. But it cannot by<br />
itself be the way <strong>for</strong>ward if we dare to envision a future in which we build models by choosing from a<br />
global pool of submodels, adapting them as needed to combine them together.