Specification and validation of communications in client/server models

Errors such as deadlock and race conditions are very common yet extremely difficult to debug in the communications design of client/server models based on remote procedure calls and multi-threading. This paper presents an effective approach to detecting these errors. It shows how to apply the specification and validation techniques used in protocol engineering to discover those errors in the early stages of a client/server software development. The work is based on the protocol specification and validation tool PROMELA/SPIN. PROMELA is extended to a new language called PROMELA-C/S for additional expressive power of specifying client/server communications. A PROMELA-C/S translator is built to convert PROMELA-C/S to PROMELA for validation using SPIN. The paper also reports the results of some specification and validation trials using PROMELA-C/S, its translator, and SPIN.<<ETX>>