Introduction

The Modeling Tool Kit (MTK) is a programming framework, for TANGRAM-II, where users can develop different types of mathematical models and algorithms, and use them together in a single environment. It offers its users the ease of working, at the same time, under the same tool, with distinct models, of different types, apply them to the same problem, and compare their results. It also allows users to expand the set of available types of models, by programing and inserting new, customized ones, into the tool.

MTK is build up of, basically, two parts: a main structure, composed by the MTK interface, and a set of different plugins, that can be added or removed by the user. Figure [*] shows this architecture. The MTK interface resides in the highest layer level and, through it, users can interact with the available plugins. The interface/plugin communication is done through a library, called libmtk, which, therefore, resides in the intermediate layer of the hole structure. Finally, the plugins, which are, in fact, a blueprint from which different models are created, reside in the lowest layer level.

Figure: MTK block architecture
\includegraphics{figuras/mtk_hmm_module/mtk_arch.eps}

Each plugin works as black box, and defines a specific type of mathematical model. Its code must be self-contained, in such a way that its implementation cannot depend on other plugins. By this, it is guaranteed that a plugin removal (or addition) will not compromise the entire tool or the other plugins. Just like a class in the object oriented paradigm, each plugin is composed of attributes and methods, which all models created from that plugin share, and which can be accessed or executed by the user.

In order to enable plugin communication with the MTK structure and with other plugins, the types of models implemented in the MTK framework must follow a programming template. This fact should not be viewed as a limitation, since language freedom is not attenuated, and the programmer has only to adjust the way he or she implements the code. From the users point of view, it is much more comfortable to work with all models in a single environment than having many standalone programs, with distinct input and output standards.

The MTK framework was develop during the work of [#!fernando2006!#], as the author realized the similarity between the studied models, and needed to compare their results using the same input data. Since then, some other authors have contributed with new plugins.

Guilherme Dutra Gonzaga Jaime 2010-10-27