The core of MLDesigner is a compact software infrastructure upon which specialized design environments, so-called domains, can be built. The software infrastructure, called the kernel, is made up of a family of C++ class definitions. For detailed information on all the kernel classes, please refer to the MLDesigner Kernel section. The MLDesigner kernel was taken from the original Ptolemy system with some slight modifications. Therefore, the items MLDesigner kernel and Ptolemy kernel are used synonymously.
Domains are specific implementations of a model of computation. They are defined by creating new C++ classes derived from the base classes in the kernel. Domains can operate in either of two modes.
The use of an object-oriented software technology permits domains to interact with one another without knowledge of the features or semantics of the other domain. Thus, using a variety of domains, a team of designers can model each subsystem of a complex, heterogeneous system in a natural and efficient manner. These different subsystems can be nested to form a tree of subsystems. This hierarchical composition is the key in specifying, simulating, and synthesizing complex, heterogeneous systems.
In summary, the key idea in the Ptolemy kernel and thus also in the MLDesigner kernel was to mix models of computation, implementation languages, and design styles, rather than trying to develop one all-encompassing technique. The rationale is that specialized design techniques are
The MLDesigner kernel demonstrates a way to mix tools that have fundamentally different semantics, and provides a laboratory for experimenting with such mixtures.