System Models

Client / Server Architecture Specification

A specification of a client / server architectures consists of specifications for the processes that act as clients and servers, and of specifications for the interfaces of the clients to the servers and vice versa. The purpose of the interfaces is to hide the communication details from the processes that implement the clients and servers. A request from the client can then be specified as a (remote) function / procedure call.

There are three sets of primitives, one for communication between a client and the clients interface, one for communication between a server and the servers interface, and one for communication between the interface of the clients and servers. The first consists of

    c-snd-call(server, service)
    c-rec-call(client, server, service)
    c-snd-return(server, client, result)
    c-rec-return(result)
The second set consists of
    s-snd-call(server, service)
    s-rec-call(service)
    s-snd-return(result)
    s-rec-return(server, result)
And the third set of
    cs-snd-request(client, server, service)
    cs-rec-request(client, server, service)
    cs-snd-result(server, client, result)
    cs-rec-result(server, client, result)

In the following table the primitives and the communications between them are presented. A vertical bar indicates communication between the primitives on the left and right side.
ClientServer
processInterfaceInterfaceprocess
c-snd-callc-rec-callcs-snd-requestcs-rec-requests-snd-calls-rec-call
c-rec-returnc-snd-returncs-rec-resultcs-snd-results-rec-returns-snd-return

A client can have several interfaces to servers. Each interface is an instance of the parameterized client interface, specified as follows.

    C-I(client, server) =
	(
	    sum(s in SERVICE,
		c-rec-call(client, server, s) .
		cs-snd-request(client, server, s)
	    ) .
	    sum(r in RESULT,
		cs-rec-result(server, client, r) .
		c-snd-return(server, client, r)
	    )
	) * delta
A server interface is an instance of the parameterized server interface, specified as follows. as a parameter.
    S-I(server) =
	sum(c in ID,
	    sum(s in SERVICE,
		cs-rec-request(c, server, s)
		c-snd-call(server, s) .
	    ) .
	    sum(r in RESULT,
		c-rec-return(server, r)
		cs-snd-result(server, c, r) .
	    )
	) * delta

Example