Cress (Communication Representation Employing Systematic Specification)

See the main page for a Cress overview


The current version of Cress is 5.0, dated 14th January 2014.


Cress is an acronym for Communication Representation Employing Systematic Specification. Cress allows graphical description of a wide variety of services such as in data communications/telecommunications, but Cress is not limited to this. The approach allows services to be described graphically as (work)flows of activities. Cress diagrams are automatically translated into formal languages for rigorous analysis and verification, and are also automatically translated into implementation languages for deployment and validation. This page is an extract of the full manual.

Cress is written using portable and widely used languages (Perl and Java). It can be extended by a developer for other kinds of services that can be characterised by activity flows. Cress supports the following:

The aim of Cress has been to make service design as easy as possible without requiring specialist development knowledge. From the user point of view, Cress simplifies service creation to drawing diagrams, clicking buttons and defining a few tool parameters. All key functions of Cress can be controlled from the Chive diagram editor.

From the developer point of view, Cress is a complex but comprehensive toolset. It effectively supplies multiple compilers rolled into one as it supports three diagram editors, six target languages, and nine application domains. A relevant quote for Cress might be:

Ὓδραν τέμνεις
("You are cutting into a Hydra", Plato, Republic 426)


The following main tools are provided in the Cress toolset:

Tool Purpose
cadp_annotate annotate Lotos for use by CADP
cress_bpel translate Cress diagrams to BPEL
cress_check check Cress diagrams
cress_cpl translate Cress diagrams to CPL
cress_create create BPEL service archives
cress_deploy deploy BPEL service archives
cress_expand expand macros in Cress diagrams
cress_lola clean up Lola (Lotos) simulation traces
cress_lotos translate Cress diagrams to Lotos
cress_realise specify/implement/deploy Cress diagrams
cress_sdl translate Cress diagrams to SDL
cress_sdt turn a Lola (Lotos) test process into an MSC/PR file for Tau SDT (SDL)
cress_test run JUnit tests on BPEL services
cress_tidy delete temporary Lola (Lotos) and Tau SDT (SDL) files
cress_validate validate Cress diagrams
cress_verify verify Cress diagrams
cress_vxml translate Cress diagrams to VoiceXML
these are Tau Analyzer filters for IN, SIP and VoiceXML; set them as a filter in the Tau SDT Analyzer dialogue

These in turn rely on various Perl modules:

Module Purpose Cress diagram to BPEL/WSDL translator; variants apply for each vocabulary Cress common definitions Cress diagram to CPL translator; Cress lexical analyser (diagram analyser) Cress diagram to Lotos translator; variant code applies for each vocabulary Cress diagram parser (syntax analyser) Cress diagram to SDL translator; variant code applies for each vocabulary Cress diagram to VoiceXML translator Cress vocabularies

The relationship among the main scripts is as follows:

Cress Tool Architecture

Required Environment


To run these tools requires a Unix-like environment and Perl 5. The tools have been run on Unix (Fedora Core, NextStep/OpenStep, Solaris) and Windows (under CygWin).

Diagram Editor

The best choice for creating service diagrams is to use the Chive editor that is well integrated with Cress. This is Java-based and runs on many platforms. Virtually all Cress diagrams have been provided in Chive XML format.

If Java is supported on your platform, you can use yEd instead. Download this from yWorks. Diagrams need to be saved in GML format for Cress to use them. yEd will read .gml format as well as its own .ygf format.

If you are able to run NextStep/OpenStep, you can edit and create Cress diagrams. You may be able to download Diagram! and a licence key from the Web, though the author has local copies. The file cress.dpalette2 is a palette for this diagram editor.

Diagrams can be checked individually or in groups by running cress_check.


To deploy and run generated Web Services, you will need Apache Tomcat (e.g. version 5.5.12 onwards) and ActiveBPEL (e.g. version 5.0.2). To test web or grid services requires JUnit 4.0 or later and MySQL 5.0 or later. To deploy and run generated Grid Services, you will also need Globus WS Core (e.g. version 4.2).

ActiveBPEL versions 3.N onwards require a JVM version 1.5. However, by following online advice it is possible to configure ActiveBPEL to work with later JVM versions.


To deploy and run generated CPL, you will need a CPL-capable SIP server such as SER (SIP Express Router).


To analyse and execute the generated specifications, you will need Lola/Topo (e.g. version 3.6 onwards). The author has a version of Lola/Topo compiled for CygWin on Windows and Debian Linux. You might also wish to use CADP (e.g. version 7.1 onwards). Cress descriptions can be verified with Clove (Cress Language-Oriented Verification Environment) and can be validated with Mustard (Multiple-Use Scenario Testing and Refusal Description).


To analyse and execute the generated specifications, you will need the Telelogic Tau SDL Suite or SDL/MSC (e.g. version 4.6 onwards).


To deploy and run Cress IVR services, you will need V-Builder and associated packages from Nuance Corporation (e.g. version 1.2 onwards). This is a substantial and complex set of downloads that needs registration and approval by Nuance. At least Nuance V-Builder, Nuance Vocalizer and a Nuance language pack will be needed.


This program is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation - either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful but without any warranty, without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

You may re-distribute this software provided you preserve this Cress description. Bug reports should be sent to Ken Turner, who would also appreciate receiving any corrections and comments.