Friday, 15 February 2013

New features around BPMN2 and SwitchYard available in 2.1.0.Final

The Savara project is pleased to announce the release of version 2.1.0.Final.

This release has focused on providing capabilities to quickly create BPMN2 choreography and process models, as well as providing testable support for SwitchYard generated Java services. These features have been demonstrated in the webcast: https://vimeo.com/53007939

The main new features are:
  • BPMN2 Choreography and Process Models can now be derived from a set of Scenarios (see this section for more information)
  • A BPMN2 Choreography Model can also be derived from endpoint models - currently limited to using BPEL process definitions, but more will be added in the future.
  • Simulation of scenarios against generated SwitchYard Java services
  • Scenario simulation now reflects error status of processing the models associated with each role (green for success, red for failure), and shows any errors in the simulation log (see image near the end of this section)
  • Option provided to generate BPMN2 process model service invocations using either a ServiceTask, or separate SendTask and ReceiveTask (default uses ServiceTask) - this will map better onto executable process models for use with jBPM in the future
  • Artifact validation can be enabled, with errors reported to the Problems view (see here for more details on how to enable
  • Initial version of WS-CDL to BPMN2 choreography conversion

Friday, 8 February 2013

A Case Study: Zero Deviation Lifecycle

The following article describes how the Savara project is being used in practice to support the Zero Deviation Lifecycle (ZDLC) approach used by Cognizant:

http://ovum.com/2013/02/04/zero-deviation-lifecycle-gives-requirements-engineering-and-software-modeling-a-refresh/

Wednesday, 5 December 2012

The passing of Kohei Honda, a great scientist and a great man

I met Kohei (and Nobuko) through Alexis Richardson who pioneered work on messaging with AMQP. Alexis was a pi-calculus guy as was I and he knew both Kohei and Nobuko (Kohei’s wife). On the other hand I knew Professor Robin Milner quite well, he was my mentor. That all happened in 2002, some 10 years ago now. Kohei joined W3C along with Nobuko and Robin as invited experts to ensure that WS-CDL, the basis of Testable Architecture, Savara and so many things that we take for granted. All based around pi-calculus for which we all owe Robin Milner a huge debt. But pi was always hard to understand except for the gifted mathematician. Kohei with a fellow researcher, Vasco Vasconselas, came up with an elegant addendum to pi called sessions and so began work on session typing. This work, above all else, informed WS-CDL, Savara, Testable Architecture and many others as to how to use pi-calculus so as to gain practical benefits. Indeed it is the core of WS-CDL in it’s search to understand behaviors over a distributed system.

That Kohei became an invited expert on ISO’s UNIFY project to unify messaging standards for financial information exchange and an invited expert to the Japanese banking system all of which demonstrated that Kohei really understood how academia could support business.

Kohei was a picture of enthusiasm with a vision and a feel for aesthetic qualities in all that he did. This was never more apparent than his work on session types and scribble (his language that has become known as son of WS-CDL) applied to business problems.

I have been so lucky to have had the chance to work with Kohei over a long period. I have been even luckier in being able to introduce him to some other great people of whom Dr Bippin Makoond is one along with Matthew Arnott from the Tsunami early warning project in the USA, to Matthew Rawling CTO at UBS and chair of UNIFY, Dr Gary Brown at Redhat (my long time friend and colleague) to all my old colleagues in W3C. Spreading his enthusiasm and explaining complex things in easy ways was a gift that few of us have but that Kohei had in spades.

I was humble and grateful to know him as a colleague and as a friend. He was gentle with the heart of a giant and the mind of a great scientist. His work will stand the test of time and his presence will, for this soul, be forever there.

I shall miss him greatly and my heart and support goes out to Nobuko and Kohei’s wider family for their loss.

Friday, 9 November 2012

From Requirements to Deployed Services in 15 mins

This demo shows how the concept of Testable Architecture, and the Savara tooling that supports this methodology, can be used to create, test and deploy a set of services within the Switchyard ESB in just 15 minutes.

The Testable Architecture methodology aims to ensure that artifacts defined at each stage within the software development lifecycle can be tested against other artifacts in other stages of the lifecycle. The overall goal being to ensure that the delivered system meets the original business requirements.

The demo uses a set of scenarios (sequence diagrams with examples messages) to represent a formal definition of business requirements, outlining the behaviour of the required system.

From the scenarios we generate a BPMN2 choreography defining the overall behaviour of the business process, as well as a set of BPMN2 process models, one per participant in the business process.

We can then test the scenarios against the generated choreography to verify that it truly meets the business requirements, before using the choreography to generate the set of template Switchyard Java services.

Although the Java service generation provides the template structure of the service operations, based on the behaviour defined in the BPMN2 process models, the developer will still be required to add some implementation details at this stage. However once that is completed, the service implementations can then be tested against the original scenarios, ensuring that they also meet the business requirements.

Once fully tested, the demo shows the services being deployed into the Switchyard ESB and invocation of the services to demonstrate they are fully functional.

Thursday, 8 November 2012

Savara 2.1 Milestone 2 supports Switchyard Java service simulation

The first milestone introduced generation of Switchyard Java services. This milestone has focused on enhancing that support with the generation of additional transformers (to support execution of the service) and the ability to simulate scenarios against the service implementation.

The other significant new feature is the ability to create a BPMN2 choreography from a set of endpoint models (currently only BPEL supported). For example, if you have a set of BPEL process definitions that represent the behaviour associated with each of the interacting parties, then you can now reverse engineer the choreography that represents the global (service neutral) view of the overall business transaction.

The release also includes many improvements and bug fixes. For the full details please see: https://issues.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12319480

To download the tools, please visit the Savara downloads page and follow the installation instructions. This release is available from the Development Milestone update site.

Wednesday, 23 May 2012

New features available in Savara Eclipse Tooling 2.1 (M1)

The first milestone for Savara Eclipse Tooling 2.1 is now available, including the following new features:

  • BPMN2 Choreography and Process Models can now be derived from a set of Scenarios (see this section for more information)
  • Artifact validation can be enabled, with errors reported to the Problems view (see here for more details on how to enable)
  • Scenario simulation now reflects error status of processing the models associated with each role (green for success, red for failure), and shows any errors in the simulation log (see image near the end of this section)
  • Provide option to generate BPMN2 process model service invocations using either a ServiceTask, or separate SendTask and ReceiveTask (default uses ServiceTask) - this will map better onto executable process models for use with jBPM in the future
  • Initial version of WS-CDL to BPMN2 choreography conversion

One of the main focuses of version 2.1 is support for Switchyard. In version 2.0 we introduced generation of Switchyard projects with BPEL services. In this release we also introduce support for Java bean services. As well as creating the project structure, and switchyard.xml, the Java code for the service is also generated to reflect the required behavior of the service.

NOTE: Generating Switchyard Java services requires the Switchyard Eclipse tools to be installed. These are not currently released, and therefore this feature can only be used by waiting for Switchyard 0.5 to be released, or building the Eclipse tools from source.


The detailed release notes can be found here.

Friday, 10 February 2012

Testable Architecture with BPMN2 Choreographies - 2.0.0.CR1 has been released!

Since the release of the previous milestone, work on BPMN2 Choreography support has advanced significantly. It is now possible to:

  • Create a BPMN2 choreography using the Eclipse BPMN2 modeler (available via the Savara update site). Although this modeler is still a work in progress, I'd like to thank Bob Brodt (BPMN2 modeler project lead) for his work on adding usability features to make the creation of choreographies as easy as possible.
  • Simulating a Scenario against the BPMN2 choreography
  • Generating a range of artifacts from a BPMN2 choreography, including:
    • BPEL (generic and Switchyard project variations),
    • BPMN2 process models, and
    • SCA Java.

NOTE: We currently only support Choreography Task, Exclusive and Parallel Gateways within the BPMN2 choreographies. Intermediate events, other gateways and activities will be added in subsequent versions - if you have particular need for a component, then please raise a jira including an example model where possible.

Other new features in this release include:

  • Simulating a Scenario against a BPEL process definition, based on deriving a protocol description from the BPEL process. In the future we will also be looking to do simulation against an executing BPEL process.
  • Generating a BPMN2 Process Model from a BPEL process definition


Information on how to create a choreography can be found in the User Guide. An example Eclipse project, including BPMN2 Choreography and accompanying Scenarios, can also be found on the downloads page.

Tuesday, 18 October 2011

Generating SwitchYard BPEL applications

With the release of Savara Eclipse Tools 2.0.0.M5, it is now possible to generate BPEL projects that can be deployed to the new jboss.org ESB called SwitchYard. This post explains how to generate an example application and deploy it to the ESB. BPEL support will be available in version 0.3 of SwitchYard, due to be released early November 2011.

Setting up your Eclipse environment

First step is to set up your Eclipse environment. If you don't already have an Eclipse environment, then we suggest downloading the JEE version of Indigo from http://www.eclipse.org/downloads/.

Once you have installed Eclipse, run it up and go to the Help->Install New Software menu item. Enter the Savara Update Site (http://downloads.jboss.org/savara/releases/updates/2.0.x) location into the top text field and press the return key. In the main panel it will show a tree with the categories Savara and Savara Dependencies at the top level. Select both of these categories, and then press the Finish button. Follow the instructions presented by the update manager until you will be requested to restart your Eclipse environment.

Importing the Purchasing Example project

The purchasing example can be found here: http://downloads.jboss.org/savara/examples/purchasing.zip

Once this file has been downloaded, go to the Eclipse environment and select the context menu from within the Project Explorer. Select the "Import ...->General->Existing Projects into Workspace" menu item, then when the dialog is displayed, choose the "Select archive file" radio button and use the "Browse" button to locate the downloaded purchasing.zip file.

When the 'Finish' button is pressed, the purchasing project will be imported into the Project Explorer.

Generate the SwitchYard BPEL Projects

When the purchasing project is expanded, you will find a choreography file in the top level folder called PurchaseGoods.cdm. Select the context menu for this file, and choose the menu item "Savara->Generate->Service", as shown in the following image:


This menu item will cause the following dialog to be displayed:


Select the 'Switchyard BPEL' Service Type for each of the service roles, and then press the 'OK' button to generate the three projects.

If you expand the PurchaseGoodsProcess-Store project, you will see that the artifacts for the Switchyard BPEL application are primarily contained within the src/main/resources folder:


Adding Implementation Details

The generated project contains an 'abstract' version of the BPEL process definition, outlining how it interacts with any consumers, or external services. However it does not contain all of the implementation logic, as this is not available within the choreography description from which the BPEL process was generated.

As a short cut, we have provided a version of the BPEL processes for this example, with the implementation details fully completed. This can be downloaded from here: http://downloads.jboss.org/savara/examples/purchasing_bpel_impl.zip

In this zip you will find three BPEL processes. These should be used to replace the generated versions - although if curious, first copy them to another location in your Eclipse environment, and perform a comparison to see the differences. For example, select the PurchaseGoodsProcess_Store.bpel from the generated project, and the version obtained from the downloaded zip, and use the "Compare With->Each Other" menu item and you will see:


The generated version on the left contains the main structure of the process, and the interaction statements (e.g. receive, reply, invoke). The 'one we prepared earlier' version on the right adds assignment and condition statements.

Running the Example

The final step is to package and deploy the SwitchYard applications. The SwitchYard version we will be using is the 0.3 AS7 based distribution. (Note: version 0.3 will be released early November 2011).

For each of the generated projects, from the project node in the explorer select "Export ..." from the context menu. From the dialog select "Java->JAR file", and in the next dialog specify the location of where the Jar should be stored. For example, you could create a Store.jar, CreditAgency.jar and Logistics.jar.

Once the SwitchYard server has been started, using the "./standalone.sh" command in the bin folder, copy the three SwitchYard BPEL applications into the $AS7/standalone/deployments folder.

When a service has been successfully deployed, you will see messages similar to the following associated with the LogisticsService:

14:46:48,820 INFO  [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-2) Setting the server's publish address to be http://127.0.0.1:18001/LogisticsService
14:46:48,858 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 1) Deployed "Logistics.jar"

Lastly, using your favourite SOAP client (e.g. SOAPUI), send the following message to http://127.0.0.1:18001/StoreService:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stor="http://www.jboss.org/examples/store">   <soapenv:Header/>
<soapenv:Body>
<stor:BuyRequest id="1" product="bike" customer="Joe"/>
</soapenv:Body>
</soapenv:Envelope>

you will get a response:

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<soap-env:Body>
<BuyConfirmed id="1" xmlns="http://www.jboss.org/examples/store" />
</soap-env:Body>
</soap-env:Header>
</soap-env:Envelope>

If you now change the request so the customer is "Fred", then you will receive an 'AccountNotFound' fault.

Thursday, 21 July 2011

Savara 2.0.0.M4 is released with initial BPMN2 and SCA support

The Savara team are pleased to announce the release of milestone 4 of Savara 2.0. The Savara project provides tools in support of the Testable Architecture methodology, which aims to ensure that artifacts defined at different stages of the software development lifecycle are valid against each other, ensuring that the delivered system meets the original business requirements.

The main new features in this release are:

  • First 'technical preview' of the choreography to BPMN2 process model generation. Currently this still uses the WS-CDL based choreography, but will use the BPMN2 choreography model in a future release.
  • Generation of SCA Java based service implementations from a choreography. This creates a Java project, including the SCA composite descriptor, WSDL and XSD files (representing the external service contract), the Java interfaces and template Java service implementation class.
  • Update to simulation framework, to enable different roles within a scenario to be simulated against different models.
  • SCA Simulator, to enable a scenario to be simulated against SCA Java based service implementations.
  • Upgrade to latest version of Scribble (draft 1.0 version of protocol spec). Scribble is a notation for representing protocols, and provides the underlying canonical model for describing behaviour across artifacts in Savara.
  • Many bug fixes.

Full details can be found here: https://issues.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12316424

Thursday, 7 April 2011

Scenario format and editor changed in Savara 2.0.0.M2

Savara 2.0.0.M2 has just been released as an Eclipse update site version only. This is because all the work for this milestone has been in the core OSGi bundles and the Eclipse plugins, so no reason to build a new server integration distribution.

The main purpose of this milestone release is to perform some refactoring to enable extensibility in the contract/service generation areas, and the simulation of roles defined in a scenario. This has resulted in two main changes:

1) In previous releases the particular target generation format was selected on the context menu associated with the choreography description. From this milestone release, the generation menu now only provides two options, Contract and Service. These options launch a dialog window that enables the user to select the specific generation format for all relevant roles in the source model. So this means that all of the relevant contracts or services can be generated in one step, potentially using different target formats. Currently only BPEL and WSDL are supported.

