24.05.2014 Views

pdf: 600KB - Potsdam Institute for Climate Impact Research

pdf: 600KB - Potsdam Institute for Climate Impact Research

pdf: 600KB - Potsdam Institute for Climate Impact Research

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!