CSDN博客

img sam1111

AsmL实例研究(二)

发表于2003/5/9 20:00:00  1238人阅读

分类: 软件工程

透过上面这个例子,我们可以了解到一些用AsmL描述的可执行规格的基本信息。整体结构上,可执行规格与传统的软件规格并没有太大不同。它将对软件逻辑的描述,用AsmL代码的形式,以特殊的符号(这里是AsmL)标记之后,夹杂在文字说明之间,以便使阅读它的人能够轻易对模型及其实现产生一定的认识。可执行规格的优势正在于对软件逻辑的描述上,别忘了AsmL的目标是产生“人类可读(Human-readable),机器可执行(Machine-executable)”的模型。

 

传统的设计规格一般是在文字描述的过程中,辅以伪代码来描述某段程序的逻辑。因此Team中需要有个约定,在设计规格中采用何种格式的伪码,以便大家都能够看得懂。但是这样的约定将难于使Team之外的人能够轻易理解。在可执行规格中,AsmL充当了这种伪码的角色,甚至比伪码的效果更好。由于AsmL有一套类似编程语言的定义良好的规范,因此它很容易成为对模型的理解的基础。而且由于AsmL并非Team的专属物,因此以它来描述的规格很容易被Team之外的人所理解,只要他掌握了AsmL

 

AsmL相比于伪代码真正的强悍之处在于,经过AsmL建模所得到的规格,比如前面这个DiningPhilosophers例子,已经是一个可以执行的模拟程序了。你完全可以执行它,来检查设计是否完备,是否与预期的相符。在AsmL2.1.5.8中,即使是Word文档,也是可以通过AsmLWord插件编译执行的。当你编译它时,以“AsmL”标记起来的文字被认为是AsmL代码,它们被从文档中剥离,然后经编译器编译成可执行的程序。同样的,AsmLWord插件可以将Word版本的规格格式化成Xml格式,这样你就可以将它添加到Visual Stadio.NET的工程中。

 

AsmL2.1.5.8与其它的.NET语言之间也具有很好的交互性。看看前面的例子,你会注意到,前面的规格中缺少程序入口函数Main。正如你想象的,前面的规格是不能执行的。它可以被编译成dll,从而被其他的项目引用。事实上,例子DiningPhilosophers是个WinForm程序,在这个例子的Main Form中引用了前面定义的Table类。还记得[EntryPoint] 这个attribute吗?是的,用它标记过的方法是能够在C#中调用的。在Main Form中,Table的这些方法被调用,来反映程序的执行情况。不妨试试这个例子程序,它可是个挺有意思的小程序呢!

 

本文旨在引介AsmL。由于作者也刚刚接触AsmL不久,文中的错误与疏漏之处在所难免。如遇不明之处,相信能够从微软研究院的相关网站上找到答案。如果您还不清楚AsmL是什么,您可以参考作者之前的一篇文章《AsmL:可执行的软件规格》

0 0

相关博文

我的热门文章

img
取 消
img