分享
 
 
 

AsmL: 可执行的软件规格

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

AsmL是一种以抽象状态机(Abstract State Machines, ASM)为基础的软件规格语言。它由微软研究院的软件工程基础小组开发并维护,目前的版本是AsmL2(AsmL for Microsoft.NET),此版本能够嵌入Microsoft Word 和Microsoft Visual Studio.NET中,并可在.NET环境下编译执行。你可以在以下地址找到它:http://research.microsoft.com/foundations/asml/

AsmL通过规模最小的但是完整的方法创建一个系统操作的人类可读(Human-readable)、机器可执行(Machine-executable)的模型,这种方法与任何给定的用户级别的抽象相关。这种用AsmL写成的规格被称为可执行规格(executable specification)。

可执行规格具有几个非凡的特性:

首先,AsmL模型可以作为他们所描述的系统的模拟程序来运行。这意味着开发团队甚至可以在没有写任何代码之前,就能够检查他们的设计与预期的有什么不同。然而,AsmL模型并不仅仅是个原型系统或者参考实现,因为它完整地描述了所选设计级别的细节。换句话说,一个适当构建的AsmL模型能够告诉我们,一个正确的实现必须(must)做什么,可以(may)做什么以及不能(must not)做什么。

其次,AsmL模型能够与它所描述的系统的实现并行执行,以检查实现与规格是否相符。这不但可以检查实现,同时可以保证规格及时更新。

第三,AsmL对算法测试用例以及大部分用例中的模型检查和认证有严格的要求。

如同传统的软件规格,可执行规格也描述软件组件如何工作。但与传统规格不同的是,可执行规格具有单一的、明确的含义。这个含义以抽象状态机、系统发展的数学模型、运行时状态的形势呈现。

举例来说,AsmL规格可以作为程序运行来模拟一个系统如何动作,或者检查一个实现的行为是否与规格相符。然而,与传统的程序不同,可执行规格有意保持最小规模。换句话讲,虽然他们的描述很详实,却不冗长,所有的东西都是所选的详细级别的一部分。

因此,与传统的程序不同,可执行规格用来限定它们自身的约束和行为,是系统中所有正确实现所具有的共同的约束和行为。举例来说,可执行规格并不限制操作的顺序,除非顺序具有重要的意义。而传统程序却将操作的命令序列作为实现时的关键决定。可以通过下面这个例子观之:

In-place sorting

var A = [3, 10, 5, 7, 1]

indices = {0, 1, 2, 3, 4}

Main()

step until fixpoint

choose i in indices, j in indices

where i < j and A(i) > A(j)

A(i) := A(j)

A(j) := A(i)

step

WriteLine(A) // prints [1, 3, 5, 7, 10]

这个可执行规格使用一个抽象状态机通过single-swap算法实现In-place sorting。

机器执行一系列顺序的步骤来交换A中的值。A中的元素由索引i和j表示,使得i小于j并且A(i)大于A(j)。交换持续进行,直到条件不成立,也就是说,整个序列按序排列为止。最后一步打印排列好的序列。每一步的机器状态完全由那一步时的A序列的值决定。

规格的规模是最小的。首先,choose表达式并没有说如何选择两个索引,只是限定无论两个索引如何选择,必须满足i < j并且A(i)>A(j)。因此,许多排序算法,包括快速排序和冒泡排序,都与我们的规格是一致的。其次,这个例子也没有说如何交换两个元素,而是将如何实现有序的交换留给每一个实现去决定。

总的说来,AsmL规格对于团队的设计决策交流来说是一种理想的方式。同时,程序经理、开发人员以及测试人员都可以使用AsmL规格来达到对设计的单一而统一的理解。

本文旨在引介AsmL。由于作者也刚刚接触AsmL不久,文中的错误与疏漏之处在所难免。如遇不明之处,相信能够从微软研究院的相关网站上招到答案。欲对AsmL有更深入地了解,可以参考《AsmL: The Abstract State Machine Language》,这篇文章同样可以在微软研究院的网站上找到。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有