2) New simplified Scenario format and associated editor. The new scenario format only contains the basic information required (equivalent to the business view in Savara1 scenarios) and is no longer tied to a particular (ws-cdl) model, which has its pros and cons. The pros are that it can be used against multiple models, which also means that each role can be simulated against a different model (or service implementation). The cons relate to the ease of specifying the scenario, as there is no direct reference model. However scenarios are intended to be specified before the model (in terms of the methodology when used top down), so in those situations a model wouldn't be available anyway. A future enhancement could be to enable artifacts to be associated with the scenario in a less explicit manner, which could be used by the editor to infer information that could be useful to the user in constructing the scenario.

Note that currently there are no docs for these changes. The aim is to make the features available as soon as possible, to encourage feedback - therefore a quick overview of the new scenario capability is described below.

The first change is that Savara scenarios (as opposed to the pi4soa Scenarios previously used) have their own category in the New menu.


The scenario editor itself is very similar. From first appearence it only looks like a few of the palette items have disappeared. These are the 'Assert State' and 'Record State' items, which were very limited in their capability and specific to WS-CDL. A future enhancement of the new scenario format could investigate ways of specifying assertions.


The main change to note here is the properties associated with the selected message link. With the new scenario format a message link now only identifies whether an error is expected, the optional operation and fault names, and one or more parameters. A parameter is comprised of two pieces of information, the parameter type and the URL to the message value.

The next change is the way in which scenarios are simulated. Previously when the simulation was triggered, it would immediately simulate the scenaro against the WS-CDL choreography description that had been directly referenced from within the scenario.

In this new version, performing the simulation action (i.e. pressing the green 'play' button or selecting scenario->simulate on the context menu), will show the following dialog window:


The main region of the dialog is composed of a repetitive group, one per role in the scenario. This group enables the (a) model (i.e. choreography), (b) role within the model, and (c) simulator, to be selected. There are also checkboxes at the top of the dialog (checked by default) that enable the same values for the model and simulator to be applied to all roles within the scenario - making it more efficient in the case where only a single model and simulator implementation is being used.

To load the model, simply press the '...' button by the first role's model text field. This will display a dialog box that can be used to find the appropriate model. The list of model roles, and simulators, will update once a model has been selected, to reflect the available roles and simulators that are appropriate to the model. So if you select any old file, then don't expect any values to appear in these comboboxes. Currently the only model type supported is the .cdm files.

In our example project we have a PurchaseGoods.cdm model. When this is selected, the dialog window makes its best estimate at the model role mappings:


When the OK button is pressed, this will trigger the simulation, which will be reflected in the graphical representation of the scenario as before:






Feedback on these new changes, and any enhancements required, would be welcome. Simply post to the user forum or raise an issue in the Savara jira.


To install the release, simply download the JEE version of Eclipse Helios, and then install the following using the "Help->Install New Software" menu option:

1) Savara 2.0.0.M2 from: http://downloads.jboss.org/savara/releases/updates/2.0.x

and if you wish to generate and/or view BPEL processes, then

2) SOA Development->JBoss BPEL Editor from: http://download.jboss.org/jbosstools/updates/stable/helios/

The example project used above can be found here: http://downloads.jboss.org/savara/releases/2.0.0.M2/samples.zip


The details for this release can be found here: https://issues.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12316056

Savara at last years SOA and Cloud Symposium

Last year in Berlin I had the fortune to speak back to back at the SOA and Cloud Symposium and then at JBoss World.

The SOA and Cloud Symposium released the following recording of the talk. Hope you enjoy it.

Happy to send the ppt to anyone that wants it. Just email me at steve.ross-talbot@cognizant.com.

Cheers

Steve T

Wednesday, 6 April 2011

First glimpse of the BPMN2 editor that will be used in Savara

Red Hat recently commissioned the development of a BPMN2 editor from a company called Codehoop. This editor will become the core of the BPMN2 based tooling in Savara - hopefully starting to appear in the near future.

The guys at Codehoop have done a great job! And here is a couple of movies they have put together to help users install the editor and view the OMG BPMN2 examples.

