Platypus is a modelling and a programming environment based on Pharo and the STEP ISO standard.

What can you do with Platypus ?

Elaboration of complex meta-models is a very tedious task. Often, you need a lot of iterations until you converge to a stable version. With most of today available meta-workbenchs, you need to generate code to implement tools and software components arround your meta-models. Because of code generating, the elaboration process is not agile. Just count how many time is needed for only one iteration!

Platypus make it possible the early validation of your meta-models for real. No code generating is needed anymore, your meta-model are really executable within the meta-workbench.

Thus, Platypus can help you building a complex system, from the design to the implementation. Pharo brings very powerful prototyping capabilities whereas the EXPRESS modelling language allows the typing of your models. EXPRESS is used as an optional typing system for Smalltalk classes. Given a Smalltalk meta-model, an EXPRESS schema can be specified to precisely describe the types of your meta-models and to specify domain rules. Then, thanks to the EXPRESS representation, you can build application generators or domain specific tools to further verify and validate your meta-models.


Take a fresh Pharo 1.4 image from or a Pharo one-click if you don't know what a Pharo image is. Then open a workspace, copy and paste the following expressions and evaluate them:

Gofer it
	url: '';
	package: 'ConfigurationOfPlatypus';
(ConfigurationOfPlatypus project version: #default) load

A STEP environment

Platypus allows data models specification with STEP/EXPRESS modeling language and the implementation of data exchange components. From this point of view, Platypus is a typical STEP based tools with

  • an EXPRESS editor and checker,
  • and a STEP file reader, writer and checker.

For a short explanation about the STEP Technology, read our STEP in a page here: ISO STEP technology page

An hybrid data and object oriented development tool

Platypus is implemented inside Pharo, a free Smalltalk environment. Thanks to Pharo, Platypus is an hybrid tool. On one hand, it allows very precise data specification and manipulation of strong typed objects. On the other hand, associated with Pharo code generator, it allows rapid system prototyping.

A data schema mapping environment

Platypus is developed to be a schema mapping tool allowing the specification of mapping rules between source and destination schemas.

Mapping rules can designed either with EXPRESS or with Smalltalk:

  • with EXPRESS, mappring rules can be directly evaluated and checked from the instance browser;
  • you can also use Smalltalk classes generated from your EXPRESS model to program your mapping rules

Current status

Basic features

Current default version can be used to edit and verify EXPRESS schemata. The user benefits from an interactive development environment where a data schema can be classically viewed (textual view) and update as a whole or element by element (entities, types, rules, functions and procedures).

STEP files can be parsed and contained application instances are incorporated into model contents that the user can browse and update dynamically.

The possibility to instanciate a schema allows full data semantic checking by the evaluation of rules that are specified in EXPRESS.

Platypus is made of an EXPRESS interpreter. Expressions and algorithmes can be computed. The interpreter can be used

  • to validate rules such as local entity rules or global rules,
  • to compute derived and inverse attribute values.

This feature makes the modelling/checking cycle very agile because all is dynamically achieved: not code generation from a change in an EXPRESS model to a data checking.

Advanced features

Schema mapping capabilities

As schema mapping rules can be specified by derived attributes, Platypus can be used as a schema mapping tool and as a code generator builder.

Platypus code reuse

It benefits from a clean object design: Platypus meta-model is specified by a set of EXPRESS meta-schemas and a big part of Platypus classes are automatically generated.

All internal explorations processed by checkers or by the interpreter are programmed as visitors. This design allows Platypus to be enriched by additional features.

Because Platypus is available as an open source and free of charge software, it can be reused by every one as a backend for STEP related tools implementation.

An opened environment

You can implement primitives directly with EXPRESS functions. A primitive is coded with Smalltalk code embedded inside EXPRESS functions. As examples, such kind of functions can be used to:

  • use a DataBase : application data can be fetched directly from a data base (object oriented or relational);
  • using an external Prolog engine (see BProlog for example)


Please don't forget that Platypus is a research tool that it is not bug free.

  • only EXPRESS-94 ISO standard is covered;
  • implicit EXPRESS semantic checking is not fully implemented;
  • Platypus does not implement STEP Standard Data Interface, data accessing method is minimal and specific;
  • Binary type is not supported.