Ptolemy II [1] is an open-source software framework supporting
experimentation with actor-oriented design. Actors are software
components that execute concurrently and communicate through messages
sent via interconnected ports. A model is a hierarchical
interconnection of actors. In Ptolemy II, the semantics of a model is
not determined by the framework, but rather by a software component in
the model called a director, which implements a model of
computation. The Ptolemy Project has developed directors supporting
process networks (PN),
discrete-events (DE),
dataflow (SDF),
synchronous/reactive(SR),
and
continuous-time
models.
Each level of the hierarchy in a model can
have its own director, and distinct directors can be composed
hierarchically. A major emphasis of the project has been on
understanding the heterogeneous combinations of models of computation
realized by these directors. Directors can be combined hierarchically
with state machines to make
modal models
[2]. A hierarchical
combination of continuous-time models with state machines yields
hybrid systems [3]; a combination of synchronous/reactive with state
machines yields StateCharts [4] (the Ptolemy II variant is close to
SyncCharts).
Ptolemy II has been under development since 1996; it is a successor to Ptolemy Classic, which was developed since 1990. The core of Ptolemy II is a collection of Java classes and packages, layered to provide increasingly specific capabilities. The kernel supports an abstract syntax, a hierarchical structure of entities with ports and interconnections. A graphical editor called Vergil supports visual editing of this abstract syntax. An XML concrete syntax called MoML provides a persistent file format for the models. Various specialized tools have been created from this framework, including HyVisual (for hybrid systems modeling), Kepler (for scientific workflows), VisualSense (for modeling and simulation of wireless networks), Viptos (for sensor network design), and some commercial products. Key parts of the infrastructure include an actor abstract semantics, which enables the interoperability of distinct models of computation with a well-defined semantics; a model of time (specifically, super-dense time, which enables interaction of continuous dynamics and imperative logic); and a sophisticated type system supporting type checking, type inference, and polymorphism. The type system has recently been extended to support user-defined ontologies [5]. Various experiments with synthesis of implementation code and abstractions for verification are included in the project. References
[1]
Johan Eker, Jorn Janneck, Edward A. Lee, Jie Liu, Xiaojun
Liu, Jozsef Ludvig, Sonia Sachs, Yuhong Xiong. "Taming heterogeneity - the Ptolemy approach,"
Proceedings of the IEEE, 91(1):127-144,
January 2003.
(Key citation for the Ptolemy project)
[2] Edward A. Lee. "Finite State Machines and Modal Models in Ptolemy II," Technical report, EECS Department, University of California, Berkeley, UCB/EECS-2009-151, December, 2009.
[3] E. A. Lee and H. Zheng, "Operational Semantics of Hybrid Systems," Invited paper in Proceedings of Hybrid Systems: Computation and Control (HSCC) LNCS 3414, Zurich, Switzerland, March 9-11, 2005, pp.25-53.
[4] E. A. Lee, H. Zheng, "Leveraging Synchronous Language Principles for Heterogeneous Modeling and Design of Embedded Systems," EMSOFT '07, September 30 - October 3, 2007, Salzburg, Austria.
[5] M.-K. Leung, T. Mandl, E. A. Lee, E. Latronico, C. Shelton, S. Tripakis, and B. Lickly, "Scalable Semantic Annotation using Lattice-based Ontologies," ACM/IEEE 12th International Conference on Model Driven Engineering Languages and Systems (MODELS), Denver, CO, USA, 4-9 October, 2009.
The Ptolemy Project web page contains much more information about the project. The work is conducted in the Department of Electrical Engineering and Computer Sciences of the University of California at Berkeley. The project is directed by Prof. Edward Lee. The project is named after Claudius Ptolemaeus, the second century Greek astronomer, mathematician, and geographer.
Ptolemy II includes a growing suite of domains, each of which realizes a model of computation. It also includes a component library, in which most components are domain polymorphic, in that they can operate in several of the domains. Most are also data polymorphic, in that they operate on several data types. The domains that have been implemented are listed below. Domains that are reasonably mature: