ToolBus
Description
The
ToolBus is a software application architecture that utilizes a scripting
language based on process algebra to describe the communication between
software tools. A
ToolBus script describes a number of processes
that can communicate with each other and with tools living outside the
ToolBus. A language-dependent adapter that translates between the internal
ToolBus data format and the data format used by the individual tools makes
it possible to write every tool in the language best suited for the task(s)
it has to perform.
The global architecture is as follows:
The processes inside the
ToolBus (red circles) take care of the coordination of the whole application.
ATerms are used to represent the data that is shipped between
ToolBus and tools. The tools (blue boxes) carry out the actual work. They may be implemented in different languages (C, Java, Perl, ASF+SDF, ...) and may also run on different computers.
The
ToolBus comes with a viewer that allows the debugging of large applications.
This screenshot illustrates the
ToolBus viewer in action. It shows the Meta-Environment that has justed started up and a user has requested to open a module via the
MetaStudio user-interface.
Online Documentation
See
Guide to ToolBus Programming for an extensive description and examples. Related documentation can be found at
Meta-Environment Documentation
API Documentation
See
ToolBus,
ToolBus library, and
ToolBus Java adapter
Publications
%BIBTEX{
@Article{BK98,
author = {J.A. Bergstra and P. Klint},
title = {The discrete time {T}oolbus -- A software coordination
architecture},
journal = {Science of Computer Programming},
year = 1998,
volume = 31,
number = {2-3},
pages = {205--229},
month = {July},
url = "http://www.asfsdf.org/pub/Meta-Environment/ToolBus/SCP98.pdf"
}
@InProceedings{,
author = {H.A. de Jong and P. Klint},
title = {ToolBus: the Next Generation},
booktitle = {Formal Methods for Components and Objects},
pages = {220--241},
year = 2003,
editor = {F.S. de Boer and M. Bonsangue and S. Graf and W.P de Roever},
volume = 2852,
series = {Lecture Notes in Computer Science},
publisher = {Springer},
url ={http://homepages.cwi.nl/~paulk/publications/fmco02.pdf}
}
}%