Making frameworks more useable: using model introspection and metadata to develop model processing tools

Abstract Several modern development environments allow executable components, such as hydrologic models, to carry metadata describing the properties and capabilities of the components. These metadata may be restricted to the names of variables, and their respective data types, or may extend to other information, such as classification of variables (e.g. input or output), numeric constraints on parameters (e.g. between 0 and 1, or greater than 0) or aliases (e.g. rainfall, also known as precipitation). Introspection in these environments allows tool developers to write programs and other components that make use of these metadata to provide generic model processing tools, while allowing model developers to take advantage of these tools without additional development effort. Typical model processing tools include model integration systems, parameter optimisers, automatic user interface generation and automated IO. One approach to implementing model introspection and metadata, used by the Interactive Component Modelling System (ICMS), is to extract information from a model when compiling a custom modelling language. An alternate approach, applied in a new modelling framework, relies on the language independent introspection provided by the .NET environment. These uses of introspection streamline model development within modelling frameworks, reducing the effort required to take advantage of other framework capabilities, such as dynamic visualisation. Introspection based systems, while introducing flexibility, defer until runtime various type checks that are typically performed by a language compiler. This introduces a performance penalty that may become significant in some circumstances.