本节描述了规约可以是描述系统及其环境的公式,引入了封闭式系统规约和开放式系统规约的概念。
我在这一章的开头写过,我们将定义一个 缓冲区。 模块的公式 实际上定义了一组行为,每个行为都代表了一组在 和 通道上发送和接收的操作。发送方执行对 通道的发送操作,接收方执行对 通道的接收操作。发送方和接收方不是 缓冲区的一部分,它们形成了系统的“环境”。
我们的规约描述了一个由
缓冲区及其环境组成的系统。满足模块
规约公式的行为,表征了系统及其环境正确运行的过程。在理解规约时,明确指出哪些步骤是系统步骤,哪些是环境步骤通常是很有帮助的。我们可以通过定义下一个状态动作来说明:
这里
表示系统步骤,
表示环境步骤。对于
,我们有如下定义:
虽然这种定义下一状态动作的方法可以提示读者阅读规约,但却没有什么形式上的意义,该 规约实际上还是等价于 ,改变我们组织 的方式并不会改变它的含义。如果一个行为不满足 ,没有任何方式可以告诉我们到底是系统还是它的环境的原因。
像 这样描述了系统及其环境的正确行为的公式,我们称为封闭系统或完整系统规约。开放系统规约只描述系统的正确行为。如果行为能够表征系统正确运行的过程,或者只是它的环境出了问题,才导致不能正确地运行,则该行为满足开放系统规约。第10.7节解释如何编写开放系统规约。
开放系统规约在理论上更令人满意,不过封闭式系统规约更容易编写,并且它们背后的数学更简单,所以我们更习惯于书写封闭系统的规约。通常很容易将封闭系统规约转换为开放系统规约,不过在实践中,很少有理由这样做。