Distributed software is very tricky to implement correctly as some errors only occur in peculiar situations. For such errors testing is not effective. Mathematically proving correctness is hard and time consuming, and therefore, it is rarely done. Fortunately, there is a technique in between, namely model checking, that, if applied with skill, is both efficient and able to find rare errors. In this tutorial we show how to create behavioural models of parallel software, how to specify requirements using modal formulas, and how to verify these. For that we use the mCRL2 language and toolset (https://www.mcrl2.org/). We discuss the design of an evolution of well-known mutual exclusion protocols, and how model checking not only provides insight in their behaviour and correctness, but also guides their design.
翻译:由于某些错误只在特殊情况下才会发生,分发的软件很难正确执行。 对于此类错误测试来说,这种错误检验是无效的。 数学证明正确性既难又费时,因此很少做。 幸运的是,在两种方法之间有一种技术,即模型检查,如果用技能来应用,既有效又能找到罕见的错误。 在这个指导性文件中,我们展示了如何创建平行软件的行为模型,如何使用模式公式来指定要求,以及如何核实这些要求。 因为使用 mCRL2 语言和工具( https://www.mcrl2.org/) 。 我们讨论了众所周知的相互排除协议的演变, 以及模式检查如何不仅提供其行为和正确性方面的洞察力, 而且还指导其设计。