在计算机科学中,抽象状态机(ASM)是对任意数据结构(数学逻辑层面的结构,包括一个非空数据集合,以及集合上的一些函数(操作)和数据关系)的状态进行操作的状态机。
ASM方法是一种实用的、有科学依据的系统工程方法,为系统开发的两端搭起一座桥梁:
该方法基于三个基本概念:
在ASM的最初概念中,单个代理按照一系列步骤执行程序,并可能会与其环境进行交互。这个概念被扩展到了分布式计算领域,其间多个代理可同时执行它们的程序。
由于ASM可在任意抽象层次上对算法建模,因此它们可以提供硬件或软件设计的高级、低级和中级视图。ASM规范通常由一系列的ASM模型组成,从抽象的基础模型开始,通过持续的求精或提炼进行更深层次的细化。
根据这三个概念的算法和数学属性,可以使用任何形式严谨的验证(通过推理)或校验(通过实验、运行测试模型)来分析ASM模型及其感兴趣的属性。
ASM的概念来源于尤里·古列维奇(Yuri Gurevich),他在20世纪80年代中期首次提出这一概念,作为对图灵理论的一种改进,即每种算法都由适当的图灵机进行模拟。他表述了ASM理论:每一个算法,无论多抽象,都可由一个合适的抽象状态机(ASM)逐步模拟出来。2000年,古列维奇将顺序算法的概念进行了公理化,并证明了该算法的ASM理论。大致上,公理如下所述:状态是结构,状态转移只涉及到状态的一个有界部分,并且在结构同质情况下,一切都是不变的。(结构可以被看作是代数,这就解释了抽象自动机(ASM)的最初名称是演化代数)顺序算法的公理化和表达已经扩展到并行和交互式算法。
在20世纪90年代,通过社区的努力,ASM方法被开发出来,人们把ASM用作计算机硬件和软件的正式规范和分析(验证和校验)。编程语言(包括Prolog、C和Java)和设计语言(UML和SDL)的ASM综合规范也已经开发出来了。详细的历史记录可以在AsmBook(第9章)或本文(参考文献)中找到。
很多用于ASM执行和分析的软件工具也已面世。
(按2000年以来年代顺序)
暂无