PSF-ToolBus SEE
To derive a ToolBus application specification from an architecture specification we refine the abstract actions in the architecture specification to sequences of actions on the ToolBus application level. The refinement can be done automatically by applying a set of mappings on the specification of the components, resulting in the specification of a set of ToolBus processes. We constrain these ToolBus processes with (abstract) specifications of the tools. Constraining can also be done automatically and results in the specification of the components for the ToolBus application specification.We have implemented tools for automatic application of refinements and constraints. Their implementations are ad hoc, based on regular expression matching and a standard layout of the specifications. They definitely need to be improved in order to operate in a more general way.
Combining the workbenches for architecture level and ToolBus level design and integrating the refine and constrain steps, we get the PSF-ToolBus software engineering environment shown below.

The PSF-ToolBus SE environment
We see that the components for the ToolBus application are generated, so we only have to specify the components on the architecture level and give proper mappings and constraints (the tools) to obtain a ToolBus application specification.
Also shown here is a generation step of a ToolBus-script from the components of the ToolBus application specification. This step is still to be made by hand since PSF specifications use recursion for setting the state of a process, and the ToolBus cannot handle recursive processes. ToolBus scripts use iteration with variable assignment for keeping track of the state of a process.