Software Engineering with PSF


To derive a Client / Server Architecture specification from an architecture specification we refine the abstract actions in the architecture specification to sequences of actions on the Client / Server Architecture 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 client and server processes.

We constrain these client and server processes with specifications of the interfaces for the clients and servers. These interfaces are generated from the client and server processes. This is possible because we make use of a pattern for the communications between the clients and the servers. Constraining can also be done automatically and results in the specification of the components for the Client / Server Architecture 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 Client / Server Architecture level design and integrating the refine and constrain steps, we get the PSF-CSA software engineering environment shown below.

The PSF - Client/Server SE environment

We see that the components for the Client / Server Architecture are generated, so we only have to specify the components on the architecture level and give proper mappings to obtain a Client / Server Architecture specification.