Purpose

A software is created to satisfy user needs AKA concerns. These concerns may change often and unanticipatedly. On a concern change, the parts of the software, AKA modules, responsible for that concern must also be revised. A module revision incurs costs and may introduce new errors. It is thus desirable to minimize module revisions. Some concerns, called crosscutting concerns e.g. security, fault tolerance, accountability, etc; have systemic effect. If many modules are responsible for such a concern, a change in it could trigger costly and error-prone systemic module revisions. The Ptolemy language is designed to help avert these systemic revisions.

Design Goals

  • Enable modularization of crosscutting concerns, while preserving encapsulation of existing object-oriented (OO) code.
  • Enable well-defined interfaces between OO code and crosscutting code.
  • Enable separate type-checking, compilation, and modular reasoning of both OO and crosscutting code.

All these goals are important for scalability of software development processes but harder to achieve in current programming languages.

Getting Started

The Ptolemy compiler offers support for compiling and running programs from command-line as well as from within Ant. To get started with setting up an environment for running Ptolemy programs please see our page on installing and running the compiler.

Once you have downloaded and installed the compiler, you could look at the examples included in the distribution. Or alternatively, you could also consult the programming guide for Ptolemy.

Key Publications

Hridesh Rajan and Gary T. Leavens. Ptolemy: A Language with Quantified, Typed Events. ECOOP 2008.

Mehdi Bagherzadeh, Hridesh Rajan, Gary T. Leavens, and Sean Mooney. Translucid Contracts: Expressive Specification and Modular Verification for Aspect-Oriented Interfaces. AOSD 2011.

Robert Dyer, Hridesh Rajan, and Yuanfang Cai. An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces. AOSD 2012.

More ...