Note: the editor is based on Graphiti, which is only at version 0.7.1, and an early version of the Eclipse BPMN2 meta-model, so this is still a work in progress. So expect to find issues with any of the new technologies. However I would encourage you to download the editor and have a play.

The current editor provides the base level capabilities for creating a BPMN2 compliant model and diagram. However as with any new UI, there are areas where usability improvements would be required. This is work that will happen over the coming months, so feel free to express your views on how the use experience can be improved.

At the moment the issue reporting for the editor is through the jBPM project, using the 'Eclipse' component. However we are working towards moving this editor to Eclipse.org .... so watch this space.

Friday, 11 February 2011

Savara goes TAPless

Before anyone gets too excited, let me explain.

Savara 1 recently introduced the concept of the Testable Architecture Project (TAP). This is an XML representation of (as the name suggests) a testable architecture project, defining the different artifacts associated with the stages of the software development lifecycle, and the dependencies between them.

Savara 1 has been primarily focused on the Eclipse environment, and therefore a mechanism was needed to define the artifact dependencies, so that the static validation between various artifacts could be triggered when a change occurred.

However we always had an eye on the future, and that Savara 1 should ideally be working with an SOA repository, and that Savara 2 would be more web centric than Eclipse based. So the problem the TAP was attempting to address was to enable dependencies to be represented when no repository was available.

