In this chapter, we have looked at several different formal specification techniques, and tried to see how they might be applied to distributed systems. It is early days for the use of such systems in the large scale, but methodologies and languages such as Z hold out a strong promise, especially when coupled with object oriented program design methodologies.