Skip to Main Content
The order of method calls in a program can present subtle problems in ensuring the program's correctness. Some of the problems have been known under different names in the open literature. These include protocols, synchronisation, re-entrance, mandatory calls, and the indirect invariant effect. However, all these problems relate to the temporal ordering of method calls. In essence, the orderings constrain invocations of methods that share program state or otherwise need to cooperate. This paper proposes taxonomy of call ordering problems and their proposed solutions. The taxonomy classifies the problems by showing their common root and a few distinguishing properties. The paper also sketches the key features of a practical unifying solution to these call ordering problems.