The problem it introduced was how the dependencies in the TAP would be synchronized with the dependencies that may be defined when those artifacts were also stored in a repository. This was one of the main objections raised to the use of the TAP on the Savara forums, but at the time it was difficult to see how dependency information could be managed without being fully dependent upon the artifacts being stored in the repository - i.e. static validation would only occur when changes were made and committed back to the repository.

However now there may be light at the end of the tunnel. There have been discussions about the creation of a general purpose repository project, with profiles suitable for specific domains (e.g. rules and SOA). There is potential for the Savara project to feed in its requirements, and help contribute to this repository project, to find a solution that would work with and without a repository being available (i.e. online).

Watch this space ........

Tuesday, 19 October 2010

SAVARA 1.1.0.CR1 Released

We are pleased to announce the release of version 1.1.0.CR1 of SAVARA.

The main new features within this release are service validators for Web Services based on the jbossws-native stack (which includes BPEL processes deployed in RiftSaw), and the first use of the TAP (Testable Architecture Project) file as a means of representing artifacts and their relationships, and being able to validate them.

This new functionality can also be seen in the movies located here.

The detailed release notes can be found at:
https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12315104

Wednesday, 6 October 2010

Testable Architecture in action

A new "movies" page has been added to the Savara project website: http://www.jboss.org/savara/documentation/movies.html

These short movies demonstrate the use of Testable Architecture, at various stages in the software development lifecycle, using the purchasing example that is distributed with Savara.

The version of the software used in the demo is JBoss Tools 3.2.0.Beta1 and Savara 1.1.0.M1 - both versions will be released very shortly.

Thursday, 19 August 2010

SAVARA 1.0.0.Final Released

We are pleased to announce that version 1.0.0.Final of SAVARA has been released.

This is the first release of the SAVARA project, which aims to deliver a methodology and tools to support the concept of Testable Architecture. This first release provides the following:

1) An initial version of the Testable Architecture methodology. This can be found on the Savara documentation page. It provides guidance on the type of artifacts that should be defined at each stage of the software development lifecycle, and how these can be used in a testable manner. The Getting Started Guide provides an illustration of how this methodology can be applied in the context of the distributed samples.

2) Design-time tool capabilities include:

a) Integration with pi4soa WS-CDL choreography and scenario design tools, with simulation support for testing scenarios against a choreography

b) BPMN (version 1) export from a Choreography (currently just used for documentation purposes)

c) HTML documentation generation from a Choreography

d) WSDL generation from a Choreography

e) WS-BPEL generation from a Choreography (created as a JBoss Tools compatible BPEL project for deployment in RiftSaw)

3) Runtime capabilities include:

a) JBossESB service validation against a Choreography



The release can be found on the download page as a binary distribution, containing documentation, samples and the runtime service validation components, and an Eclipse update site for the design-time tools. Pre-requisites and installation instructions can be found in the Getting Started Guide.

Wednesday, 21 July 2010

CSC support for Savara Open Source Project

CSC are pleased to support SAVARA methodology and are keen to investigate the usage of testable architectures/ modelling and simulation in addition to their industry standard and approved methods for solution development. CSC looks forward to benefiting from the deliverables / outcomes delivered by the SAVARA project.

Friday, 2 July 2010

SAVARA 1.0.0.CR2 Released

