Issues in the Refinement of Distributed Programs
Developing correct computer programs is a notoriously difficult task, which has attracted a significant intellectual effort over the past decades. One attractive methodology that has been proposed to tackle this problem consists of systems for program refinement, in which a calculus is given for transforming, often in a top-down manner, the specification of a computational task into a program implementing this specification (excellent introductions to refinement are Back and von Wright 1998 and Morgan 1994). Calculi for the refinement of sequential programs are by now a mature and well-established field. In this abstract, I wish to discuss some issues that arise when we try to develop a refinement calculus for distributed programs. This discussion is based on a joint project with Ron van der Meyden and Kai Engelhardt of the University of New South Wales, Sydney, Australia. Some insight into the technical aspects of the approach we are pursuing can be found in Engelhardt et al. 1998 and 2000 and in van der Meyden and Moses 2000.1 An obvious point to start a discussion of refinement for distributed programs is the sequential case. The subtlety and inherent complexity of distributed systems make the task of refinement for distributed programs much harder. The purpose of this abstract is to discuss, in an informal fashion, some of the distinctive issues that seem to play a role in this effort. The hope is that a discussion of these issues may contribute to other work on formal and algorithmic approaches to distributed computation.
Unable to display preview. Download preview PDF.
- Attiya, C., Welch, J.L.: Distributed Computing: Fundamentals, Simulations and Advanced Topics. McGraw-Hill (1998)Google Scholar
- Back, R. J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Springer Verlag Graduate Texts in Comp. Sci. (1998)Google Scholar
- Chou, C., Gafni, E.: Understanding and verifying distributed algorithms using stratified decomposition. Proc. 7th ACM PODC (1988) 44–65Google Scholar
- Dijkstra, E.W.: A Discipline of Programming. Prentice Hall (1976)Google Scholar
- Engelhardt, K., van der Meyden, R., and Moses, Y.: Knowledge and the logic of local propositions, Proc. 7th Conf. on Theor. Aspects of Reasoning about Knowledge (TARK), Gilboa, T. Ed., Morgan Kaufmann (1998) 29–42Google Scholar
- Engelhardt, K., van der Meyden, R., and Moses, Y.: A program refinement framework supporting reasoning about knowledge an time. Foundations of Software Science and Computations Structures, Tjuryn J. Ed., Springer Verlag (2000) 114–129Google Scholar
- Havelund, K., Larsen, K.G.: The fork calculus. Proc. 20th ICALP, LNCS 700 (1993) 544–557Google Scholar
- Koo, R., Toueg, S.: Effects of message loss on termination of distributed protocols. Inf. Proc, Letters, 27 (1988) 181–188Google Scholar
- Lynch, N.A.: Distributed Algorithms, Morgan Kaufmann Publishers (1996)Google Scholar
- van der Meyden, R., Moses, Y.: On refinement and temporal annotations, this volume.Google Scholar
- Morgan, C.: Programming from Specifications-2nd ed. Prentice Hall (1994)Google Scholar
- Zweirs, J., Janssen, W.: Partial-order based design of concurrent systems. Proc. REX Symp. “ A decade of concurrency”, J. de Bakker, W. P. de Roever, G. Rozenberg eds., LNCS 803 (1994) 622–684Google Scholar