We are pleased to announce the release of version 1.0.0.CR2 of SAVARA.

This release is primarily a bug fix release, with a number of issues being resolved with the BPEL and WSDL generation.

The detailed release notes can be found at:
https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12314160

Tuesday, 15 June 2010

SAVARA 1.0.0.CR1 Released

We are pleased to announce the release of version 1.0.0.CR1 of SAVARA.

This release has resulted in a number of significant changes to the structure of the project. Rather than have three separate distributions, we have consolidated all functionality into one main distribution, and an Eclipse update site for the plugins (see downloads page for the URL).

The functionality associated with 'conversation aware' ESB actions has been removed from the main distribution, and moved into a separate 'experimental' branch. This work has provided some useful insight in to some possible features for the future, however the ideas are not mature enough to remain as part of the first release.

NOTE: The annotation used for runtime validation has been renamed. Therefore if any choreographies have been written, that include this annotation, you will need to update the annotation name and the top level node of the XML fragment included in the annotation, from 'jbossesb' to 'validator'. This can either be achieved by creating new annotations and copying the destinations, or by opening the .cdm files in a text editor, and updating the elements directly.

The detailed release notes can be found at: https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=12310870&version=12313913

Friday, 26 March 2010

Why Pi?

SAVARA is about Enterprise Modelling, and ensuring that artifacts created through the development lifecycle are verified for consistency, to ensure the original business requirements are implemented in the deployed solution. So generally we don't talk about the lower level concepts that underpin this work, its not relevant to an architect, service designer or developer - they simply want the benefits that a Testable Architecture can offer.

However, it was with great sadness that we learnt that the inventor of the Pi Calculus, Professor Robin Milner, passed away last weekend. So in honour of Robin, we wanted to describe how important Pi Calculus is for computer science in general, and more specifically to the future of the SAVARA project.

The Pi Calculus provides a concise mathematical notation for expressing all of the constructs necessary to describe the concurrent communicating behaviour of a set of participants. Having such a description enables analysis to be performed, specifically to determine if those interactions will lead to undesirable consequences, such as livelocks or deadlocks. Another important goal is to check conformance or compatibility of communication behaviour between two or more parties that are interacting. This ensures that whenever one party sends a message to another party, the recipient is in a suitable state to be able to receive and handle that message type. All of these properties are required when verifying artifacts as part of Testable Architecture.

The work we are doing with our academic colleagues, led by Dr Kohei Honda and Dr Nobuko Yoshida, in consultation with Robin, has built upon the Pi Calculus with the concept of the global model. This uses the Pi Calculus notation to describe the behaviour from a participant neutral perspective, rather than each participant's behaviour individually - equivalent to the distinction between a choreography (e.g. WS-CDL) against a process model (e.g. WS-BPEL). Using a global model enables deadlock/livelock freedom by design, assuming that certain properties are adhered to, by simply ensuring that all participants conform to the global model.

To the best of our knowledge, currently there are no products or standards that are truely based on the Pi Calculus, or leverage the type theory to detect livelocks or deadlocks. They may claim to be based on it, but in reality they are just using some of the concepts, like parallelism, recursion, choice, etc. The same is true for the first version of SAVARA, it is based on an informal 'interpretation' of this work.

However, the work we are now doing with our academic partners should deliver an enterprise tool that truely leverages the Pi Calculus to help build type safe (deadlock and livelock free) distributed systems. This will also provide a more formal basis for other reasoning and analysis, as may be needed to ensure that the solution meets all of the constraints upon it, and is not merely a heuristic approximation to the desired outcome.

The work of Robin and his colleagues in developing the Pi-Calculus informs us and guides us in what we do in SAVARA, and without his contribution SAVARA would never have existed in the first place.

Robin was always seeking real world examples to give further meaning to his research. The fruitful collaboration that started in the early days of WS-CDL, and now embodied in SAVARA, are a testament to Robin and his desire for ever more grounded and meaningful collaboration.




Gary Brown and Steve Ross-Talbot